Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Dynamisches Formular in die Datenbank schreiben

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Dynamisches Formular in die Datenbank schreiben

    Hallo! Ich hab mir echt schon seit Stunden einen Ast abgesucht und hab auch schon das ganz dumme Gefühl, dass ich mir gleich bei der ersten Antwort den Kopf auf den Tisch hauen werden... aber ich komm einfach nicht weiter. Wie viele andere hier...jedenfalls - ich versuche eine Umfrage zu programmieren, bei welcher der Admin zu allererst gefragt wird, wieviele Fragen er erstellen möchte.

    Die Antwort wird dann weitergegeben und dementsprechend viele Felder generiert. So weit, so gut. Jetzt bekomme ich es aber einfach nicht auf die Reihe, ALLE Felder in die Datenbank einzutragen.

    Ich weiss, dass ich es höchstwahrscheinlich mit foreach lösen , und das Formular ändern muss, aber ich bin echt am verzweifeln und steh total aufm Schlauch....Hilfe?!

    Hier der Teil, um den es sich dreht:

    PHP-Code:
    <?php  
    include('auth.php');
    include(
    "config.php");


    if (isset(
    $_GET["no"])) {

        if(
    $_POST["submit"] == "submit") {            
            
            
    $frage = array(); 
            
    $options = array(); 
            
    $punkt = array();        
           
             
        for(
    $j=1$j<=$_GET["no"]; $j++) {    
                    
                   
    $frage[] =  $_POST["frage".$i];          
                    
    $options[] = $_POST["option".$i]; 
                    
    $punkt[] =  $_POST["punkt".$i];                           
                
            
            }                      
          
            
    $options implode(";"$options); 
            
    $punkt implode(";"$punkt); 
            
    $frage implode(";"$frage);         
            
                
            
    $query "INSERT INTO umfragen (frage, options, punkte) "
            
    $query .= "VALUES ('" $frage "', '" $options "', '" $punkt "')"
            
            
            
    $do mysql_query($query$serverid);         
            
            if(
    $do) { 
             
                echo 
    'Funzt'
             
            } 
            else { 
             
                echo 
    'Shit happens'
             
            } 
         }
        
           else {

        
    ?>
        
        Neue Umfrage erstellen: <br/><br/>
        
        <?

        

    ?>
            <table>
            <form name="createform" action="<? $_SERVER['PHP_SELF'] ?>" method="post">

    <?

     for($i=1; $i<=$_GET["no"]; $i++) {
     
         ?>    

            <tr>
            <td><? echo $i  ?>. Frage:</td>
            <td><input type="text" name="frage<? $i ?>"size="50"></td>
            </tr>        
            <tr>
            <td>Optionen:</td>
            <td>Punkte:</td>        
            </tr>
              <tr><td><input type="text" name="option<? $i ?>" ></td>
            <td><input type="text" name="punkt<? $i ?>"></td></tr>
            <tr><td><input type="text" name="option<? $i ?>"></td>
            <td><input type="text" name="punkt<? $i ?>" ></td></tr> 
            <tr><td><input type="text" name="option<? $i ?>"></td>  
            <td><input type="text" name="punkt<? $i ?>" ></td></tr>        
            

    <?


        }
        
        
           

        if($_POST["submit"] != "submit") {
    ?> 

    <tr>
             <td>
                 <input type="submit" name="submit" value="submit">
             </td>
             </tr> 
         </form>
     </table> 

     
     <? } 



    }else {

        echo "<META http-equiv=refresh content='1; URL=admin.php'>";

    } ?>

    Vielen Dank schon mal für jede Antwort!

  • #2
    PHP-Code:
    <tr>
        <td><input type="text" name="option<? $i ?>" ></td> 
        <td><input type="text" name="punkt<? $i ?>"></td>
    </tr> 
    <tr>
        <td><input type="text" name="option<? $i ?>"></td> 
        <td><input type="text" name="punkt<? $i ?>" ></td>
    </tr>  
    <tr>
        <td><input type="text" name="option<? $i ?>"></td>   
        <td><input type="text" name="punkt<? $i ?>" ></td>
    </tr>
    Dir ist schon bewusst, dass sich die Werte für die Felder 'option$i' und 'punkt$i' überschreiben und du am Ende nur einen Wert pro Feldname erhältst? Die einzelnen Felder sollten demnach vielleicht noch einen zusätzlichen Counter bekommen:

    PHP-Code:
    <?php
    for ($i 0$i $anzahlDerFragen$i++) {
        echo 
    '<input name="frage' $i '" type="text" />';
        
        for (
    $ii 0$ii $anzahlDerOptions$ii++) {
            echo 
    '<input name="option' $i '_' $ii '" type="text" />';
            echo 
    '<input name="punkt' $i '_' $ii '" type="text" />';
        }
    }
    ?>

    Kommentar


    • #3
      hmm ja, danke. Das dachte ich mir schon...Aber da kommt bei mir trotzdem das Gleiche bei raus. Also muss ja noch etwas beim Füllen des Arrays nicht stimmen, oder?

      Kommentar


      • #4
        Naja, die Werte bekommst du so als ein mehrdimensionales array:

        PHP-Code:
        for ($i 0array_key_exists('frage'.$i $_POST); $i++) {
            
        $umfrage[$i] = array();

            
        $umfrage[$i]['frage'] = $_POST['frage'.$i];
            
        $umfrage[$i]['options'] = array();
            
        $umfrage[$i]['punkte'] = array();

            for (
        $ii 0array_key_exists('option'.$i.'_'.$ii$_POST); $ii++) {
                
        $umfrage[$i]['options'][$ii] = $_POST['option'.$i.'_'.$ii];
                
        $umfrage[$i]['punkte'][$ii] = $_POST['punkt'.$i.'_'.$ii];
            }

        Wie es mit der DB weitergeht, naja, ich bin mir nicht sicher wie du das haben willst. Nach deinem Code soll wohl pro neuer Umfrage eine Zeile in 'umfragen' angelegt werden und alle Fragen, alle Optionen und Punkte durch ';' getrennt je in ein Feld. Keine Ahnung wie du später zuordnen kannst, welche Option zu welcher Frage gehört.
        Ich persönlich würde drei Tabellen anlegen: Umfragen, Fragen, Optionen.
        Per Fremdschlüssel würde ich dann die Fragen einer bestimmten Umfrage und die Optionen wiederum einer bestimmten Frage zuordnen.

        Kommentar


        • #5
          Kaum schau ich es mir heute Morgen nochmal an, fällt es mir wie Schuppen von den Augen. Es läuft jetzt alles, vielen Dank elf!

          Kommentar

          Lädt...
          X