• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Tabelle aufrufen mit Variablen

Status
Für weitere Antworten geschlossen.

Lenchen

Neues Mitglied
Hallo
Ich habe in einem kleinen php Script den vorher festen Tabellennamen in einen variablen umgeändert.
Jetzt funktioniert es nicht mehr, obwohl der Variablenname korrekt übergeben wird (habe ihn auch als Überschrift ausgeben lassen) Und die Tabelle angelegt wurde. Aber ändern und aufrufen der Datenbank klappt nicht.
Hier gehts zu der Seite Kniffel - Name des Soiels wählen
In dem Script habe ich im vergleich zu vorher nichts geändert, bis auf, dass ich "Spielstand" mit $name ersetzt habe und 2 vorseiten hinzugefügt habe um die Tabelle zu erstellen.
Hier der Code der Zwischenseite, wo die Grundwerte eingesetzt werden sollten (funktioniert nicht)
PHP:
<html>
 <head>
  <title>Kniffel - neues Spiel anlegen </title>
 </head>
 <body>
<?php
$name=$_POST[name];

$verbindung = mysql_connect("localhost",
"entfernt","entfernt")
or die ("keine Verbindung möglich.
 Benutzername oder Passwort sind falsch");
mysql_select_db("fantasybasteln")
or die ("Die Datenbank existiert nicht.");


mysql_query("CREATE TABLE $name (
id int(255) NOT NULL auto_increment,
name varchar(100) NOT NULL,
wert varchar(100) NOT NULL,
PRIMARY KEY (id) );");
echo "Dein Spiel $name beginnt<br>";

$aendern = "UPDATE $name Set
wert=-1 WHERE id < 14";
$update = mysql_query($aendern);

$aendern = "UPDATE $name Set
name=1er WHERE id LIKE 1";
$update = mysql_query($aendern);
$aendern = "UPDATE $name Set
name=2er WHERE id = 2";
$update = mysql_query($aendern);
$aendern = "UPDATE $name Set
name=3er WHERE id = 3";
$update = mysql_query($aendern);
$aendern = "UPDATE $name Set
name=4er WHERE id = 4";
$update = mysql_query($aendern);
$aendern = "UPDATE $name Set
name=5er WHERE id = 5";
$update = mysql_query($aendern);
$aendern = "UPDATE $name Set
name=6er WHERE id = 6";
$update = mysql_query($aendern);
$aendern = "UPDATE $name Set
name=3er Pasch WHERE id = 7";
$update = mysql_query($aendern);
$aendern = "UPDATE $name Set
name=4er Pasch WHERE id = 8";
$update = mysql_query($aendern);
$aendern = "UPDATE $name Set
name=Full House WHERE id = 9";
$update = mysql_query($aendern);
$aendern = "UPDATE $name Set
name=kleine Strasse WHERE id = 10";
$update = mysql_query($aendern);
$aendern = "UPDATE $name Set
name=grosse Strasse WHERE id = 11";
$update = mysql_query($aendern);
$aendern = "UPDATE $name Set
name=Kniffel WHERE id = 12";
$update = mysql_query($aendern);
$aendern = "UPDATE $name Set
name=Chance WHERE id = 13";
$update = mysql_query($aendern);
?>
  <form action="Kniffel.php" method="post">
   <input type="hidden" name="name" value="<?php echo "$name";?>">
   <input type="submit" value="Los gehts!">
  </form>
 </body>
</html>
Die Datenbank wird angelegt, aber die Werte nicht eingetragen :(
 
Werbung:
Ich vermute mal, es liegt daran, dass du die Variable jetzt mit im String stehen hast und diese nicht als Variable interpretiert wird. Versuch es mal so:

PHP:
mysql_query("CREATE TABLE " . $name . " (
id int(255) NOT... "
 
Danke für die Hilfe, habe den Code geändert. Sieht jetzt so aus
PHP:
<html>
 <head>
  <title>Kniffel - neues Spiel anlegen </title>
 </head>
 <body>
<?php
$name=$_POST[name];

$verbindung = mysql_connect("localhost",
"entfernt","entfernt")
or die ("keine Verbindung möglich.
 Benutzername oder Passwort sind falsch");
mysql_select_db("fantasybasteln")
or die ("Die Datenbank existiert nicht.");


mysql_query("CREATE TABLE" . $name . "(
id int(255) NOT NULL auto_increment,
name varchar(100) NOT NULL,
wert varchar(100) NOT NULL,
PRIMARY KEY (id) );");
echo "Dein Spiel $name beginnt<br>";

$aendern = "UPDATE $name Set
wert=-1 WHERE id < 14";
$update = mysql_query($aendern);

$aendern = "UPDATE" . $name . "Set
name=1er WHERE id LIKE 1";
$update = mysql_query($aendern);
$aendern = "UPDATE" . $name . "Set
name=2er WHERE id = 2";
$update = mysql_query($aendern);
$aendern = "UPDATE" . $name . "Set
name=3er WHERE id = 3";
$update = mysql_query($aendern);
$aendern = "UPDATE" . $name . "Set
name=4er WHERE id = 4";
$update = mysql_query($aendern);
$aendern = "UPDATE" . $name . "Set
name=5er WHERE id = 5";
$update = mysql_query($aendern);
$aendern = "UPDATE" . $name . "Set
name=6er WHERE id = 6";
$update = mysql_query($aendern);
$aendern = "UPDATE" . $name . "Set
name=3er Pasch WHERE id = 7";
$update = mysql_query($aendern);
$aendern = "UPDATE" . $name . "Set
name=4er Pasch WHERE id = 8";
$update = mysql_query($aendern);
$aendern = "UPDATE" . $name . "Set
name=Full House WHERE id = 9";
$update = mysql_query($aendern);
$aendern = "UPDATE" . $name . "Set
name=kleine Strasse WHERE id = 10";
$update = mysql_query($aendern);
$aendern = "UPDATE" . $name . "Set
name=grosse Strasse WHERE id = 11";
$update = mysql_query($aendern);
$aendern = "UPDATE" . $name . "Set
name=Kniffel WHERE id = 12";
$update = mysql_query($aendern);
$aendern = "UPDATE" . $name . "Set
name=Chance WHERE id = 13";
$update = mysql_query($aendern);
?>
  <form action="Kniffel.php" method="post">
   <input type="hidden" name="name" value="<?php echo "$name";?>">
   <input type="submit" value="Los gehts!">
  </form>
 </body>
</html>
Allerdings wird die Tabelle jetzt nichtmal mehr angelegt :(
EDIT: Habe jetzt den Variablen allen andere namen gegeben (aendern1, 2 usw) und die Änderung beim Tabellenanlegen wieder rückgängig gemacht. Jetzt wird die Tabelle wieder angelegt, aber die Werte nicht :(. Gibt es vielleicht einen anderen Befehl, außer UPDATE? Kann ich das vielleicht gleich bei der erstellung der Tabelle angeben, welche Werte die Felder haben sollen?
EDIT2: Habe den Fehler, ich habe versucht, Daten zu ändern, die es gar nicht gibt. jetzt funktioniert es, falls ihr Kniffel spielen wollt, bitte hier lang:->Kniffel - Name des Soiels wählen über konstruktive Kritik würde ich mich sehr freuen.
 
Zuletzt bearbeitet:
Werbung:
er schreibt

Code:
"CREATE TABLE " . $name

du schreibst

Code:
"CREATE TABLE" . $name

naaaaa.... was aufgefallen? ^^

//Edit: naja und da du eh doublequotes verwendest (") und dazwischen eh variablen geparst werden ist es eigentlich scheißegal ob du schreibst "".$bla."" oder "$bla"
 
Jetzt wo dus sagtst...
Das war mir gar nicht aufgefallen, bin wie gesagt sehr neu bei dem Thema.
Aber es funktioniert jetzt auch so, war ein anderer Fehler. Kannst du mir denn sagen, wann es notwendig ist, diese Punkte vor und nach der Variablen zu machen und wann nicht? Habe es jetzt wie gesagt wieder ohne und es klappt.
Die Punkte sind doch eigentlich und zwei Strings miteinander zu verketten, oder?
Ich hatte das jetzt so verstanden,
PHP:
$begruessung = "Hallo";
$name = "Slibbo";

$gruss= "$begruessung . $name";
dass $gruss dann den Wert HalloSlibbo hat. Ist das soweit richtig?
Warum muss ich dass dann ind der MySql- Anweisung machen? Ich habe doch nur 1 Variable.
LG
 
Es ist ganz einfach. Alles was in doublecuotes (") ist, wird von PHP geparsed, und alles was in singlequotes (') ist, wird nicht geparsed.

PHP:
$name = "Peter Lustig";
echo "Hallo $name";
/* Ausgabe: Hallo Peter Lustig */
echo 'Hallo $name';
/*Ausgabe: Hallo $name */
Gruß thuemmy
 
Werbung:
Status
Für weitere Antworten geschlossen.
Zurück
Oben