• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Teilmenge aus mySQL-DB ausgeben in html

Status
Für weitere Antworten geschlossen.

emw

Neues Mitglied
Hallo,

habe mit meinem Code folgendes Problem: Lese aus mySQL-Tabelle (bei Strato) Daten aus und will sie über ein Suchformular ausgewählt - dann im PHP-Formular ausgeben.

Alle ausgeben, egal wie selektiert funktioniert - aber folgende Meldung kommt bei meinem Code, wenn ich z.B. einen Namen auswähle, dessen Adressdaten dann auszugeben wären:

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /mnt/web5/21/96/5503996/htdocs/emwtest/04mitglieder_4select.php on line 184

Jetzt der Code:

PHP:
.....
 $connection=mysql_connect($mysqlhost, $mysqluser, $mysqlpwd) or die
   ("Verbindungsversuch fehlgeschlagen");
  
  mysql_select_db($mysqldb, $connection) or die("Konnte die Datenbank nicht waehlen."); 

  $name = $_POST["Name"];
  //echo $name;
     
  //Abfrage nach dem Feld Name - wenn Leer, dann....:
  if ($_POST["Name"] == "") {
  echo "leer wird zurückgegeben";
  }
  else
     {
     echo $name;
     }
  
  $abfrage = "SELECT Anrede, Titel, Name, Vorname, Straße, Plz, Ort, Vorwahl, Rufnummer, Fachrichtung FROM verzeichnis 
      where Name = $name";
  
  $ergebnis = mysql_query($abfrage);
   
  while($row = mysql_fetch_object($ergebnis))
     {
     echo "$row->Titel, $row->Name, $row->Vorname , $row->Straße, $row->Plz , $row->Ort <br>";
     }
.....
 ?>

ich habe die "where Name = $name" getauscht um "where Name = 'Test'"
Dann funktionierts.

Was hab ich mit der Variablen (für Text) falsch gemacht??

Hoffe ich hab mich einigermaßen verständlich ausgedrückt

gruss

emw
 
Hey emw,

Dein Problem ist ein ganz simples, glücklicher Weise.

Bei einem String als Vergleich erwartet SQL ein ' zum escapen. Bei anderen Datentypen kann man das weglassen, bei einem String eben nicht.

Also einfach:
Code:
SELECT Anrede, Titel, Name, Vorname, Straße, Plz, Ort, Vorwahl, Rufnummer, Fachrichtung FROM verzeichnis 
      where Name = '$name'
Du kannst dir auch mit
Code:
mysql_query("Bla") or die(mysql_error());
den Fehler ausgeben lassen.

Gruß
Voodoo
 
Hallo

und herzlichen Dank - das wars!

Noch eine Frage zu meinem Forumlar:

Jetzt funktioniert das Script so, dass ich, bei Eingabe eines gültigen Namens die Adresse dieses Mitglieds in meinem PHP-Script bekomme - aber:
Was könnte ich machen, um z.B. alle Mitglieder, die mit A beginnen ausgeben möchte - statt Name = '$name' - was verwenden??

und, wenn ich zusätzlich zum Namen beispielsweise auch noch die PLZ oder einen Teil davon als und / oder verwenden möchte - gibts dazu irgendwo ein passendes Beispiel??

gruss

emw
 
Ach bevor mir noch jemand den Kopf abreißt:

Bitte benutz mysql_real_escape_string() um ungewollten Befehlen durch User vorzubeugen.

Und zu deinem anderen Problem
Code:
SELECT Autor, Buchtitel FROM Buecher WHERE Buchtitel LIKE '%Geld%';
Durch die % wird klar gemacht, dass sowohl davor, wie auch danach noch andere Zeichen in der Spalte vorkommen dürfen.
So eine Abfrage ist allerdings ziemlich Performance-lastig (oder von einigen hier auch performant genannt^^)

Gruß
Voodoo
 
Hallo,

Like klappt prima, hoffe, ich vergess das mit dem Code nicht gleich wieder! Werde mich bemühen!

Jetzt nochmals die Frage, wie kriege ich es hin, über die Suchfunktion sowohl über den Namen als auch z.B. über Ort oder PLZ mit und/oder
zu verbinden??

gruss

emw
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben