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

Fehler in der Syntax?

Status
Für weitere Antworten geschlossen.

MadMax777

Neues Mitglied
Hallo,

ich hab ein Problem mit nem PHP-Code.
Und kann den Fehler nicht entdecken.

Folgende Fehlermeldung wird ausgegeben: Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource

Vielen Dank für eure Hilfe
MadMax777

[php:1:7431e65a52]<?php
echo $s_name;
echo $s_email;
echo $name;
echo $email;
$host = "localhost";
$passwort = "xxx";
$benutzername = "xxx";
$datenbank = "xxx";
$db = mysql_connect($host,$benutzername,$passwort);
mysql_select_db($datenbank,$db);
if (!$db) {
echo "Fehler: Es konnte leider keine Verbindung zum Gästebuch hergestellt werden!\n";
exit;
}
$sql = "select * from Gaestebuch where Name like '%$name%' and EMail like '%$email%'";
if ($s_name = "ja") {
$sql = $sql + "order by Name";
}
if ($s_email = "ja") {
$sql = $sql + "order by EMail";
}
$ergebnis = mysql_query($sql,$db);
echo "<table width='100%' border='1'>\n";
while($row = mysql_fetch_object($ergebnis))
{
echo "<tr>\n";
echo "<td>", $row->Name, "", $row->EMail, "</td>\n";
echo "<td>
", $row->Text, "</br></td>\n";
echo "</tr>\n";
}
echo "</table>\n";
mysql_free_result($ergebnis);
mysql_close($db);
?>[/php:1:7431e65a52]
 
Werbung:
was ist denn der fehler?

mfg, fätzminator

PS: kannst du hier bitte schnell die tabulatoren oder leerzeichen rausnehmen, dass es jeder DAU lesen kann?
 
like darf höchstens einmal vorkommen ersetzt es einfach durch = dann sollte es funktionieren...
 
Werbung:
Prophet schrieb:
like darf höchstens einmal vorkommen ersetzt es einfach durch = dann sollte es funktionieren...

Das Problem schien doch nicht die beiden likes zu sein, sondern die u.a. Zeilen sind das Problem.

Vielen Dank Prophet.

[php:1:f4694e3f6c]<?php
if ($s_name = "ja") {
$sql = $sql + "order by Name";
}
if ($s_email = "ja") {
$sql = $sql + "order by EMail";
}
?>[/php:1:f4694e3f6c]
 
zu einem order befehl gehören immer zwei werte:

Code:
ORDER BY [spaltenname] [sortierung]

[sortierung] := ASC | DESC
[splatenname] := "Name einer Spalte"
 
Werbung:
Prophet schrieb:
zu einem order befehl gehören immer zwei werte:

Code:
ORDER BY [spaltenname] [sortierung]

[sortierung] := ASC | DESC
[splatenname] := "Name einer Spalte"

Das Stimmt so nicht zu 100% :)

Bei MySQL ist es wohl so wie du es sagst, das weiß ich nicht genau. Aber ob man immer beides angeben muss hängt vom DBMS ab. Bei Oracle und Sybase z.B. muss man nur DESC, wenn mans haben möchte, angeben ASC entfällt. Das als kleiner Wissenaustausch. :)

Die Sache ist allerdings die, dass Aufgrund der Bedingung If nicht erfüllt ist. Und somit gar nicht das order by in diesem Fall zutragen kommt. Weil die beiden Variable s_name und s_email den Wert "nein" haben. Oder ist vielleicht die Bedingung der If-Abfrage falsch. Kenn mich leider mit PHP noch nicht so gut aus. Hatte mir auch überlegt ob der Link vielleicht falsch sein könnte. Der Link lautet wiefolgt.

Code:
<a href="../gaestebuch1.php?s_name=nein+s_email=nein">

Noch als kurzer Nachtrag.
Hab das natürlich Probiert, wie die du geschrieben hast Prophet, nur leider kam wieder die selbe Fehlermeldung wie zu anfang.
Hab das einmal mit ASC und einmal DESC ausprobiert.

[php:1:579363102d]<?php
$sql = "select * from Gaestebuch where Name like '%$name%' and EMail like '%$email%'";
if ($s_name = "ja") {
$sql = $sql + "order by Name DESC";
}
if ($s_email = "ja") {
$sql = $sql + "order by EMail DESC";
}
?>[/php:1:579363102d]

mfg
MadMax777
 
MadMax777, Prophet meint mit "2 Werten" Spaltenname und Sortierungsart, nicht 2 Werte in der Sortierungsart.

Beispiel zur Verdeutlichung:
Code:
ORDER BY `id` DESC /* RICHTIG */
Code:
ORDER BY `id` ASC|DESC /* FALSCH */
 
ich wär zunächst mal für doppelte '=' zeichen bei der if-anweisung...
-.-'

kann's sein, dass n leerzeichen fehlt, wenn du das das 'order by...' direkt an die $email hängst?!

strings und variablen verknüpfe ich meist mit nem '.' *mhm...
vielleicht hilft dir aber bei den zuweisungen der link hier weiter (;
 
Werbung:
cOenesthesia schrieb:
ich wär zunächst mal für doppelte '=' zeichen bei der if-anweisung...
-.-'

kann's sein, dass n leerzeichen fehlt, wenn du das das 'order by...' direkt an die $email hängst?!

strings und variablen verknüpfe ich meist mit nem '.' *mhm...
vielleicht hilft dir aber bei den zuweisungen der link hier weiter (;

Das Problem mit dem PHP-Code scheint erstmal gelöst zusein. Es lag wohl doch an den 2 '='.
Vielen Dank cOenesthesia

zu
L.T.M schrieb:
MadMax777, Prophet meint mit "2 Werten" Spaltenname und Sortierungsart, nicht 2 Werte in der Sortierungsart.

Beispiel zur Verdeutlichung:
Code:
ORDER BY `id` DESC /* RICHTIG */
Code:
ORDER BY `id` ASC|DESC /* FALSCH */

Ich weiß :wink: Vielleicht hab mich undeutlich ausgedrückt. :wink:

Jetzt läuft es. Problem gelöst. Vielen Dank für eure unterstüzung.

mfg
MadMax777
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben