Problem: In einer While Schleife mehrere Formulare erzeugen und einzeln auswerten...

TS7

Mitglied
Hallo Liebe Tutorials Fans,
Ich habe eine Große bitte an euch und es wäre furchbar nett, wenn mir da jemand helfen könnte.

Ich gebe alle Daten aus einer Tabelle (MySql) aus und lese diese in einer While Schleife aus
(siehe PHP-Code).

In dieser While Schleife habe ich auch ein Formular mit einem Auswahlmenü was ausgelesen wird, leider hat dies immer die gleiche Bezeichnung.
(<select name=\"Bewertung\" id=\"\">)

Kann ich jedem eine andere Bezeichnung geben und das auch bequem verwalten?



Hier mal der Code:
PHP:
<?PHP

	//DB Verbindung
 

	    $query = "SELECT * FROM Herz";  
   		$result=mysql_query($query) or die("Anfrage fehlgeschlagen: " . mysql_error());
		
	if ($result)
	{

		
		while ($dataset = mysql_fetch_array($result))
		
	   	{
		$bewertung1 = $_POST['Bewertung'];
		$bewertung2 = $dataset['Bewertung'];
		$end1 = $bewertung1 + $bewertung2;
		$end2 = 2;
		$end = $end1 / $end2;	
		 print "<table class=".$dataset['Bewertung']." bgcolor=\"#CA8BE9\" width=\"520\" border=\"1\">\n";
		 print "<tr>\n";
		 print "<td width=\"75\" rowspan=\"3\" scope=\"col\"><div align=\"center\">".$dataset['HTML_Code']."</div></td>";
		 print "<td width=\"15\" rowspan=\"3\" scope=\"col\">&nbsp;</td>";
		 print "<td colspan=\"3\" scope=\"col\"><b>".$dataset['Bezeichnung']."</b></td>";
		 print "</tr>\n";
		 print "<tr>\n";
		 print "<td width=\"100\"><div class=\"rating_bar\"><div style=\"width:".$end."%\"></div></div>".$dataset['Bewertung']."</td>";
		 print "<td width=\"120\">Klicks:&nbsp;".$dataset['Klicks']."</td>";
		 print "<td>&nbsp;</td>";
		 print "</tr>\n";
		 print "<tr>\n";
		 print "<td colspan=\"2\">
		 <form name=\"form1\" method=\"post\" action=\"test.php\">
		 	<select name=\"Bewertung\" id=\"\">
  			<option value=\"100\" selected>Hervorragend</option>
  			<option value=\"80\">Gut</option>
 			<option value=\"60\">Durchschnittlich</option>
  			<option value=\"40\">Schlecht</option>
  			<option value=\"20\">Schrecklich</option>
  			<option value=\"0\">Kann man vergessen</option>
			</select>
			<input type=\"submit\" name=\"button\" id=\"button\" value=\"Bewerten\">
		 </form>
		 </td>";
		 print "<td width=\"110\"><div align=\"right\">Code anzeigen</div></td>";
		 print "</tr>\n";
		 print "</table>\n<br \>\n";
		$sqlbefehl="UPDATE `Herz` SET `Bewertung`='".$end."' WHERE `ID`='".$dataset['ID']."'";
		echo $sqlbefehl;

		///nun erfolgt der eintrag in die tabelle
		mysql_db_query($dbname,$sqlbefehl,$sql);
		//folgende anweisungen rufen die formularseite wieder auf, um 
		//weitere daten eingeben zukönnen.

		//datenbank wieder schliessen
		//mysql_close();
		}
	}
?>

Mfg
TS7
 
Hi,

bau die Datensatz-ID mit in den Namen ein:

PHP:
     while ($dataset = mysql_fetch_array($result)) {
        $bewertung1 = $_POST['Bewertung' . $dataset['id']];
        :
        :
         print '<select name="Bewertung' . $dataset['id'] . '" id="">';
        :
        :
     }

Wenn Du dann noch das form-Tag mitsamt dem submit-Button aus der Schleife rausziehst, dann kannst Du mit einem Rutsch alles bewerten.

LG
 
  • Gefällt mir
Reaktionen: TS7
Hi,
Funktioniert leider nicht ganz so wie ich mir das gedacht habe.
Wenn ich das eine Bewerte, wird das andere mit bewertet.
Wenn ich bei (Bewertung1) 100 auswähle und dannach bei (Bewertung2) 0 auswähle, halbiert er mir auch den ersten Wert, also 100 wird dann zu 50.

Ich glaube es liegt an der Variable "$bewertung2".

PHP:
		while ($dataset = mysql_fetch_array($result))
		
	   	{
        $bewertung1 = $_POST['Bewertung' . $dataset['ID']]; 
		$bewertung2 = $dataset['Bewertung'];
		
		$end1 = $bewertung1 + $bewertung2;
		$end2 = 2;
		$end = $end1 / $end2;	
		 print "<table class=".$dataset['Bewertung']." bgcolor=\"#CA8BE9\" width=\"520\" border=\"1\">\n";
		 print "<tr>\n";
		 print "<td width=\"75\" rowspan=\"3\" scope=\"col\"><div align=\"center\">".$dataset['HTML_Code']."</div></td>";
		 print "<td width=\"15\" rowspan=\"3\" scope=\"col\">&nbsp;</td>";
		 print "<td colspan=\"3\" scope=\"col\"><b>".$dataset['Bezeichnung']."</b></td>";
		 print "</tr>\n";
		 print "<tr>\n";
		 print "<td width=\"100\"><div class=\"rating_bar\"><div style=\"width:".$end."%\"></div></div>".$dataset['Bewertung']."</td>";
		 print "<td width=\"120\">Klicks:&nbsp;".$dataset['Klicks']."</td>";
		 print "<td>&nbsp;</td>";
		 print "</tr>\n";
		 print "<tr>\n";
		 print "<td colspan=\"2\"><form name=\"form1\" method=\"post\" action=\"test.php\">";
		 print '<select name="Bewertung' . $dataset['ID'] . '" id="">';
  		 print "<option value=\"100\" selected>Hervorragend</option>
  			    <option value=\"80\">Gut</option>
 				<option value=\"60\">Durchschnittlich</option>
  				<option value=\"40\">Schlecht</option>
  				<option value=\"20\">Schrecklich</option>
  				<option value=\"0\">Kann man vergessen</option>
				</select>
			<input type=\"submit\" name=\"button\" id=\"button\" value=\"Bewerten\">
		 </form>
		 </td>";
		 print "<td width=\"110\"><div align=\"right\">Code anzeigen</div></td>";
		 print "</tr>\n";
		 print "</table>\n<br \>\n";
		
		$sqlbefehl="UPDATE `Herz` SET `Bewertung`='".$end."' WHERE `ID`='".$dataset['ID']."'";
		echo $sqlbefehl;

		///nun erfolgt der eintrag in die tabelle
		mysql_db_query($dbname,$sqlbefehl,$sql);
		//folgende anweisungen rufen die formularseite wieder auf, um 
		//weitere daten eingeben zukönnen.

		//datenbank wieder schliessen
		//mysql_close();
		}
 
Hi,

Ich glaube es liegt an der Variable "$bewertung2".

Na ja, der Wert kommt ja aus der Datenbank. Wenn vorher 0 drin steht...
Kannst den Wert ja testhalber mal ausgeben lassen.
Ausserdem aktualisierst Du immer alle Datensätze, obwohl Du pro abgeschicktem Formular nur eine Bewertung übergibst.

LG
 
Jetzt weiß ich woran das liegt.

Bewertung2 kommt ja aus der Datenbank (Wird bei allen Formularen automatisch herrausgesucht) und wird jedes mal, wenn ich auch ein anderes Formular Bewerte, halbiert.

PHP:
        $bewertung1 = $_POST['Bewertung' . $dataset['ID']]; 
        $bewertung2 = $dataset['Bewertung'];
        
        $end1 = $bewertung1 + $bewertung2;
        $end2 = 2;
        $end = $end1 / $end2;
z.B:
Formular 1: (Formular 2 wird aber Bewertet)
Bewertung1 ist 0 und der Wert aus der DB ist 50, dann wird der Wert halbiert obwohl man Formular 2 bewertet hat und nicht 1.

Kann mir da jemand helfen das Problem zu beseitigen?
 
Zurück