2.1k Aufrufe
Gefragt in Skripte(PHP,ASP,Perl...) von novator Mitglied (121 Punkte)
Hi,
vielleicht habe ich mit dieser Frage mehr Glück ;-):

Ich möchte mittels Formular Lieferanten in eine Tabelle eintragen.
Falls der Lieferant bereits vorhanden ist, soll eine Meldung ausgegeben werden, andernfalls soll er eingetragen werden.
Mein Code sieht so aus:

<?php
if (isset($_POST["gesendet"]))
{
include "connect.inc.php";
$sql = "select * from lieferant where (name = ".$_POST['name'].")";
$res = mysql_query($sql);

if (mysql_num_rows($res) == 1)
{
echo "der Lieferant ist schon vorhanden";
}
else
{
$sqlab = "insert lieferant" . "(name) values " . "('" . $_POST["name"] . "')";
mysql_query($sqlab);
}
}
?>

Wenn ich nun einen neuen Lieferanten anlege, wird er eingetragen und es kommt folgende fehlermeldung:
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\.....Dateiname.php on line 8

Wenn ich einen Lieferanten eintrage, den es schon gibt, passiert gar nichts.

Ich hoffe auf eure Hilfe.

Vielen Dank im Voraus.
lg

4 Antworten

0 Punkte
Beantwortet von novator Mitglied (121 Punkte)
habs jetzt glaube ich ein wenig eleganter,
aber das Ergebenis ist immer noch das Gleiche:

<?php
if (isset($_POST["gesendet"]))
{
include "connect.inc.php";
$res = mysql_query ("select * from lieferant where name = (".$_POST['name'].")");
$num = mysql_num_rows($res);

if ($num == 0)
{
$sqlab = "insert lieferant" . "(name) values " . "('" . $_POST["name"] . "')";
mysql_query($sqlab);
}
else
{
echo "der Lieferant ist schon vorhanden";
}
}
?>

bitte um einen Tip!
Vielen Dank
lg
0 Punkte
Beantwortet von kicia Mitglied (939 Punkte)
Ich kann da spontan auch nichts entdecken, kenne mich mit mysql aber auch nicht so aus.

Ich würd mir mal Typ und Wert von $res und $num ausgeben lassen.
Dann ganz systematisch schritt für schritt nachvollziehen, welche funktion welchen typ erwartet und welchen bekommt.

Dazu auch:
php.net/manual/de/function.mysql-num-rows.php
php.net/manual/de/function.mysql-query.php
0 Punkte
Beantwortet von novator Mitglied (121 Punkte)
Hi,
vielen Dank für deine Antwort.
Ich habe den Fehler gefunden. Ob das obige Script Funktioniert hätte, kann ich jetzt nicht mehr sagen. Ich war nämlich so klug und hab im Formular den falschen Namen mitgegeben (statt lieferant habe ich lieferanten geschrieben ;-(
Nachdem ich ich zwei Tage über diesem Code gebrütet und zwanzig verschiedene Varianten ausprobiert habe, bin ich dann doch auf die Idee gekommen, das Formular zu prüfen.

Es funktioniert jedenfalls mit folgendem Code:


if (isset($_POST["gesendet"]))
{
connect();

$name = $_POST["name"];
$name = mysql_real_escape_string($name);

$sqlab = "SELECT name from lieferant where name like ('".$name."')";
$res = mysql_query($sqlab);
$num = mysql_num_rows($res);

if ($num == 0)
{
$sqlab = "insert lieferant" . "(name) values " . "('".$name."')";
mysql_query($sqlab);
echo "Der neue Lieferant wurde angelegt";
}
else
{
echo "der Lieferant ist schon vorhanden";
}
}
}


Danke auch für die Links, werde ich mir trotzdem reinziehen, ich stehe immer noch weit am Anfang (ich glaub, das schreib ich mir bald in die Signatur ;-).

lg
0 Punkte
Beantwortet von novator Mitglied (121 Punkte)
...ach ja,

wär super nett, wenn mir jemand ein Feedback geben könnte, ob die mysql_real_escape_string-Sache richtig umgesetzt ist :-)

vielen Dank
lg
...