mehrdimensionales array in Datenbank

Dieses Thema im Forum "Webentwicklung" wurde erstellt von HPLT, 9. August 2007 .

  1. 9. August 2007
    moin leutz ich komm grad nciht s richtig weiter

    Ich habe ein formular in dem man name vorname eintragen kann.
    es werden dann soviele inputs ausgeben durch eine whileschleife , wieviele ind er datenbank stehen.
    so und will ich den inputs in ein großes mehrdimensionales array speichern

    z.B.
    Code:
    $i = 1; 
    while (......)
    {
    //daten aus der datenbank auslesen
    <input type='text' name = 'daten[$i][nachname]' value='$nachname><input type='text' name= 'daten[$i][vorname]' value='$vorname'><input type = hidden' name='daten[$i][id]' value='$id'>
    }
    
    nur wie lese ich das dann anch dem versenden aus und trage die daten nach und nach in die datenbank ein?
    Also dass dann daten[1][vorname] und daten[1][nachname] in eine zeile eingetragen werden bzw geupdatet werden. und so weiter?

    hab schon foreach und alles durch klappt aber nie.
     
  2. 9. August 2007
    AW: mehrdimensionales array in Datenbank

    naja, du definierst ja nen Array in deinem Form. Die Frage ist, musst du wirklich $i als Counter in der Form benutzen? Würde daten[]['vorname'] nicht reichen?

    Egal, in PHP kannst du das ganze via foreach($_POST['daten'][] AS $data) auslesen. In $data ist dann alles für jede $i gespeichert.
     
  3. 9. August 2007
    AW: mehrdimensionales array in Datenbank

    ok danke dann hab cih die foreach schleife immer falsche definiert

    weil nachm posten

    Code:
    
    $dat2 = strip_tags($_POST['daten']);
    
    foreach ($dat2 as $value)
    ....
    
    
    hatte ich dann immer^^ mla versuchen
    ob es so geht

    thx
    bw bekommste
     
  4. 9. August 2007
    AW: mehrdimensionales array in Datenbank

    lass dir mal mit print_r den inhalt des $_POST arrays anzeigen mb erkennst du wo der fehler liegt

    finds meist recht hilfreich
     
  5. 9. August 2007
    AW: mehrdimensionales array in Datenbank

    Ja, wenn ich immer stecken bleibe, ist print_r oder auch var_dump der Retter in der Not
     
  6. 9. August 2007
    AW: mehrdimensionales array in Datenbank

    jo naja also

    der code für die inputs ist nun der hier
    Code:
    while ($ks = mysql_fetch_array($haha))
     {
    ...//sql abfrage der daten
     <tr>
     <td>Nachname</td><td>Vorname</td><td>Art</td><TD>Exchange</tD>
     </tr>
     <tr>
     <td><input type='text' name='daten[$i][nachname]' value='$nname'></td>
     <td><input type='text' name='daten[$i][vorname]' value='$vname'></td>
     <input type='hidden' name='daten[$i][index]' value='$rd'>
     </tr>";
     $i++;
     
     }
     }
    
    das $i als laufvariable dient dazu, dass das array so gespeichert wird Daten ( [1] (Nachname => horst; Vorname => Dieter)).

    weil vorname und nacname müssen den gleichen index haben oder? damit sie dann beim forech beide aufgerufen werden und in die gleiche datenbankzeile geupdatet werden!?.

    jo und meine foreach
    Code:
    if (isset($_POST['s3']))
     {
     foreach ($_POST['daten'][] as $value)
     {
     $nach = $value['nachname'];
     $vor = $value['vorname'];
     $in = $value['index'];
     mysql_query("update utbl set nachname = '$nach', vorname = '$vor' where id = '$in' Limit 1") or die ($mysql_error());
     } 
     }
    
    es kommt aber immer der fehler
    "Warning: Invalid argument supplied for foreach()... on line 76"

    tjo und da leigt mein prob^^ im array sind alle datensätze vorhanden
     
  7. 9. August 2007
    AW: mehrdimensionales array in Datenbank

    ich benutze für so was phpedit
    da kannst du dein php script ja debuggen und so zu jederzeit schauen welchen wert welche variable/ array etc. haben
    und so fehler recht schnell finden
     
  8. 9. August 2007
    AW: mehrdimensionales array in Datenbank

    jo aber wie gesagt im array scheint alles i zu sein : Array ( [1] => Array ( [nachname] => ghjgk [vorname] => hgjkgh ) [2] => )

    kp weiß halt nur ncih wie die foreach aussehen müsste -.- .
     
  9. 9. August 2007
    AW: mehrdimensionales array in Datenbank

    Ist nicht getestet, sollte aber gehen.
    PHP:
    <? PHP
    if(isset( $_POST [ 'action' ])) {
       foreach(
    $_POST [ 'testfeld' ] AS  $row ) {
          
    $i ++;
          echo 
    'Das Feld ' . $i . ' hast den Wert: "' . $row [ 'vorname' ]. '"<br />' ;
       }
    }
    ?>
    <form action="testen.php" method="post">
       <input type="text" name="testfeld[][vorname]" value="Hans" />
       <input type="text" name="testfeld[][vorname]" value="Peter" />
       <input type="text" name="testfeld[][vorname]" value="Fred" />
       <input type="text" name="testfeld[][vorname]" value="The Quest" />
       <input type="text" name="testfeld[][vorname]" value="RaidRush" />
       <input type="text" name="testfeld[][vorname]" value="PARRHESIA!" />
       <input type="submit" name="action" value="Go" />
    </form>
     
  10. 9. August 2007
    naja ich will das ja in eine andere form bekommen.
    da gibts ja nicht nur vorname sondern auch nachname und die sollen beide im array den gleichen index haben, weil sie in die gleiche zeile geschrieben werdne in er db

    jo das klappt auch wenn ich nur das feld vorname haben

    aber es soll ja noch nachname etc. hinzukommen

    und die der nachname und vorname müssen doch den gleichen index im array haben oder?

    wenn ich jetzt daten[][vorname] daten[][nachname] habe dann sieht das dann aber so aus
    daten[1][vorname] daten[2][nachname] aber müssten doch dan beide index 1 haben damit das funzt oder?

    EDIT: sry doppelpost der obere beitrag wurde bei mir komischerweise trotz aktualisierung nciht angezeigt -.-

    EDIT2: habs geschafft danke euch allen^^ versuch alle zubewerten... Fehler war bei foreach - schleife da hab cih immer $_POST['daten'][] geschrieben und die hinteren [] hät ich mir sparen können^^
     
  11. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.