if Abfrage funkt nicht!
sandra
- datenbank
Hallo,
Ich möchte die Eingabe in einem Formularfeld mit einem DB Feld vergleichen. Ist der Eintrag schon vorhanden, soll eine Meldung ausgegeben werden. Wenn nicht, eintragen in die DB. Es kommt aber immer die Meldung wie unten "Nummer schon vorhanden" auch wenn es sie in der DB noch gar nicht gibt. Was mach ich hier falsch????
<?
include("config.php");
mysql_connect($db_host,$db_user,$db_pass) || die("Could not contact mySQL!");
mysql_select_db($db_db) || die("Connected mySQL, but database is unavailable!");
$allg_auftragsnummer = $HTTP_POST_VARS["allg_auftragsnummer"]; // [2]
$result = mysql_query("SELECT allg_auftragsnummer FROM arbeitsauftraege_edv WHERE allg_auftragsnummer=$allg_auftragsnummer");
if($result)
{
echo "Nummer schon vorhanden";
}
else
{
// Eintrag in die DB
}
?>
Halihallo sandra
if($result)
{
echo "Nummer schon vorhanden";
}
else
{
// Eintrag in die DB
}
?>
aus http://www.php.net/manual/de/function.mysql-query.php
"Nur für SELECT, EXPLAIN, SHOW oder DESCRIBE Anweisungen liefert mysql_query() eine Ressourcen-Kennung oder FALSE, falls die Anfrage nicht korrekt ausgeführt wurde. Für alle anderen SQL Anweisungen ist der Rückgabewert von mysql_query() im Erfolgsfall TRUE, im Fehlerfall FALSE. Ein Rückgabewert ungleich FALSE bedeutet, dass die Anfrage gültig war und vom Server ausgeführt werden konnte. Das alleine sagt jedoch überhaupt nichts über die Anzahl veränderter oder gelieferter Datensätze aus. Es ist durchaus möglich, dass eine Anfrage erfolgreich war, ohne einen einzigen Datensatz zur verändern oder zu liefern. "
du musst über [http://www.php.net/manual/de/function.mysql-num-rows.php] auf die
Anzahl 0 testen, bzw. ein mysql_fetch_array ausführen, um nachzusehen, ob Datensätze
selektiert wurden.
Viele Grüsse
Philipp
Hallo Philipp,
da war ich wohl drei Mikrosekunden langsamer als Du...
Dieter
Halihallo Dieter
da war ich wohl drei Mikrosekunden langsamer als Du...
Gar alle drei... Wie lang doch eine Minute gehen kann...
Aber warum hatten alle 11 Minuten Zeit gebraucht, um auf diese Frage zu antworten?
Viele Grüsse
Philipp
Hallo,
Aber warum hatten alle 11 Minuten Zeit gebraucht, um auf diese Frage zu antworten?
5 um Kaffee zu holen, 3 zum Tippen, 3 fuer das lahme CGI Script zum Senden ;-)
Nebenbei bemerkt, ich hab uebrigens diese Upload-Geschichte von letzter Woche nach Deinen Vorschlaegen realisiert, ganz trickreich mit _echter_ Fortschrittsanzeige und allem Pipapo, herzallerliebst, sag ich Dir...
Dieter
Halihallo Dieter
Aber warum hatten alle 11 Minuten Zeit gebraucht, um auf diese Frage zu antworten?
5 um Kaffee zu holen, 3 zum Tippen, 3 fuer das lahme CGI Script zum Senden ;-)
:-)
Aber das "lahme CGI" lassen wir mal weg! - Ist IMHO sogar schnell :-)
Nebenbei bemerkt, ich hab uebrigens diese Upload-Geschichte von letzter Woche nach Deinen Vorschlaegen realisiert, ganz trickreich mit _echter_ Fortschrittsanzeige und allem Pipapo, herzallerliebst, sag ich Dir...
Musste kurz die Suche konsultieren. War das die Frage mit den Batch-files?
Freut mich, dass es geklappt hat!
Viele Grüsse
Philipp
Hallo,
:-)
Aber das "lahme CGI" lassen wir mal weg! - Ist IMHO sogar schnell :-)
Ich brauchte halt dringend eine 3-Minuten-Ausrede...
Musste kurz die Suche konsultieren. War das die Frage mit den Batch-files?
Das auch, ich meinte aber http://forum.de.selfhtml.org/archiv/2003/2/38626.
Svens Konzept klang zwar bombensicher, aber so sicher brauchte ich es im Endeffekt nicht, sodass ich auf Deine Loesung zurueckgekommen bin.
Dieter
Hallo,
Es gibt bei Deiner Abfrage immer ein $result, da $esult nur ein Resource-Pointer ist (eine Art Link, sagen wir mal). Wenn Du hinzufuegst
$data = mysql_fetch_array($result), dann enthaelt $data die erste Zeile des Resultats.
Demnach kannst Du sagen :
if ($data['allg_auftragsnummer']) {....
um zu erreichen, dass nur etwas passiert, wenn tatsaechlich Daten/keine Daten vorhanden sind.
Dieter
Hi,
$result = mysql_query("SELECT allg_auftragsnummer FROM arbeitsauftraege_edv WHERE allg_auftragsnummer=$allg_auftragsnummer");
Hier musst Du noch die Anzahl an zeilen auswerten. Result gibt nur false zurück wenn die Abfrage einen Fehler enthält. Wenn kein Datansatz vorhanden ist, hat result trotzdem eine ID.
$count = zählfunktion($result) //ich glaube numrows()
if($count)
{
echo "Nummer schon vorhanden";
}
else
{
// Eintrag in die DB
}
?>
ciao
romy