Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Mehrere Datensätze an Datenbank übergeben

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Mehrere Datensätze an Datenbank übergeben

    Hi *,

    ich habe ein Formular, das eingegebene Daten an eine DB sendet.

    PHP-Code:
        global $wpdb;

        
    $anzahl $_POST['anzahl'];
        
    $datum $_POST['datum'];

    $wpdb->insert(
               
    'mytablename',
                array(
                    
    'anzahl' => $anzahl,
                    
    'datum' => $datum,
                ) 
    Code:
    <input name="anzahl" />
    <input name="datum" />
    <input id="submit_button" type="button" class="submit" onClick="submit_me();" />
    Das funktioniert soweit sehr gut. Nun möchte ich das Formular allerdings erweitern, um mehrere Datensätze gleichzeitig übergeben zu können.

    In meinem jugendlichen Leichtsinn war ich der Meinung, das über ein Array lösen zu können und das Array dann über eine Schleife in die Datenbank zu schreiben.

    PHP-Code:
    global $wpdb;
    $anzahl $_POST['anzahl[]'];
    $datum $_POST['datum[]'];


    for(
    $i=0$i count($anzahl); $i++){
    $wpdb->insert(
                
    'mytablename',
                array(
                    
    'anzahl[i]' => $anzahl,
                    
    'datum[i]' => $datum,
                      )
        );

    Code:
    <html>
    <input name="anzahl[]" />
    <input name="datum[]" />
    <input name="anzahl[]" />
    <input name="datum[]" />
    <input id="submit_button" type="button" class="submit" onClick="submit_me();" /> 
    </html>
    Was aber nicht funzt. Dann habe ich über assoziative Arrays gelesen. Also hab ich versucht mit damit auseinanderzusetzen und kam über Recherche hierzu:

    PHP-Code:
    global $wpdb;
    $daten $_POST['daten'];
    for(
    $i=0$i count($daten); $i++){
        
    $wpdb->insert(
             
    'mytablename',
             array(
                 
    'anzahl' => $daten[i][anzahl],
                 
    'datum' =>  $daten[i][datum]
                 )
     );


    Code:
    <input name="daten[anzahl]" /><br />
    <input name="daten[datum]" /><br />
    <input name="daten[anzahl]" /><br />
    <input name="daten[datum]" /><br />
    <input id="submit_button" type="button" class="submit" onClick="submit_me();" />
    Was aber auch nicht funzt.

    Bin ich da mit meinem Ansätzen auf dem Irrweg? Habe ich logische Fehler die ich nicht sehe?

    Für eure Tipps und Geduld vielen Dank.

  • #2
    Das ist auch beides teilweise syntaktisch nicht korrekt. Du solltest als erstes mal error_reporting aktivieren, dann gibt es zumindest mal einen Hinweis darauf, da PHP Noitces wirft.

    PHP-Code:
    $anzahl $_POST['anzahl[]']; 
    $datum $_POST['datum[]']; 
    - wenn überhaupt dann $_POST['anzahl'], ohne []

    PHP-Code:
    // ...
             
    array( 
                 
    'anzahl' => $daten[i][anzahl], 
                 
    'datum' =>  $daten[i][datum
                 ) 
    // ... 
    - Eine Variable hat immer ein $ davor, also wenn überhaupt, dann $i
    - das [anzahl] dahinter ist auch falsch

    Schau dir das Beispiel man an: http://php-de.github.io/jumpto/form/...e-elementtypen

    Und generell, mit print_r($_POST) oder var_dump($_POST) einfach mal anzeigen lassen was vom Form wie übergeben würde.

    LG
    The string "()()" is not palindrom but the String "())(" is.

    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
    PHP.de Wissenssammlung | Kein Support per PN

    Kommentar


    • #3
      PHP-Code:
      <?php

       print_r
      ($_POST);

      ?>
      <hr>
      <form method="post">
       <input type="text" name="a[]" value="a0"><input type="text" name="b[]" value="b0"><br />
       <input type="text" name="a[]" value="a1"><input type="text" name="b[]" value="b1"><br />
       <input type="text" name="a[]" value="a2"><input type="text" name="b[]" value="b2"><br />
       <input type="text" name="a[]" value="a3"><input type="text" name="b[]" value="b3"><br />
       <input type="text" name="a[]" value="a4"><input type="text" name="b[]" value="b4"><br />
       <input type="submit">
      </form>
      probier das mal aus
      .

      Kommentar


      • #4
        Zitat von hausl Beitrag anzeigen
        Ohje, jetzt bin ich verunsichert:
        Zu nennen sind hier Checkbox-Elemente und Select-Auswahlen mit einem multiple Attribut. Entscheidend sind hier die [] im name Attribut, die das Feld als Mehrfachauswahl kennzeichnen.
        Heißt das, dass dieses mutliple Attribut nur für Checkboxen und Selects gilt? Oder ist das nur beispielhaft?

        Falls es nur beispielhaft ist:

        Zitat von hausl Beitrag anzeigen
        - wenn überhaupt dann $_POST['anzahl'], ohne []
        - Eine Variable hat immer ein $ davor, also wenn überhaupt, dann $i
        - das [anzahl] dahinter ist auch falsch
        Danke für die Tipps! Habe das mal umgesetzt:

        PHP-Code:
        global $wpdb
        $anzahl $_POST['anzahl']; 
        $datum $_POST['datum']; 


        for(
        $i=0$i count($anzahl); $i++){ 
        $wpdb->insert
                    
        'mytablename'
                    array( 
                        
        'anzahl[$i]' => $anzahl
                        
        'datum[$i]' => $datum
                          ) 
            ); 

        Was aber auch nur in einem für mich kryptischen Fehler strandet
        Code:
        Warning: mysql_real_escape_string() expects parameter 1 to be string, array given in /var/www/web405/html/wp-includes/wp-db.php on line 1036
        Fehler
        var_dump liefert
        Code:
        array(2) { ["anzahl"]=> array(2) { [0]=> string(1) "2" [1]=> string(1) "3" }  ["datum"]=> array(2) { [0]=> string(10) "2015-01-18" [1]=> string(10) "2015-01-18" } }
        Sieht in meinen Anfängeraugen eigentlich gut aus. Also scheint dieses multiple Attribut doch nicht nur für Checkboxen und Selects zu gelten?

        Oder muss ich doch Variante 2 mit den assoziativen Arrays anwenden?

        Zitat von kremser Beitrag anzeigen
        probier das mal aus
        Das ergibt leider keine Ausgabe...

        Kommentar


        • #5
          Das [] im HTML geht "immer", siehe zB hier: http://php.net/manual/de/faq.html.php#faq.html.arrays

          Warning: mysql_real_escape_string() expects parameter 1 to be string, array given
          Und die Fehlermeldung sagt ja schon aus, du kannst der Funktion nur Strings und keine Arrays übergeben.

          LG
          The string "()()" is not palindrom but the String "())(" is.

          Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
          PHP.de Wissenssammlung | Kein Support per PN

          Kommentar


          • #6
            Zitat von hausl Beitrag anzeigen
            du kannst der Funktion nur Strings und keine Arrays übergeben.
            Ok ich glaube ich habs verstanden

            Das ist falsch
            PHP-Code:
            'anzahl[$i]' => $anzahl 
            und muss korrekterweise
            PHP-Code:
            'anzahl' => $anzahl[$i
            lauten.

            Vielen vielen Dank!

            Kommentar

            Lädt...
            X