Wie löse ich dieses Problem am besten ?

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

  • Wie löse ich dieses Problem am besten ?

    Servus Leute,

    ich stehe grade vor einem kleinen Problemchen und weiß nicht wie ich es lösen kann.

    Hintergrund ist folgender :

    Ich schreibe eine Art Umfragentool.
    Im Admin-Bereich kann man Fragen zur Umfrage hinzufügen, editieren, löschen usw.

    Im Benutzerbereich werden die Fragen dann schließlich aus der Datenbank ausgelesen.

    Zu jeder Frage wird zusätzlich noch ein Dropdown-Menü mit den Werten aus dem Schulnoten-System (sprich 1-Sehr gut ..... 6-ungenügend), angehängt.

    Jedes Dropdownfeld trägt den Namen der Fragen-ID.

    Als Value sollte eigentlich $antwort dienen, jedoch habe ich jetzt gemerkt, dass $antwort immer den gleichen Wert annimmt (ist ja auch logisch, da $antwort mit dem Wert der nächsten Antwortauswahl der folgenden Frage überschrieben wird.)

    Wie löse ich nun das Problem am besten, dass ich für jede Frage eine "eigene" Antwortvariable habe, und diese gleichzeitig noch später zusammen mit allen anderen Antworten in die DB schreiben kann ?

    Ich dachte an Variablenverkettung und beim Insert an eine For-Schleife die dann alles in die DB einfügt.

    Da ich grade noch an einer anderen Stelle weiter zu arbeiten habe, würde ich mich in der Zwischenzeit über ein paar Ansätze freuen.

    Danke,
    sturdy

  • #2
    <select name="antwort[id]"...>
    wobei id dann für die Frage steht. Lass dir das $_POST Array ausgeben, dann siehst du das Ergebnis und kannst es dementsprechend weiterverarbeiten.

    PHP-Code:
    foreach ($_POST['antwort'] as $antwortid => $value) {
    //
    //INSERTS
    //

    vielleicht...
    Zuletzt geändert von ZombieChe; 24.04.2007, 12:16.

    Kommentar


    • #3
      Ohje Das ist das erste Mal, dass ich mit einem Array arbeiten muss O_o

      Wie würde das in diesem Beispiel bei mir aussehen, wenn ich das einbinde, dann komme ich besser mit dem Einsatz der Syntax klar ... ?

      PHP-Code:
      <?
      // Auslesen der Fragen + Ausgabe DD-Feld
                                  $result = mysql_query("SELECT * FROM `Fragen` 
      WHERE `Bereich` ='allgemein' 
      ORDER BY Fragen_ID ASC"); 
                    echo mysql_error();
                    while($row = mysql_fetch_array($result)) { 

                          /* Variablen zuweisen */ 


                    $fragenausgabe=$row["Frage"]; 
                    $bereich=$row["Bereich"];
                    $frID=$row["Fragen_ID"]; 

      /* Daten ausgeben */ 

                                      ?> <!-- Anfang tabellarischer Auflistung der Fragen -->
                                          
                                              <td bgcolor="#FFFFFF" width="538" align="left" height="35">
                                                  <font face="Verdana">
                                                  <font size="1"><?php echo $fragenausgabe?></font> </font>&nbsp;</td>
                                                  <td bgcolor="#FFFFFF" width="100" align="right" height="35">
                            <p>
                            <select size="1" name="<? echo $frID; ?>" value="<? echo $antwort ?>">
                                                <option selected>Bitte auswählen</option>
                                                <option>1 - Sehr gut</option>
                                                <option>2 - Gut</option>
                                                <option>3 - Befriedigend </option>
                            <option>4 - Ausreichend</option>
                                                <option>5 - Mangelhaft</option>
                                                <option>6 - Ungenügend</option>
                                                </select></p>
                          </td>                                        
                          </tr>
                                      ?>
      PHP-Code:
      <?
      // Variabler Insert der Antworten
      for ($i=0;$i<=$anzahl;$i++)
                      {           
                    $eintrag = "INSERT INTO antworten (Fragen_ID,axxcode,antwort)
       VALUES ('$frID','$axxcode','$antwort')";
                       $result = mysql_query($eintrag)
                       or die ("Eintrag in die Datenbank nicht möglich zur Zeit:<br>".mysql_error());
                    
                    
                    
                    }
                    }

      ?>
      Zuletzt geändert von sturdy; 24.04.2007, 13:01.

      Kommentar


      • #4
        Regeln lesen, Code umbrechen!
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Original geschrieben von sturdy
          Ohje Das ist das erste Mal, dass ich mit einem Array arbeiten muss O_o
          arrays

          greets
          (((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")

          Kommentar


          • #6
            Ich hab hier keine Scrollbalken bei 1600x1200 Hab dennoch mal die SQL Befehle angepasst.

            Kommentar


            • #7
              Original geschrieben von sturdy
              Ich hab hier keine Scrollbalken bei 1600x1200 Hab dennoch mal die SQL Befehle angepasst.
              Original geschrieben in den Regeln
              Achtet also beim Posten darauf, dass ihr bei "breitem" Quelltext entsprechende Umbrüche in den Text einfügt, so dass euer Posting bei einer Auflösung von 1024 Pixeln (Breite) ohne Hindernisse zu lesen ist.
              greets
              (((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")

              Kommentar


              • #8
                <select size="1" name="<? echo $frID; ?>" value="<? echo $antwort ?>">
                versuch mal
                PHP-Code:
                <select size="1" name="antwort[<? echo $frID; ?>]">
                und dann beim Abfragen
                PHP-Code:
                foreach($_POST['antwort'] as $fr_id=>$answer) {
                    ....

                (ungetestet)
                ich glaube

                Kommentar


                • #9
                  Kommt jetzt leider der Fehler :


                  Notice: Undefined index: antwort in /*****/index1.php on line 135

                  Warning: Invalid argument supplied for foreach() in /*****/index1.php on line 135

                  Die Umfrage selbst wird abgeschickt und auch die Erfolgsmeldung, dass man erfolgreich daran teilgenommen hat, erscheint.

                  Folgende Zeilen sind es :

                  PHP-Code:
                  foreach($_POST['antwort'] as $frid=>$antwort) {   

                                
                  $eintrag "INSERT INTO antworten 
                  (Fragen_ID,axxcode,antwort) 
                  VALUES ('
                  $frid','$axxcode','$antwort')";
                                   
                  $result mysql_query($eintrag)
                                   or die (
                  "Eintrag in die Datenbank nicht möglich zur Zeit:<br>".mysql_error()); 

                  Wie initalisiere ich denn in dem Fall das Array ? Beim Blick in den HTML-Code steht nämlich auch :

                  Code:
                  value="<br />
                  <b>Notice</b>:  Undefined variable: antwort in <b>/*******/index1.php</b> on line <b>423</b><br />

                  Kommentar


                  • #10
                    Und wie sieht jetzt dein Select-Feld aus?
                    Passt der Name zu dem, was du abfragen willst?
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #11
                      *Hust*

                      sehe grade, dass ich diese Ersetzung bei nur einem der Zwei selects gemacht hatte
                      Jetzt schreibt er mir alles schön in die DB ...

                      Wunderbar, dann übergebe ich jetzt noch den AxxCode (Zugriffscode für die Umfrage) noch jedesmal in ein Hidden-Feld und dann passt das hoffentlich ...

                      Gebe dann nochmal ein Feedback ob alles okay ist.


                      An dieser Stelle schonmal VIELEN LIEBEN DANK für die Lösungsansätze und Hilfestellungen, weiß ich sehr zu schätzen !!

                      Kommentar

                      Lädt...
                      X