PHP / MySQL Problem: Daten werden nicht eingetragen.

vigenzo

Brötchen
ID: 85211
L
23 April 2006
202
42
So, wir haben hier ein kleines Problem. Wir arbeiten an einer Art Casinoskript, das erste mal, dass wir wirklich was per PHP in ne MySQL-Datenbank eintragen wollen. Wir sind so weit, dass es keine Fehlermeldungen mehr gibt. Aber dennoch wird nichts in die Tabelle eingetragen. Woran kann das liegen?

login.php
PHP:
<html>
<head><title>Kunde hinzuf¸gen</title></head>

<body>

<form action="main.php" method="post">
	<p>Benutzername: <input type="text"     name="benutzername" size="30" maxlength="30" /></p>
	<p>Passwort:     <input type="password" name="kennwort"     size="30" maxlength="30" /></p><br>
	<input type="submit" value="login" /><br>
</form>

</body>
</html>

main.php
PHP:
<?php
	if("" == $_POST['benutzername']) {echo "Bitte geben sie einen Benutzernamen ein";}
	else 
	{
		if(($_POST['benutzername'] == "Admin") AND ($_POST['kennwort'] == "123456"))
			include "adduser.php";
		else 
		{
			echo "Benutzername oder Kennwort falsch!";
		}
	}
?>

adduser.php
PHP:
	<form action = "addnow.php" method="post">
		<p>KNr:		<input type="text" name="knr" size="5" maxlenghth="5" /></p>
		<p>Nachname:        <input type="text" name="nachname" size="30" maxlength="30" /></p>
		<p>Vorname:         <input type="text" name="vorname"  size="30" maxlength="30" /></p>
		<p>Strasse/Hausnr.: <input type="text" name="strasse"  size="27" maxlength="27" /></p>
		<p>PLZ/Ort:         <input type="text" name="plz"      size="5"  maxlength="5"  /><input type="text" name="ort"    size="25" maxlength="25" /></p>
	</form>

addnow.php
PHP:
<?php

error_reporting(E_ALL);
include 'config.php';

mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS);

mysql_select_db('schrottcast_casino');


$sql = "INSERT INTO `Kunde` (`KNr`, `Name`, `Vorname`, `Strasse`, `PLZ`, `Ort`) VALUES (\'13\', \'Wiggum\', \'Chief\', \'Nowhere 66\', \'33333\', \'Springfield\');";

// $sql = "INSERT INTO ´Kunde´ (KNr, Nachname, Vorname, Strasse, PLZ, Ort) VALUES  ('". $_POST['knr']."','".$_POST['nachname']."','". $_POST['vorname']."','". $_POST['strasse']."', '".//$_POST['plz']."','". $_POST['ort']."')";

