[GastForen Programmierung/Entwicklung PHP und MySQL Fehler bei: suchen eines Eintrages

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

Fehler bei: suchen eines Eintrages

xampp
Beiträge gesamt: 113

17. Feb 2007, 21:52
Beitrag # 1 von 7
Bewertung:
(2000 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, ich habe ein riesen Problem, beim suchen eines eintrages im gästebuch.
=> ich finde hier trotz überprüfung der kontaktaufnahme keinen fehler?

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\Dokumente und Einstellungen\admin\Desktop\xampp\htdocs\neugast.php on line 156
Es sind leider keine Daten vorhanden
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\Dokumente und Einstellungen\admin\Desktop\xampp\htdocs\neugast.php on line 165

=> zumal ich den Block zur Kontaktaufnahme einfach kopiert habe, alles war richtig!

=> und beim ersten mal, der suchabfrage, kam eine leere Seite, das Suchwort habe ich ebenfalls richtig geschrieben!

if($_POST["go"]== "absenden") {
$server= "localhost";

$user= "pma";
$pass= '';
$db= "versuch";
$verbinden= mysql_connect($server, $user, $pass);
mysql_select_db($db, $verbinden);
//sql - string an die gewünschte Tabelle absetzen
$sql= 'INSERT INTO versuchen(name, email, meinung) values (
"'.$_POST["name"].'",
"'.$_POST["email"].'",
"'.$_POST["meinung"].'"
)';
$result= mysql_query($sql);
if($result) {
echo 'Wier bedanken uns für Ihren Eintrag!';
}
else {
echo 'Ihr Eintrag konnte ins Gästebuch nicht abgesendet werden!';
}
echo' <br><br><a href= " '.$PHP_SELF.' "> Neu Starten!></a>';
}

//gästebuch lesen
if($_POST["go"]== "lesen") {
$server= "localhost";
$user= "pma";
$pass= '';
$db= "versuch";
$verbinden= mysql_connect($server, $user, $pass);
mysql_select_db ($db, $verbinden);
$sql= 'select * from versuchen';
$result= mysql_query($sql);
//ermitteln von daten
$anzahl= mysql_num_rows($result);
switch($anzahl) {
case"0":
echo' Es sind leider keine Daten vorhanden '; break;
case"1":
echo' Es ist 1 Datensatz vorhanden '; break;
default:echo'Es sind insgesamt '.$anzahl.' vorhanden'; break;
}

//Ergebnis in ein array schreiben und ausgeben
while($zeile= mysql_fetch_array($result)) {
echo' Nr.: '.$zeile[0].' <br> ';
echo' Name: '.$zeile[1].' <br> ';
echo' eMail: '.$zeile[2].' <br> ';
echo' Meinung: '.$zeile[3].' <br> ';
echo' <hr> ';
}
echo' <br><br><a href= " '.$PHP_SELF.' "> Neu Starten!</a>';
}

if($_POST["go"] == "suchen") {
echo'
<form action= " '.$PHP_SELF.' " method= "POST">
<table border= "0">
Bitte geben sie ein oder mehrere Stichworte ein!
<tr>
<td>Name:</td>
<td><input type= "text" name="sname" size= "34"></td>
</tr>

<tr>
<td>eMail:</td>
<td><input type= "text" name= "semail" size= "34"></td>
</tr>

<tr>
<td>Eintrag:</td>
<td><textarea name= "smeinung" cols= "25" rows= "10"></textarea></td>
</tr>

<tr>

<td>&nbsp;</td>

<td>
<input type= "submit" name= "go" value= "suchen!">
<input type= "reset" name= "go" value= "abbrechen">
</td>

</tr>
</table>
</form>
';
}

//Kontakt mit dem Server und der Datenbank
if($_POST["go"]== "suchen!") {
$server= "localhost";
$user= "pma";
$pass= '';
$db= "versuch";
$verbinden= mysql_connect($server, $user, $pass);
mysql_select_db ($db, $verbinden);

$sql= 'SELECT * from versuchen WHERE';
$sql.= 'name LIKE "% '.$_POST["sname"].' %" AND';
$sql.= 'email LIKE "% '.$_POST["semail"].' %" AND';
$sql.= 'meinung LIKE "% '.$_POST["smeinung"].' %" ';
$result= mysql_query($sql);

//ermitteln von daten
$anzahl= mysql_num_rows($result);
switch($anzahl) {
case"0":
echo' Es sind leider keine Daten vorhanden '; break;
case"1":
echo' Es ist 1 Datensatz vorhanden '; break;
default:echo'Es sind insgesamt '.$anzahl.' vorhanden'; break;
}
//Ergebnis in ein array schreiben und ausgeben
while($zeile= mysql_fetch_array($result)) {
echo' Nr.: '.$zeile[0].' <br> ';
echo' Name: '.$zeile[1].' <br> ';
echo' eMail: '.$zeile[2].' <br> ';
echo' Meinung: '.$zeile[3].' <br> ';
echo' <hr> ';
}

=> ich brauche dringend eure hilfe ich verzweifle noch!
X

Fehler bei: suchen eines Eintrages

Ollli
Beiträge gesamt: 458

17. Feb 2007, 22:36
Beitrag # 2 von 7
Beitrag ID: #277021
Bewertung:
(1990 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo xampp,

Zitat $sql= 'SELECT * from versuchen WHERE';
$sql.= 'name LIKE "% '.$_POST["sname"].' %" AND';
$sql.= 'email LIKE "% '.$_POST["semail"].' %" AND';
$sql.= 'meinung LIKE "% '.$_POST["smeinung"].' %" ';


Ich glaube, da fehlt je ein Leerzeichen hinter "WHERE" und den beiden "AND"s.

Wenn du mit Formulardaten und Datenbanken arbeitest, beachte bitte immer das escapen der kritischen Zeichen oder besser noch: setze eine Whitelistprüfung ein, zum Beispiel nur Buchstaben und Zahlen erlauben.

Auf http://www.php-sicherheit.de kannst du zum Beispiel Hinweise dazu finden. Alternativ kannst du nach SQL-Injection suchen.


als Antwort auf: [#277019]

Fehler bei: suchen eines Eintrages

xampp
Beiträge gesamt: 113

18. Feb 2007, 00:53
Beitrag # 3 von 7
Beitrag ID: #277026
Bewertung:
(1978 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Vielen Dank,
=> aber leider liegt es nicht daran (ich habe nämlich schon Leerzeichen gesetzt)

=> ich habe sämtliche Überprüfungen in Hinsicht auf die Fuktion mysql_num_rows() und der Funktion mysql_fetch_array() gemacht. Alles richtig!
Datenbank richtig gewählt
Kontaktaufnahme mit server richtig
Argumente richtig
Setzen der sql-strings richtig
bedingung der switch-abfrage richtig
=> also alles was damit zu tun haben könnte war richtig!

hier nochmal der komplette Code:

//Menü erstellen, erscheint ohne Menü durch zweiten Skriptaufruf
if($_POST["go"]=="") {
echo'
<form action= " ", method= "POST">
Hier finden sie das Menü zum Gästebuch:
Einträge ins Gästebuch
<input type= "submit" name="go" value= "eintragen">
Hier können Sie ihre Beiträge bearbeiten:
<input type= "submit" name= "go" value= "bearbeiten">
Hier können Sie sämtliche Einträge lesen
<input type= "submit" name= "go" value= "lesen">
Nach Einträgen suchen:
<input type= "submit" name= "go" value= "suchen">
';
}
//Formular erstellen, aufrufen des Skriptes durch die Schaltfläche eintragen
if($_POST["go"]== "eintragen") {
echo'
<form action= " '.$PHP_SELF.' " method= "POST">
<table border= "0">

<tr>
<td>Ihren Namen:</td>
<td><input type= "text" name="name" size= "34"></td>
</tr>

<tr>
<td>Ihre eMail:</td>
<td><input type= "text" name= "email" size= "34"></td>
</tr>

<tr>
<td>Ihr Eintrag:</td>
<td><textarea name= "meinung" cols= "25" rows= "10"></textarea></td>
</tr>

<tr>

<td>&nbsp;</td>

<td>
<input type= "submit" name= "go" value= "absenden">
<input type= "reset" name= "go" value= "abbrechen">
</td>

</tr>
</table>
</form>
';
}
//mittels submit Buton Eintrag in die Datenbank schreiben , Kontakt mit dem Server und der Datenbank ohne Auswahl einer Tabelle wegen Kontakt zur kompletten Datenbank
if($_POST["go"]== "absenden") {
$server= "localhost";
$user= "pma";
$pass= '';
$db= "versuch";
$verbinden= mysql_connect($server, $user, $pass);
mysql_select_db($db, $verbinden);

//sql - string an die gewünschte Tabelle absetzen
$sql= 'INSERT INTO versuchen(name, email, meinung) values (
"'.$_POST["name"].'",
"'.$_POST["email"].'",
"'.$_POST["meinung"].'"
)';
$result= mysql_query($sql);
if($result) {
echo 'Wier bedanken uns für Ihren Eintrag!';
}
else {
echo 'Ihr Eintrag konnte ins Gästebuch nicht abgesendet werden!';
}
echo' <br><br><a href= " '.$PHP_SELF.' "> Neu Starten!></a>';
}

//gästebuch lesen
if($_POST["go"]== "lesen") {
$server= "localhost";
$user= "pma";
$pass= '';
$db= "versuch";
$verbinden= mysql_connect($server, $user, $pass);
mysql_select_db ($db, $verbinden);
$sql= 'select * from versuchen';
$result= mysql_query($sql);

//ermitteln von daten
$anzahl= mysql_num_rows($result);
switch($anzahl) {
case"0":
echo' Es sind leider keine Daten vorhanden '; break;
case"1":
echo' Es ist 1 Datensatz vorhanden '; break;
default:echo'Es sind insgesamt '.$anzahl.' vorhanden'; break;
}

//Ergebnis in ein array schreiben und ausgeben
while($zeile= mysql_fetch_array($result)) {
echo' Nr.: '.$zeile[0].' <br> ';
echo' Name: '.$zeile[1].' <br> ';
echo' eMail: '.$zeile[2].' <br> ';
echo' Meinung: '.$zeile[3].' <br> ';
echo' <hr> ';
}
echo' <br><br><a href= " '.$PHP_SELF.' "> Neu Starten!</a>';
}
if($_POST["go"] == "suchen") {
echo'
<form action= " '.$PHP_SELF.' " method= "POST">
<table border= "0">
Bitte geben sie ein oder mehrere Stichworte ein!
<tr>
<td>Name:</td>
<td><input type= "text" name="sname" size= "34"></td>
</tr>

<tr>
<td>eMail:</td>
<td><input type= "text" name= "semail" size= "34"></td>
</tr>

<tr>
<td>Eintrag:</td>
<td><textarea name= "smeinung" cols= "25" rows= "10"></textarea></td>
</tr>

<tr>

<td>&nbsp;</td>

<td>
<input type= "submit" name= "go" value= "suchen!">
<input type= "reset" name= "go" value= "abbrechen">
</td>

</tr>
</table>
</form>
';
}

//Kontakt mit dem Server und der Datenbank
if($_POST["go"]== "suchen!") {
$server= "localhost";
$user= "pma";
$pass= '';
$db= "versuch";
$verbinden= mysql_connect($server, $user, $pass);
mysql_select_db ($db, $verbinden);
$sql= 'SELECT * from versuchen WHERE';
$sql.= 'name LIKE "%'.$_POST["sname"].'%" AND';
$sql.= 'email LIKE "%'.$_POST["semail"].'%" AND';
$sql.= 'meinung LIKE "%'.$_POST["smeinung"].'% "';
$result= mysql_query($sql);

//ermitteln von daten
$anzahl= mysql_num_rows($result);
switch($anzahl) {
case"0":
echo' Es sind leider keine Daten vorhanden '; break;
case"1":
echo' Es ist 1 Datensatz vorhanden '; break;
default:echo'Es sind insgesamt '.$anzahl.' vorhanden'; break;
}

//Ergebnis in ein array schreiben und ausgeben
while($zeile= mysql_fetch_array($result)) {
echo' Nr.: '.$zeile[0].' <br> ';
echo' Name: '.$zeile[1].' <br> ';
echo' eMail: '.$zeile[2].' <br> ';
echo' Meinung: '.$zeile[3].' <br> ';
echo' <hr> ';
}
}

?>

</body>
</html>


als Antwort auf: [#277021]

Fehler bei: suchen eines Eintrages

Ollli
Beiträge gesamt: 458

18. Feb 2007, 10:01
Beitrag # 4 von 7
Beitrag ID: #277035
Bewertung:
(1962 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Zitat $sql= 'SELECT * from versuchen WHERE';
$sql.= 'name LIKE "%'.$_POST["sname"].'%" AND';
$sql.= 'email LIKE "%'.$_POST["semail"].'%" AND';
$sql.= 'meinung LIKE "%'.$_POST["smeinung"].'% "';
$result= mysql_query($sql);


Da fehlen immernoch die leerzeichen hinter WHERE und den beiden ANDs :-?

Oder ist es nun ein anderer Fehler? Wenn dein switch erfolgreich durchläuft, dann dürfte es ja auch keinen Fehler mehr geben, oder?


als Antwort auf: [#277026]

Fehler bei: suchen eines Eintrages

xampp
Beiträge gesamt: 113

18. Feb 2007, 11:37
Beitrag # 5 von 7
Beitrag ID: #277041
Bewertung:
(1956 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hallo ich habe die lerrzeichen gesetzt.
SELECT * from versuchen WHERE name LIKE "% %" AND email LIKE "% %" AND meinung LIKE "% %"

aber trotzdem kommt eine Fehlermeldung:
Resource id #3 Es sind leider keine Daten vorhanden
=> Die sql -Anweisung habe ich in phpMyAdmin ausgeführt, es liegt an der ANweisung => ich konnte aber keinen Fehler finden!


als Antwort auf: [#277035]

Fehler bei: suchen eines Eintrages

Ollli
Beiträge gesamt: 458

18. Feb 2007, 12:46
Beitrag # 6 von 7
Beitrag ID: #277048
Bewertung:
(1951 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Zitat SELECT * from versuchen WHERE name LIKE "% %" AND email LIKE "% %" AND meinung LIKE "% %"


Ist das ein durch dein Programm erstelltes Query oder hast du das selbst per Hand so im phpMyAdmin eingegeben?

Bei diesem Query ist vermutlich /email LIKE "% %"/ der Datenbrecher, da es eigentlich keine Mail-Adressen mit Leerzeichen gibt.

Dein Query ohne irgendeine Eingabe von Name, Mail oder Meinung sollte zum Schluss so aussehen:
Code
SELECT * from versuchen WHERE name LIKE "%%" AND email LIKE "%%" AND meinung LIKE "%%" 


Nochmal zum alten Problem:

Zitat $sql= 'SELECT * from versuchen WHERE';
$sql.= 'name LIKE "%'.$_POST["sname"].'%" AND';
$sql.= 'email LIKE "%'.$_POST["semail"].'%" AND';
$sql.= 'meinung LIKE "%'.$_POST["smeinung"].'%"';
$result= mysql_query($sql);


Ich meinte, dass HIER die Leerzeichen _hinter_ WHERE und AND fehlen und so ein ungültiges Query rauskommt.

so sollte es aussehen:
Code
$sql= 'SELECT * from versuchen WHERE ';  
$sql.= 'name LIKE "%'.$_POST["sname"].'%" AND ';
$sql.= 'email LIKE "%'.$_POST["semail"].'%" AND ';
$sql.= 'meinung LIKE "%'.$_POST["smeinung"].'%"';
$result= mysql_query($sql);



als Antwort auf: [#277041]

Fehler bei: suchen eines Eintrages

Bitfilme
Beiträge gesamt: 264

18. Feb 2007, 15:03
Beitrag # 7 von 7
Beitrag ID: #277067
Bewertung:
(1946 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen!
Grundsätzlich würde ich mit diesem Abfragesystem abraten. Da verliert man schnell mal die Übersicht. Einfacher ist es mit dem doppelten Hochkomma die Sache in den begriff zu bekommen.
Also so:
Code
$sql = "SELECT * FROM versuchen WHERE "; 
$sql .= "name LIKE '%".$_POST["sname"]."%' AND ";
$sql .= "email LIKE '%".$_POST["semail"]."%' AND ";
$sql .= "meinung LIKE '%".$_POST["smeinung"]."%'";
$result= mysql_query($sql);

if (mysql_num_rows($result) > 0){
echo 'Ein Ergenis gefunden';
}else{
echo 'Kein Ergebnis gefunden';
}

Ist doch viel übersichtlicher so oder?

Und wenn ich schon dabei bin die Variante 2:
Code
$sql = "SELECT * from versuchen WHERE "   
. "name LIKE '%".$_POST["sname"]."%' AND "
. "email LIKE '%".$_POST["semail"]."%' AND "
. "meinung LIKE '%".$_POST["smeinung"]."%'";
$result= mysql_query($sql);

if (mysql_num_rows($result) > 0){
echo 'Ein Ergenis gefunden';
}else{
echo 'Kein Ergebnis gefunden';
}

Ein unsauberer Code verwirrt oftmals und führt zur Unübersichtlichkeit.


als Antwort auf: [#277048]
X

Aktuell

PDF / Print
Wolken_300

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
01.12.2022

Online
Donnerstag, 01. Dez. 2022, 10.00 - 10.45 Uhr

Webinar

Die drei ColorLogic-Programme ZePrA, CoPrA und ColorAnt sind in neuen Versionen mit vielen neuen Funktionen im Jahr 2022 veröffentlich worden oder werden in Kürze veröffentlicht (ColorAnt 9). In unserem ca. 45 minütigen kostenlosen Webinar zeigen wir Ihnen einige dieser neuen Funktionen mit dem Schwerpunkt auf Automatisierung und Produktivitätssteigerungen.

Ja

Organisator: Impressed GmbH

Kontaktinformation: Silvia Noack, E-Mailsnoack AT impressed DOT de

https://www.impressed.de/schulung.php?c=sDetail&sid=311

ColorLogic Update-Webinar ZePrA 10, CoPrA 9 und ColorAnt 9
Veranstaltungen
02.02.2023

Prozesse optimieren und effizient gestalten

Zürich
Donnerstag, 02. Feb. 2023, 08.00 - 10.00 Uhr

Digitalisierung, Webauftritt

Digitalisierung mitgestalten - Worauf kommt es an? Wie wichtig ist die Webseite? Webseite mit Word Press? Interne Prozesse optimieren

Ja

Organisator: B. Isik - SNF Academy

Kontaktinformation: Birol Isik, E-Mailinfo AT bkcc DOT ch

https://digitalisierung-heute.ch/digitalisierung-informationstag-schweiz/