Anzeige:
Ergebnis 1 bis 8 von 8

Thema: SQL-Query dynamisch, per for-Schleife, erzeugen

  1. #1
    Registrierter Benutzer
    Registriert seit
    11.10.2005
    Beiträge
    45

    SQL-Query dynamisch, per for-Schleife, erzeugen

    Hallo,


    ich habe mir dynamisch mit der folgenden Funktion ein Formularfeld generiert:

    PHP-Code:
    function formularmatrixab($am,$an,$mat,$var) {
     echo 
    "<br><br> Matrix " $mat " :" $am " Zeilen und " $an " Spalten <br>";
     for (
    $i=1$i<=$am$i++) {
       for (
    $j=1$j<=$an$j++) {
                  echo 
    "<INPUT TYPE=\"text\" NAME=\"".$var.$i.$j."\" SIZE=2";
                  if(isset(
    $_POST[$var.$i.$j]))
                  echo 
    " value=\"".$_POST[$var.$i.$j] ."\"";
                  echo 
    ">"
              if (
    $j==$an) {
                echo 
    "<br>";
                 }
          } 
      }


    Die Daten aus dem dynamisch generierten Formular möchte ich jetzt z.b. als

    PHP-Code:

    $sql
    ="Insert into tabelle (spaltenname 1 .. spaltenname n)
             Values  ('A11' ..... 'A1n'),
                        ('A21' ..... 'A2n'), 
                        .. ,              
                        ('Am1 ... 'Amn' );" 
    (Für $am=m, $an=n,$var=A)

    dynamisch in die Tabelle der Datenbank einfügen. Kann ich das per for-Schleife machen oder wie geht das?


    Gruß,
    macbest
    Geändert von macbest (27-08-2008 um 20:38 Uhr) Grund: Optik

  2. #2
    Registrierter Benutzer Avatar von BLUESCREEN3D
    Registriert seit
    08.11.2002
    Beiträge
    665
    Das geht genau so wie du das Formular auch generierst: Mit 2 verschachtelten for-Schleifen.
    Probier es einfach aus und gib den Query erstmal nur mit echo aus, anstatt ihn auszuführen - dann siehst du, ob alles stimmt.

    Übrigens solltest du in formularmatrixab() die Zeile mit value= ändern:
    Code:
    echo " value=\"".htmlspecialchars($_POST[$var.$i.$j])."\"";
    Könnte ja sein, dass jemand Text eingegeben hat, der ein " enthält.

  3. #3
    Registrierter Benutzer
    Registriert seit
    11.10.2005
    Beiträge
    45
    Hallo,

    wie würde denn sowas mit dem einfachsten Beispiel:

    PHP-Code:
    <?php 
    $A
    =array(0,1,2);

    for(
    $i=1;$i<=3;$i++) 
      {
         
    //Was kommt hier rein?
      
    }
    ?>
    aussehen?


    Ich bekomms nicht auf die Reihe. Ich habe keine Ahnung wie das gehen soll.

    Gruß,
    Matthias

  4. #4
    Registrierter Benutzer Avatar von BLUESCREEN3D
    Registriert seit
    08.11.2002
    Beiträge
    665
    Zum Beispiel: Das ist doch nur eine Schleife und die reicht nicht für eine Matrix (zweidimensional!) .

    Guck dir mal die Ausgabe hiervon an und versuch, sie so zu verändern, dass daraus dein SQL-Query wird:
    PHP-Code:
    for ($i 1$i 3$i++)
        {
        for (
    $j 1$j 6$j++)
            {
            echo 
    "A$i$j<br>";
            }
        } 

  5. #5
    Registrierter Benutzer
    Registriert seit
    11.10.2005
    Beiträge
    45
    Hallo,

    also ich glaube, dass es so:

    PHP-Code:
    for ($i 1$i 3$i++)
        {
        for (
    $j 1$j 6$j++)
            {
            
    $t=$t.$i.$j;
            }
        }
    echo 
    "t=" $t
    funktioniert.


    Gruß,
    macbest

  6. #6
    Registrierter Benutzer Avatar von BLUESCREEN3D
    Registriert seit
    08.11.2002
    Beiträge
    665
    Eigentlich ging es vor allem um das, was da noch dazu sollte, damit am Ende sowas rauskommt: ('A11' ..... 'A1n'), ...

    Wenn du einfach nur die Zahlen hintereinander stehen hast, kannst du das ja nicht als Query nutzen.

  7. #7
    Registrierter Benutzer
    Registriert seit
    11.10.2005
    Beiträge
    45
    Kann mir nicht vieleicht jemand den Query nennen?

  8. #8
    Registrierter Benutzer
    Registriert seit
    24.06.2004
    Beiträge
    101
    Warum verwendest du keine Prepared Statements sondern verwendest einen derartig miesen Spaghetti-Code?

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •