Prüfen, ob Eintrag in DB steht

Das war mir auch aufgefallen, lag daran, das ich zwischenzeitlich die tabelle umbenannt habe um auszuschliesen das er nach der falschen tabelle sucht.

Das Problem ist nun gelöst, ich kann euch leider nicht sagen woran es lag, musste wegen einem update von windows den rechner neustarten und danach lief es auf anhieb.

Nur jetzt ist ein anderes kleines problem aufgetreten,

PHP:
<?php
  $abfrage = "SELECT id, user_id  FROM villages WHERE user_id LIKE '".$_SESSION['ID']."'";
  $result = mysql_query($abfrage) or die(mysql_error());
if (mysql_num_rows($result) == 0)
 {
 $nick = $_SESSION['ID'];
 $sql = "INSERT villages (user_id) VALUES ('$nick')";  
     $result = mysql_query($sql) OR              
    die("Query: <pre>".$sql."</pre>\n".                  
    "Antwoertchen: ".mysql_error()); 
	echo '<meta http-equiv="refresh" content="5;url=game.php">';
    echo "Neue Stadt eingetragen. Sie werden weiter geleitet.";

 }
 else
 {
  echo 'Einträge vorhanden';

}
?>

an dieser stelle trägt er den richtigen Wert nicht ein. Er setzt die user_id auf 0 und dadurch gerät er in eine endlos schleife. meine db freut sich;)

lasse mir nach dem script die user Id anzeigen mit:

PHP:
        <?php
				$nickid = $_SESSION['ID'];
		echo "W&auml;hle eine Spielwelt ".$nickid."!";
		?>

Dort gibt er sie richtig an, nur beim eintrag bevorzugt er die ID als 0 zu deklarieren.
 
PHP:
('$nick')

In einfachen Anführungszeichen wird die Variable auch nicht übersetzt und wenn das Feld z.B. vom Typ Integer ist, kann er keinen Textwert in die DB eintraqgen.

Schreib doch lieber
PHP:
...) VALUES ('" .$nick ."')";
 
ich habe es bei meinen registrie formular auch so gemacht und es funktioniert dort.
Habe es aber nun geändert und er kommt denoch nicht aus der refresh aktion raus.
Die Einträge bleiben weiterhin bei 0.
 
Liegt es daran das er die ID mit 0 einträgt oder liegt es daran das er immer in die IF-Abfrage einsteigt weil die Abfrage weiter oben keinen Datensatz zurückliefert

In diesem Fall liegt es daran das das Feld user_id nur eine Länge von 15 Zeichen hat und die (eigentliche) Session ID länger ist.
 
die user_id hat ebenfalls max 15 zeichen, sie wird an anderer stelle vergeben:

PHP:
$_SESSION['ID'] = $rows['id'];

erfolgt sobald er Passwort und Username verglichen hat. Dann nimmt er wo beides Übereinstimmt die ID in meinem Falle 3.

Jetzt wird es Merkwürdig:

So sollte es meines Wissen nach sein:
PHP:
$nickid = $_SESSION['ID'];
 $sql = "INSERT INTO villages (user_id) VALUES ('$nickid')";

funktioniert aber nicht.

Ich habe es nun so geändert:

PHP:
$nickid = $_SESSION['ID'];
 $sql = "INSERT INTO villages (user_id) VALUES ($nickid)";

und siehe da, in der DB steht wie gewünscht meine Id also 3.

Aktualisiere ich jetzt aber trägt er weiterhin alles mit 3 ein.

Ich bin echt am verzweifeln grade.

PHP:
<?php
  $abfrage = "SELECT id, user_id  FROM villages WHERE user_id LIKE ".$_SESSION['ID']."";
  $result = mysql_query($abfrage) or die(mysql_error());
if (mysql_num_rows($result) == 0)
 {
$nickid = $_SESSION['ID'];
 $sql = "INSERT INTO villages (user_id) VALUES (".$_SESSION['ID'].")";  
 echo $nickid ;

     $result = mysql_query($sql) OR              
    die("Query: <pre>".$sql."</pre>\n".                  
    "Antwoertchen: ".mysql_error()); 

 }
 else
 {
  echo 'Einträge vorhanden';

}
?>


auf diese art funktioniert das script. kann mir jemand sagen weshalb? Eigentlich ist es doch so falsch oder nicht?
Meiner Meinung nach fehlen da ein Paar ' .

lg
 
Hallo!

PHP:
mysql_select_db(game2) OR die (mysql_error());
.....sollte Dir zumindest eine "Notice" wegen der undefinierten Konstante raushauen.

Gruss Dr Dau
 
Zurück