Validieren der mysql-Abfrage für mehrere Dateien

Mein Szenario ist so:

<input type="file" name="image[]" />
<input type="file" name="image[]" />
<input type="file" name="image[]" />
<input type="file" name="image[]" />

Meine Datenbankfeldtabelle ist:

ID = 1
image1 = image1.jpg
image2 = image2.jpg
image3 = image3.jpg
image4 = image4.jpg

Nehmen wir an, die Zeile id = 1 hat bereits Werte eingefügt, und wenn der Benutzer image1 und image4 aktualisieren möchte, werden sie ihre gewünschte Bilddatei durchsuchen und auswählen und sie lassen image2 und image3 leer.

Hier ist das Konzept nach der Ausführung von MySQL query:

ID = 1
image1 = newimage1.jpg
image2 = image2.jpg
image3 = image3.jpg
image4 = newimage4.jpg

Wie mache ich die validierende Abfrage?

Momentan ist mein Code wie folgt und ich habe keine Ahnung, wie ich von hier fortfahren soll, da ich noch neu in PHP/MySQL bin.

foreach ($_FILES['product_image']['name'] as $key => $value) {
if(!empty($value)) {
                `$upt=mysql_query("update products_list set` `image1='$pic1',image2='$pic2',image3='$pic3',image4='$pic4' where id='$id'");`
}
}

Hoffe, das ist euch klar. Danke im Voraus. =)

0
hinzugefügt
Ansichten: 1

2 Antworten

Sie können einen Zähler verwenden, um das richtige Feld zu aktualisieren:

 foreach ($_FILES['product_image']['name'] as $key => $value) {
   if(!empty($value)) {
       //field names starts from 1
        $field = 'image'.($key+1);
        mysql_query("UPDATE product_list ".
                    "SET $field = '$value' ".
                    "WHERE id = $id");
   }
 }

Das würde natürlich bedeuten, dass Sie denselben Datensatz bis zu vier Mal aktualisieren müssen, je nachdem, was von Ihrem Formular gesendet wird. Außerdem sollten Sie die Benutzereingabe mit etwas wie mysql_escape_string() umgehen.

1
hinzugefügt
Danke für die Hilfe. Wenn ich es richtig verstehe, aktualisiert SET $ Feld Felder abhängig davon, wie viele Eingaben ich habe? Wenn ich 4 Datei-Input habe, wird es so-update in 4 Felder von nur 1 Anweisung? Und ist es möglich 1 zu $ ​​key hinzuzufügen? Weil das Array von 0 an beginnt, richtig? Oder der einzige Weg ist, mein Datenbankfeld zu bearbeiten?
hinzugefügt der Autor Dr3am3rz, Quelle
Jedenfalls habe ich es ausprobiert und es funktioniert !! Vielen Dank für die Hilfe, seit 2 Tagen hier feststecken. = (Aber immer noch herauszufinden, wie man den Wert des $ key-Arrays hinzufügt.
hinzugefügt der Autor Dr3am3rz, Quelle
Hey vielen Dank !! Ich habe if ($ key <4) {$ key ++;} gerade jetzt benutzt .. lol .. Aber ich werde deine Methode verwenden. Danke vielmals!! = D
hinzugefügt der Autor Dr3am3rz, Quelle
Ich habe es schon markiert, aber ich kann nicht wählen, weil es heißt, ich brauche 15 Wiederholungen. = (
hinzugefügt der Autor Dr3am3rz, Quelle
@ user1462863 - Ich habe meine Antwort aktualisiert.
hinzugefügt der Autor Cyclonecode, Quelle
@ user1462863 - Wenn diese Antwort Ihnen hilft, Upvoting zu erwägen und als korrekt zu markieren.
hinzugefügt der Autor Cyclonecode, Quelle

Ich denke, Sie wären besser dran, wenn Sie product_images -Tabelle haben. Auf diese Weise könnte ein Produkt 1 oder viele Bilder haben. Ihr Formular könnte gleich bleiben, aber Sie würden einfach die products.id mit jedem Datensatz in Ihrer neuen Abbildungs-Tabelle verknüpfen.

Wenn Sie ein neues Produkt hinzufügen, erstellen Sie das Produkt und fügen dann für jedes Bild, das sie in das Formular hochgeladen haben, einen Bildeintrag ein.

Wenn Sie ein Produkt bearbeiten, können Sie problemlos Fotos löschen oder neue hinzufügen.

// remove an image
mysql_query("delete from product_images where product_id=$pid and id=$iid");

// add a new image
mysql_query("insert into product_images (product_id, image) values ($pid, '$filename')");

Hinweis: Diese Abfragen sollten nicht direkt verwendet werden. Stellen Sie sicher, dass Sie angemessene Vorkehrungen treffen, um eine SQL-Injektion zu verhindern.

0
hinzugefügt
Danke für die Hilfe. Ich verstehe es immer noch nicht, weil ich neben den Bildern noch ein anderes Eingabefeld habe.
hinzugefügt der Autor Dr3am3rz, Quelle