MYSQL:mysql_fetch_array(), mysql_num_rows()

kabba

Grünschnabel
Hallo,

ich möchte gerne eine Abfrage schreiben, bei der man die Möglichkeit hat, zwei Zahlen einzugeben. Diese dienen bei der Abfrage als Untergrenze bzw. Obergrenze für das Feld gehalt.
Die Inhalte der beiden Eingabefelder stehen dem PHP-Programm nach dem Absenden zur Verfügung.
Hier das PHP-Programm:
Code:
<?php
//verbindungsdaten
$dbHost="localhost";
$dbName="firma";
$dbUser="root";
$dbPass="";

//verbindung zum datenbankserver
$dbHandle=@mysql_connect($dbHost,$dbUser,$dbPass)
or die("keine verbindung möglich.keine verbindung hergestellt");

//datenbank auswählen
$selectdb=@mysql_selectdb($dbName, $dbHandle)
or die("diese datenbank konnte nicht gefunden werden");

//$result= mysql_query("select name, gehalt from personen where gehalt >= $ug and gehalt <= $og order by gehalt");

$sqlab ="select name,gehalt from personen";
$sqlab .="where gehalt >= $ug and gehalt <= $og]";
$sqlab .= "order by gehalt";
//$result=mysql_query("select name,gehalt from personen where gehalt >= " . $_POST['ug'] .  "and gehalt <= " . $_POST['og']);
  if (!$sqlab) {
  printf("<p> fehler:%d -- %s</p>\n", mysql_errno(),
  htmlentities(mysql_error()));
  }
$num=mysql_num_rows($sqlab);  //zeile 28
if ($num==0) echo "keine passenden datensätze gefunden";
while ($dsatz=mysql_fetch_array($sqlab))  //zeile 30
{
echo $dsatz["name"] . "," . $dsatz["gehalt"] . "<br>";
}
?>

Nun bekomme ich allerdings folgende Fehlermeldung:

Code:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\Programme\xampp\htdocs\aufg8.php on line 28

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\Programme\xampp\htdocs\aufg8.php on line 30

mysql_num_rows() soll ja nur die Anzahl der Datensätze liefern.
mysql_fetch_array() liefert den Datensatz in Form eines assoziativen Arrays.
Doch ich finde den Fehler in dem Code nicht.
Ich komme da einfach nicht weiter, fand in der Literatur nichts, was mich hätte weiterbringen können. :(
Hätte jemand eine Idee/ Einfall woran das liegen könnte?
Wie man wohl merkt, bin ich noch ein ziemlicher Grünschnabel :-(
 
Kannst du vielleicht mal den kompletten SQL-String ausgeben? Das wäre einfacher als jetzt den ganzen String selber rauszusuchen.
 
Also dies

Code:
$sqlab="select name,gehalt from personen where gehalt >= $ug and gehalt <= $og order by gehalt";
klappt nicht.

Dann mit
Code:
$sqlab="select name,gehalt from personen where gehalt >=" . $_POST["ug"] . "and gehalt <= " . $_POST["og"] . "order by gehalt";
versucht, klappt aber auch nicht.

Aber mit
Code:
$sqlab="select name,gehalt from personen where gehalt >=" . $_POST["ug"];
klappt es, indem ich einfach einen Teil des oberen Strings weg gelassen habe.
Sehe aber im weg gelassenen Teil keine Fehler.
Das wäre dieser hier:
Code:
$sqlab= . "and gehalt <= " . $_POST["og"] . "order by gehalt";

Das ist zum Haare raufen :confused:
Hat jemand einen Verbesserungsvorschlag?
 
Ich meinte das du den kompletten String inklusive Werte ausgeben lassen sollst.
Ändere mal deine Zeile
PHP:
htmlentities(mysql_error()));
in
PHP:
htmlentities(mysql_error().$sqlab));
um. Dann siehst du was für eine Abfrage abgeschickt wird.
Aber ich glaube es liegt an fehlenden Leerzeichen
Deine SQL Abfrage
PHP:
$sqlab="select name,gehalt from personen where gehalt >=" . $_POST["ug"] . "and gehalt <= " . $_POST["og"] . "order by gehalt";
Wenn ich nicht täusche dürfte dann sowas wie
select name,gehalt from personen where gehalt >=1000and gehalt <=1500order by ehalt
dastehen. Das funktioniert natürlich nicht.
 
Zurück