?>
(Die erste Version funktioniert schon nicht, die ausgequotete wollen wir eigentlich erreichen, aber da klappt es genauso wenig.

config.php (Daten stimmen im Original, sind hier aber geändert. Wobei ihr den host eh nicht kennt)
PHP:
<?php
    error_reporting(E_ALL);

    define('MYSQL_HOST',     'localhost');
    define('MYSQL_USER',     'user');
    define('MYSQL_PASS',     'passwort');
    define('MYSQL_DATABASE', 'casino');
?>

Die Datenbank Kunde existiert in dieser Form definitiv, per phpmyadmin kann auch alles eingetragen werden.
 
happymaster schrieb:
Fehlt etwa einfach nur das mysql_query? :ugly: :ugly: Ansonsten mysql_error!
Wie gesagt: Ich selbst habe mich bisher nur bei der Fehlerbehandlung mit MySQL beschäftigt, der Programmierer der Skripte vorher halt kurz. Wo muss das hin?
 
Geht dennoch nicht. Hatten wir sogar mal drin, aber irgendwie wieder gelöscht. Aber wie gesagt: Es funktionklappt trotzdem nicht.
 
was sollen die slashes im query???

du willst doch strings eintragen dann solltest du die nicht escapen oder was auch immer das darstellen soll

PHP:
$sql = "INSERT INTO `Kunde` (`KNr`, `Name`, `Vorname`, `Strasse`, `PLZ`, `Ort`) VALUES (\'13\', \'Wiggum\', \'Chief\', \'Nowhere 66\', \'33333\', \'Springfield\');";

so wäre richtig würde ich meinen:

PHP:
$sql = "INSERT INTO `Kunde` (`KNr`, `Name`, `Vorname`, `Strasse`, `PLZ`, `Ort`) VALUES (13, 'Wiggum', 'Chief', 'Nowhere 66', 33333, 'Springfield')"; 

mysql_query($sql);
if(mysql_affected_rows())
  echo "Jaaaa toll es funzt !";
else
   echo "Scheiße !<br /><br />".mysql_error();

und kannst du mir verraten warum du inner config ne Datenbank definierst, aber im Script ne andere Selectest?

und hier noch dein richtiger Query

PHP:
$sql = "INSERT INTO `Kunde` (`KNr`, `Nachname`, `Vorname`, `Strasse`, `PLZ`, `Ort`) VALUES  (". $_POST['knr'].",'".$_POST['nachname']."','". $_POST['vorname']."','". $_POST['strasse']."', ".$_POST['plz'].",'". $_POST['ort']."')";

der ging nicht weil vor irgendner vars im Query // standen und du bei der tabelle ´gemacht hast, anstatt `
 
Zuletzt bearbeitet:
Jau, jetzt klappt das soweit. Danke!

Ne weitere Frage: Ich frage die höchste SpielID (in ner anderen Tabelle) ab, wie gebe ich das dann aus?

PHP:
SELECT max(SpielID) FROM spielt
Hiermit bekomme ich den Wert, den ich will, aber wie gebe ich ihn jetzt aus, also in einem echo-Befehl? Bzw. wie bekomme ich diesen Wert erst einmal in eine Variable?
 
vigenzo schrieb:
Jau, jetzt klappt das soweit. Danke!

Ne weitere Frage: Ich frage die höchste SpielID (in ner anderen Tabelle) ab, wie gebe ich das dann aus?

PHP:
SELECT max(SpielID) FROM spielt
Hiermit bekomme ich den Wert, den ich will, aber wie gebe ich ihn jetzt aus, also in einem echo-Befehl? Bzw. wie bekomme ich diesen Wert erst einmal in eine Variable?
PHP:
$sql = mysql_query('SELECT max(SpielID) FROM spielt');
if($row = mysql_fetch_row($sql)) {
  echo "Die höchste ID ist:".$row[0];
}

MfG respawner
 
Einfach so:
PHP:
$res = mysql_query("SELECT max(SpielID) FROM spielt");
$db = mysql_fetch_array($res);

foreach ($db as $echo)
{
   echo $echo;
}
 
oder so

PHP:
$res = mysql_fetch_object(mysql_query("SELECT max(SpielID) AS SID FROM spielt"));

echo $res->SID;

in der Datenbank muss aber mindestens eine ID vorhanden sein sonst steht bei echo einfach mal nix, glaub ich

um das zu umgehen kannst du folgendes echo nutzten

PHP:
$SID = empty($res->SID) ? 0 : $res->SID;

echo $SID;
 
Zuletzt bearbeitet:
Danke bis hierher schonmal.

Eine noch etwas umfangreichere Sache...
Ich habe eine Datenbank, in der die ganzen Spieler stehen. Nun möchte ich in einem Menü eine Dropdown-Liste haben, in der die Kundennummer (KNr), der Vorname (Vorname) und der Nachname (Nachname) des Kunden stehen. Wie löse ich das am effektivsten, dass automatisch sämtliche in der Liste vorkommenden Kunden in dieses eine Dropdown-Menü eingebaut werden?

vigenzo
 
eigentlich genauso wie das normale ausgeben.
so ungefähr könnte es aussehen:
PHP:
echo '<select name="Auswahl" size="1">';
$sql = mysql_query("select Kundennummer, Vorname, Nachname from tabelle where ....");
while($row = mysql_fetch_row($sql)) {
  echo '<option values="'.$row[0].'">'.$row[0].' '.$row[1]., .$row[2].'</option>';
}
echo '</select>';

Als Ergebnis (Kundennummer) steht dann wenn du das in einer Form mit method="post" abgesendet hast in
$_POST['Auswahl']

MfG respawner
 
respawner schrieb:
eigentlich genauso wie das normale ausgeben.
so ungefähr könnte es aussehen:
PHP:
echo '<select name="Auswahl" size="1">';
$sql = mysql_query("select Kundennummer, Vorname, Nachname from tabelle where ....");
while($row = mysql_fetch_row($sql)) {
  echo '<option values="'.$row[0].'">'.$row[0].' '.$row[1]., .$row[2].'</option>';
}
echo '</select>';

Als Ergebnis (Kundennummer) steht dann wenn du das in einer Form mit method="post" abgesendet hast in
$_POST['Auswahl']

MfG respawner

meinst du er hat nen select gemeint :-?
Nun möchte ich in einem Menü eine Dropdown-Liste haben, in der die Kundennummer (KNr), der Vorname (Vorname) und der Nachname (Nachname) des Kunden stehen.
 
Muss das mal ausprobieren, danke.
Eine klitzekleine Sache noch:

Wenn ich die Tabelle "spielt" ganz einfach komplett ausgeben möchte, wie mache ich das? Also SELECT * FROM spielt ist klar, aber in welchen PHP-Zusammenhang?

Vielen Dank für eure große Hilfe!

vigenzo
 
PHP:
$sql = mysql_query('select * from spielt');
echo "<table>";
while ($row = mysql_fetch_row($sql)) {
  echo "<tr>";
  foreach ($row as $col) {
     echo "<td>".$col."</td>";
  } 
  echo "</tr>";
}
echo "</table>";

MfG respawner
 
Danke, aber wie bekomme ich dann noch die Namen der jeweiligen Spalten dazu? Also "Vorname", "Name" etc.? Und: Was ist die einfachste Möglichkeit, dass ich ein Textfeld habe, in das man einen SQL-Befehl eingibt und dieser anschließend ausgeführt wird? Also so wie hier]?
 
PHP:
$sql = mysql_query('select * from spielt');
echo "<table>";
if($row = mysql_fetch_assoc($sql)) {
  echo "<tr>";
  $keys = array_keys($row) {
  foreach ($keys as $col) {
     echo "<th>".$col."</th>";
  } 
  foreach ($row as $col) {
     echo "<td>".$col."</td>";
  } 
}
while ($row = mysql_fetch_row($sql)) {
  echo "<tr>";
  foreach ($row as $col) {
     echo "<td>".$col."</td>";
  } 
  echo "</tr>";
}
echo "</table>";

ist zwar etwas unschön, aber so musste nich nichts vom alten Code wegwerfen (Recylcling bis zum geht nicht mehr).

edit habs aber nicht getestet

mit der direkten Eingabe würde ich das doch gleich mit phpmyadmin machen

MfG respawner