datenbank mit daten aus tabelle füllen (php)



  • hey hallo,

    ich erstelle dynamisch sehr lange html-tabellen. jede zeile stellt einen artikel dar, der in der tabelle verändert werden kann (jede zeile/spalte editierbar). wenn ich nun auf "abschicken" klicke, sollen alle zeilen, die verändert wurden in eine datenbank geschrieben werden.

    ich bekomme alles hin, nur eines verstehe ich nicht:
    zeilen wie diese hier gibt es viele. wie bringe ich die denn später in die datenbank zurück?

    tabelle steckt natürlich in einer <form..
    
    <tr>
      <td>egal</td>
      <td>was</td>
      <td><input name="10001" type="text" value="123"></td>
      <td><input name="bestaetigung" type="checkbox" value="10001" checked="checked"></td>
    </tr>
    

    ich kann die felder auslesen mit

    $menge = $_POST["10001"];
    

    aber ich kann doch nicht für jede zeile eine eigene variable erstellen?! 10001 ist die artikel-nr, die verändert sich ja.

    kann ich soas wie ein array benutzen? wennn ja wie?

    danke..



  • Hallo,

    ja das kannst du mit Arrays machen...

    <input type="text" name="nummer[]">
    <!-- //---------------------------------------------// -->
    
    <?
    foreach($_POST['nummer'] as $wert) {
       echo "$wert<br />"; }
    
    // oder:
    
    for ($i = 0; $i < sizeof($_POST['nummer']); $i++) {
       echo $_POST['nummer'][$i]."<br />"; }
    ?>
    

    LG, Micha



  • hi micha,

    danke schonmal! ich bekomme es aber leider nicht ganz hin..

    die eingabefelder erzeuge ich folgendermmaßen mit php, jede $art_nr ist einzigartig und $val ist der jeweilige wert den ich editieren möchte:

    echo '<td><input name="'.$nummer[$art_nr].'" type="text" value="'.$val.'"></td>';
    

    ok, mit folgender abfrage, bekomme ich leider nichts angezeigt:

    for ($i = 0; $i < sizeof($_POST['nummer']); $i++) {
      echo $_POST['nummer'][$i]."<br />";
    }
    

    muss ich das array $nummer[] irgendwo noch initialisieren oder so?



  • Hallo,

    das Array wird im HTML erzeugt.

    Anstelle von:

    <input type="text" name="artikelnummer1" />
    <input type="text" name="bezeichner1" />
    <input type="text" name="artikelnummer2" />
    <input type="text" name="bezeichner2" />
    <input type="text" name="artikelnummer3" />
    <input type="text" name="bezeichner3" />
    

    erzeugst du ein Input-Array in Form von:

    <input type="text" name="artikelnummer[]" />
    <input type="text" name="bezeichner[]" />
    <input type="text" name="artikelnummer[]" />
    <input type="text" name="bezeichner[]" />
    <input type="text" name="artikelnummer[]" />
    <input type="text" name="bezeichner[]" />
    

    Das kannst du dann mittels Post und dem oben gezeigtem Code auslesen...
    Die ID des Artikels findet sich ja im Value des ID-Feldes wieder, und somit sind sie zugewiesen.

    for ($i = 0; $i < sizeof($_POST['nummer']); $i++) {
       echo $_POST['bezeichner'][$i]."<br />"; 
       // "UPDATE tab_artikel SET bezeichnung='".$_POST['bezeichner'][$i]."' WHERE artnr='".$_POST['nummer'][$i]."'";
    }
    

    LG, Micha



  • ahhh! alles klar, okay funktioniert soweit.. besten dank:)

    jetzt hab ich allerdings noch ein kleines anderes problem.

    in jeder zeile habe ich noch eine checkbox.

    echo '<td><input name="nummer[]" type="text"></td>';
      echo '<td><input name="bestaetigung[]" type="checkbox" value="">';
    

    ich möchte nur die zeilen in die datenbank schieben, die die checkbox aktiviert haben.
    mit deiner lösung kann ich die auslesen, aber nicht parallel, da sie unterschiedliche größen haben.

    for ($i = 0; $i < sizeof($_POST['nummer']); $i++) {
      if(isset($_POST['bestaetigung'][$i])) {
        echo $_POST['nummer'][$i]."<br />";
      }
    }
    

    in nummer[] sind alle zeilen der tabelle, wärend in bestaetigung[] NUR die aktiven übermittelt werden,, dh. in der regel deutlich weniger! daher kann ich den $i-index nicht für beide benutzen.

    ich bräuchte also etwas, dass mir die beiden variablen eindeutig verbindet.. so ne art "join" der zeilen oder so.



  • Hallo,

    dann gib doch der Checkbox als Value die Nummer - die ist ja sowieso unveränderlich - hast du gesagt!

    Und dann greif über das Value der Checkbox auf die Nummer zu!

    LG, Micha



  • alles klar, besten dank! hat geklappt, läuft jetzt wunderbar(:
    beste grüße!

    07:15:28
    

    wow..


Anmelden zum Antworten