0

私はPHPにかなり慣れていないので、親切にしてください:)。私は、クライアントがページに製品を追加したり、製品を削除および編集したりするためのシステムに取り組んでいます。現在、ポジショニングに取り組んでいるので、mysqlエントリ「position」を作成しました。

私のテーブルには、自動インクリメントされたID、タイトル、説明、および位置があります。

ポジショニングを最新のアップロードに設定できました。たとえば、エントリが3つある場合、最新のアップロードで位置4が取得されます。アップロードスクリプトは次のとおりです。

//UPLOAD SCRIPT

    if (isset($_POST['upload'])) {
        $dirupload = "../images/";
        $dirupload = $dirupload . basename( $_FILES['image-upload']['name']);
        $titleupload = $_POST['title-upload'];
        $descriptionupload = $_POST['desc-upload'];
        $imageupload = ($_FILES['image-upload']['name']);
        $uploadedfileupload = $_FILES['image-upload']['tmp_name'];
        $uploadedfiletypeupload = $_FILES['image-upload']['type']; 



        $query="SELECT * FROM promotions ORDER BY position";
        $result=mysql_query($query);
        $num=mysql_num_rows($result);
        $add=$num+1;


        if (!($uploadedfiletypeupload =="image/pjpeg" OR $uploadedfiletypeupload =="image/jpeg" OR $uploadedfiletypeupload =="image/jpg")){
            echo "L'image doit être en .jpg ou .jpeg";
        }else if (move_uploaded_file($_FILES['image-upload']['tmp_name'], $dirupload)){    
            $sql="INSERT INTO promotions (title, description, position) VALUES ('$titleupload','$descriptionupload','$add')";
            if (!mysql_query($sql,$con)){
                die('Error: ' . mysql_error());
            }



            $newnameupload = "../images/" . mysql_insert_id() . ".jpg";
            rename ("../images/$imageupload","$newnameupload");    
            $orig_imageupload = imagecreatefromjpeg("../image/$newnameupload");
            $sm_imageupload = imagecreatetruecolor(96,96);
            imagecopyresampled($sm_imageupload,$orig_imageupload,0,0,0,0,96,96,imagesx($orig_imageupload),imagesy($orig_imageupload));
            imagejpeg($sm_imageupload, $newnameupload, 100);

        }else{
            echo "Problem";
        }
    }

今私の問題は、位置を変更するための「上」と「下」のエントリにあります。現在の位置に1を追加または減算することができます。問題は、次または前の位置と反対のことを行う必要があることです。これが「アップ」スクリプト:

if (isset ($_POST['up'])){
        $id=$_POST['id'];
        $position=$_POST['position'];
        $newPos=$position-1;

        mysql_query("UPDATE promotions SET position='$newPos' WHERE id='$id'");


    }

したがって、前の行を見つけて1を追加する必要があります。たとえば、最初に配置したい2番目のエントリがある場合は、[上へ]ボタンをクリックすると、上に移動します(これは機能します)が、古いものを見つける必要があります。最初の位置に移動し、一度下に移動します(これが問題です)。

うまくいけば、私は十分に明確でした、そしてどんな助けにも前もって感謝します!

4

1 に答える 1

0

これは、現在の製品を更新する前に配置すると機能するはずだと思います

mysql_query("UPDATE promotions SET position='$position' WHERE position='$newPos'");
于 2012-08-23T10:16:57.930 に答える