Array auf die SQL-Daten-Bank hochladen


CreativPur

Erfahrenes Mitglied
Hi,

ich möchte gern ein array auf die Datenbank hochladen.
Leider funktioniert mein Script nicht..

Es soll ein bestimmter Datensatz mit Hand einer Artikelnummer aktualisiert werden..

Das Form
PHP:
<form action="abverkauf_zusatzbilder_hochladen.php?zusatzbilder_hinzufuegen" method="post">
<input type="" name="abverkauf_artikel_zusatzbilder[]" value="' . $firmenname ._. $dateiname . '">
<input type="" name="abverkauf_artikelnummer"  value="'.$_POST['abverkauf_artikelnummer'].'">
<input type="submit" value="speichern"></p>
</form>';
Das Update
PHP:
$abverkauf_artikelnummer = $_POST['abverkauf_artikelnummer'];
if(isset($_GET['zusatzbilder_hinzufuegen'])) {
$error = false;
for ($i = 0; $i < count($_POST['abverkauf_artikel_zusatzbilder']); $i++) {     
$abverkauf_artikel_zusatzbilder = $_POST['abverkauf_artikel_zusatzbilder'][$i];   
    
$statement = $pdo->prepare("UPDATE abverkauf SET abverkauf_artikel_zusatzbilder = ? WHERE abverkauf_artikelnummer = ?");
$statement->execute(array($abverkauf_artikel_zusatzbilder, $abverkauf_artikelnummer));
}
}
Worin liegt der Fehler ?
 

Yaslaw

n/a
Moderator
1) Fehlende Formatierung. Ich sehe nicht was dein Code machen soll.
2) Eine Datenbank kennt kein Array. Wie soll dein Array gespeichert werden.
3) Was funktioniert nicht? Fehlermeldung?
 

EuroCent

Erfahrenes Mitglied
Wenn Ich das richtig sehen, musst du es als JSON hochladen.
Denn so wie du es speichern willst würde nur in dem Feld "Array" stehen.

Deine Daten wäre damit nicht lesbar.

So ungefähr sollte es funktionieren.
PHP:
<?php
$abverkauf_artikelnummer = $_POST['abverkauf_artikelnummer'];
$testArray = array();

if(isset($_GET['zusatzbilder_hinzufuegen'])) {
    $error = false;
    for ($i = 0; $i < count($_POST['abverkauf_artikel_zusatzbilder']); $i++) {    
        $abverkauf_artikel_zusatzbilder = $_POST['abverkauf_artikel_zusatzbilder'][$i];
        $testArray = array($abverkauf_artikel_zusatzbilder, $abverkauf_artikelnummer);

        $statement = $pdo->prepare("UPDATE abverkauf SET abverkauf_artikel_zusatzbilder = ? WHERE abverkauf_artikelnummer = ?");
        $statement->execute(json_encode($testArray), $abverkauf_artikelnummer);
    }
}
?>
Ausgeben wieder als PHP Array:
 

CreativPur

Erfahrenes Mitglied
Sorry, ich habe mich da wirklich ein bissel Blöd ausgedrückt..

Ich habe ein upload-formular , wo ich mehrere Bilder auf einmal hochladen kann.
Diese werden auch in einen Bildordner abgelegt..

Das Update Formular gibt mit auch nachdem Upload alle Bilder aus, die erfolgreich hochgeladen wurden.
Die abverkauf_artikelnummer wird von der Vorreite als POST übernommen..

Bildschirmfoto 2020-07-03 um 13.07.22.png

Nun habe ich die Daten in einem neuen Form übernommen und möchte nun für den Artikel "05570664" die die Bilder als Array in die schon vorhandene Zeile in der Datenbank unter "abverkauf_artikel_zusatzbilder" ergänzen, bzw. updaten
 

m.scatello

Erfahrenes Mitglied

CreativPur

Erfahrenes Mitglied
OK..
Dann werde ich wohl nicht drum herum kommen, eine weitere Tabelle zu erstellen und dort mit der Artikelnummer alle Zusatzbilder-Namen zu speichern...
 

EuroCent

Erfahrenes Mitglied
OK..
Dann werde ich wohl nicht drum herum kommen, eine weitere Tabelle zu erstellen und dort mit der Artikelnummer alle Zusatzbilder-Namen zu speichern...
Schau dir mal beispielsweise Galerien an, an denen Beiträge hängen. :)

Ich würde anders dem gegenüber vorgehen:
1. Tabelle der Artikel
2. Tabelle der Artikelbilder
3. Matrix Tabelle (Artikelbilder => Artikel)

Vielleicht auch nicht die sauberste Variante aber sicherlich einfacher :D

Oder @Yaslaw wie siehst Du das? :)