MySQL und Formular

Pik As

Grünschnabel
Vielen Dank erstmal für eure letzte Hilfe. Hat mir letzten Endes doch noch geholfen das Problem zu lösen.

Mitlerweile stehe ich vor einem zweiten Problem. Ich möchte mit hilfe eines Formulars Werte in meiner MySQL-Datenbank ändern. Es klappt eigentlich auch alles soweit. Allerdings bin ich wahrscheinlich noch nicht ganz so erfahren mit den Sprachen um mein Problem zu finden.

Ich bekomme es einfach nicht hin, dass sich nur ein Wert ändert. Beim Klicken auf Enter ändern sich immer alle werte der Datenbank.

Link zur Datei


Ich habe eigentlich gehofft, dass es wie folgt funktioniert:

-> In jeder Zeilen Auswertung öffnet sich das FormScript mit den verschiedenen Optionen.
Man wählt nun eine Option aus und der wert ändert sich in dieser Zeile.


Ich hoffe ihr könnt mir diesesmal wieder Helfen.

MfG
Pik As


PS: Sorry wenn es wieder im falschen Bereich gepostet wurde, ist mein 2. Beitrag...
 
item: Was soll dieses WHERE? Du liest hier alle Einträge aus der DB aus
PHP:
$sql = "SELECT * FROM rogg WHERE ID";
$result = mysql_query($sql);

item: Formatier das Zeugs. Man sieht ja nicht mal wo eine Schleife beginnt und wo sie endet. Dann sieht man auch gleich viele logische Fehler
PHP:
<?php   
$verbindung = mysql_connect("", "" , "");
if (!$verbindung){
	echo "Fehler";
	exit;
} 
$dbase=mysql_select_db(,$verbindung);
if (!$dbase){
	echo "Fehler DBSelect";
	exit;
}


$sql = "SELECT * FROM rogg WHERE ID";
$result = mysql_query($sql);
while($row2 = mysql_fetch_object($result)) {
	echo "ID:";
	echo $row2->ID; 

	echo "<br>EXP:";
	echo $row2->zahl;

	echo "<br>Lebenspunkte:";
	echo $row2->ATK;

	echo "<br>Angriffskraft:";
	echo $row2->ATK;

	echo "<br>Verteidigung:";
	echo $row2->DEF;

	echo "<br>Fluchtrate:";
	echo $row2->AGI;

	echo "<br><br>";

	if ($row2->zahl > 270) {
		echo '<form action=""><p><select name="wert" size="3">';
		echo '<option>ATK</option><option>DEF</option><option>AGI</option><option>HP</option></select></p>';
		echo '<input type="submit" value="Enter" onClick="abstart()"></form>';

		if ( empty ($_GET['wert']) ){
			echo "Bitte den Wert auswählen!";
		}else {
			$var=$_GET['wert'];
			$ids=$row2->ID;
			mysql_connect("", "" , "") or die("Verbindung zur Datenbank konnte nicht hergestellt werden");


			mysql_select_db("") or die ("Datenbank konnte nicht ausgewählt werden");


			mysql_query("UPDATE rogg SET $var=$var+10 WHERE ID=$ids");
			mysql_query("UPDATE rogg SET zahl=zahl-10 WHERE ID=$ids");


			mysql_close($link);
		}
	} else {
		echo "Leider nicht möglich...";
	}

	echo "<br><br>";
}
?>

item: Warum machst du innerhalb de Schleife einen UPDATE?
item; Noch schlimmer, du stellst innerhalb der Schleife nochmals eine Verbindung zur DB auf und Schliesst nachher iene Connection names $link - jedoch ist $link nirgens definiert. Am schluss hast du viele offene Vernindungen. Es reicht am Anfag des Scriptes die Verbindung herzustellen und am Schluss zu schliessen
item: Die 2 UPDATE kann man in ein UPDATE fassen
SQL:
UPDATE rogg SET $var=$var+10, zahl=zahl-10 WHERE ID=$ids");

Dein eigentliches Problem habe ich nicht gefunden, da es mir ein Rätsel ist, wie dieser Code funktionieren soll.
 
Zuletzt bearbeitet von einem Moderator:
So wie ich das sehe stecken Deine Update Statements innerhalb der while Schleife, oder? Das heißt nachdem Du etwas ausgewählt hast und dann bestätigst, holt Dir das Skript alle Zeilen, iteriert mit while und sendet das Update für jede ID. Lass Dir doch einfach mal die SQL Statements mit einem echo ausgeben:
PHP:
echo "UPDATE rogg SET $var=$var+10 WHERE ID=$ids";
 
So in etwa wird ein Schuh draus (ungetestet und schnell im Standard Editor gemacht :p):

PHP:
<?php   
  
  $verbindung = mysql_connect("", "" , "");
  if (!$verbindung)
  {
    echo "Fehler";
    exit;
  }
  $dbase=mysql_select_db(,$verbindung);
  if (!$dbase)
  {
    echo "Fehler DBSelect";
    exit;
  }

  // Update VOR der Anzeige, damit diese auch immer aktuell ist.
  if ( isset ($_POST['wert']) )
  {
    $var=$_POST['wert'];
    $id=$_POST['id'];
    // riskant einen übergebenen Wert als Attribut in SQL zu benutzen!
    mysql_query("UPDATE rogg SET $var=$var+10, zahl=zahl-10 WHERE ID=$ids");
  }

  $sql = "SELECT * FROM rogg";
  $result = mysql_query($sql);

  while($row2 = mysql_fetch_object($result))
  {

    echo "ID: "               . $row2->ID; 
    echo "<br>EXP: "          . $row2->zahl;
    echo "<br>Lebenspunkte: " . $row2->ATK;
    echo "<br>Angriffskraft:" . $row2->ATK;
    echo "<br>Verteidigung:"  . $row2->DEF;
    echo "<br>Fluchtrate:"    . $row2->AGI;
    echo "<br><br>";

    if ($row2->zahl > 270)
    {
      // den Javascript kram kannste dir somit sparen
      echo '<form action="' . $_SERVER['PHP_SELF'] . '" method="POST"><p><select name="wert" size="3">';
      echo '<option>ATK</option><option>DEF</option><option>AGI</option><option>HP</option></select></p>';
      echo '<input type="hidden" name="id" value="' . $row2->ID . '">';
      echo '<input type="submit" value="Enter"></form>';
      echo "Bitte den Wert auswählen!";
    }
    echo "<br><br>";
  }
  mysql_close();

?>
 
Zuletzt bearbeitet:
Zurück