Forenindex » Programmierung/Entwicklung » PHP und MySQL » Problem beim Eintrag in die Datenbank

Problem beim Eintrag in die Datenbank

Anonym
Beiträge gesamt: 22827

29. Sep 2003, 11:07
Bewertung:

gelesen: 645

Beitrag als Lesezeichen
bei diesem PHP script trägt er mir nichts in die Datenbank ein:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<!-- php/joblist/input.php -->
<html>
<head>
<title>Eintragung in die Datenbank</title>
</head>
<body>
<?php

include("./mysql_connectinfo.inc.php");
// Verbindung zur Datenbank herstellen
$link = @mysql_pconnect($mysqlhost, $mysqluser, $mysqlpasswd);
if ($link == FALSE)
{
echo "<p><b>Leider kann keine Verbindung zur Datenbank hergestellt werden.
Daher können die Eregebnisse zurzeit nicht angezeigt werden.
Bitte versuchen Sie es später noch einmal.
</body></html>\n";
exit();
}
mysql_select_db($mysqldbname);

// falls Formulardaten zur Verfügung stehen:
// auswerten + speichern
if($submitbutton=="Eintragen")
{
if($Mitarbeiter>=1 && $Mitarbeiter<=3)
{
mysql_query(
"INSERT INTO JobTimeDate
(MitarbeiterID, FirmaID, Job, Time, Date)
VALUES ($Mitarbeiter, $Firma, '$Job', $Time, $Date)");

echo "<P><B>Die Eingabe war erfolgreich</B>";
}
else
{
echo "<p>Keine gültige Wahl. Bitte wählen Sie noch einmal.
Zurück zum <a href=\"./job.html\">Eingabeformular</a>.
</body></html>\n";
exit();
}
}

// Eingabebestätigung

?>
<p>Zum <a href="show.html">Stundenabfrageformular</a>.
</body>
</html>


in die IF-Schleife des INSERT INTO befehls kommt er auch rein, da immer dasteht das der Eintrag erfolgreich war...

Problem beim Eintrag in die Datenbank

Miro Dietiker
Beiträge gesamt: 699

29. Sep 2003, 11:22
Bewertung:

gelesen: 645

Beitrag als Lesezeichen
Hi!

mysql_query() antwortet bei Erfolg NON-FALSE laut handbuch. Die
Richtige überprüfung über Erfolg der Datenbankabfrage sollte also
nach JEDEM query gemacht werden!

if(!mysql_query(.....)) // als eine Mögliche korrekte überprüfung
{ echo "IRGENDEINFEHLER"; }

Wenn dich jetzt noch interessiert, wieso es nicht gegangen ist,
und du die Textuelle Fehlermeldung von mysql haben willst, verwende:

if(!mysql_query(.....)) // als eine Mögliche korrekte überprüfung
{ echo "FEHLER(".mysql_errno()."): ".mysql_error(); }

Und schon steht dein Fehler auf dem Bildschirm!

PS: Date- und Time-Felder sollen in Quotes (wie 'datumsfeld'
oder "datumsfeld") stehen!

GrEeZ: Miro Dietiker

Problem beim Eintrag in die Datenbank

Peshay
Beiträge gesamt: 1

29. Sep 2003, 11:34
Bewertung:

gelesen: 645

Beitrag als Lesezeichen
ich versteh noch nicht ganz wie du des meinst mit "mögliche korrekte überprüfung"
soll ich also nur hinter mein query des mit dem echo Fehler reinschreiben?
oder brauch ich noch ne extra schleife zur überprüfung des querys?
übrigens ist mein Timefeld nur als ne zahl gespeichert.. also keine uhrzeit oder so.. sondern stundendauer
bin leider ziemlicher anfänger was des angeht.. also wärs nicht schlecht wenn du bei dem was bei mir steht (also nur der zuverändernde teil) so umschreibst wies halt aussehen soll

(Dieser Beitrag wurde von Peshay am 29. Sep 2003, 11:42 geändert)

Problem beim Eintrag in die Datenbank

Miro Dietiker
Beiträge gesamt: 699

29. Sep 2003, 11:46
Bewertung:

gelesen: 645

Beitrag als Lesezeichen
Re..

Also es ist so:
Wenn eine Funktion "false" zurückgibt, wenn sie ein Fehler
meldet, so kann man auf sehr viele Arten die IF-Abfrage machen,
die prüft ob denn nun ein Fehler passiert ist oder nicht!

Als eine möglichkeit habe ich dir den Code...
<?PHP
if(!mysql_query(.....))
{ echo "MYSQL_MELDET_IRGENDEIN_FEHLER"; }
?>
... angegeben

Dass ich da auch noch eine Blocksignatur {} mache, auch wenn es eine
einzelne Zeile ist, ist reine Notationsangewohnheit von mir.
Natürlich geht auch:
<?PHP
if(!mysql_query(.....)) echo "MYSQL_MELDET_IRGENDEIN_FEHLER";
?>

Damit wir auch vom gleichen Reden: IF ist eine Bedingung und kann
nur einmal ausgeführt werden, wohingegen eine Schleife mit bsp.
FOR oder WHILE eingeleitet wird. Dabei wird ein Block {} dann meist
mehrmals durchgegangen, weshalb man ihm Schleife sagt.

GrEeZ: Miro Dietiker