| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |

25-10-2009, 11:26
|
|
Ri4i
Registrierter Benutzer
|
|
Registriert seit: Jun 2009
Beiträge: 14
|
|
kleines Problemm bei meiner Topliste.
Hallo zusammen,
habe kleines Problemchen mit meiner Topliste, also wenn ein User eingeloggt ist dann Zeigt die liste so wie ich es wollte! Aber wenn User nicht eingeloggt ist und geht auf die liste dann wird so ein fehler angezeigt: "Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /www/...online6"
also die Zeile 6 ist irgendwie falsch!
und hier ist die aus PHP:
Zitat:
|
"$punkte=mysql_fetch_object(mysql_query("SELECT punkte_ges FROM profil WHERE id=$user_id"));"
|
Ich vermutte, dass ich was bei bzw nach "SELECT" schreiben soll, aber weiß nicht was genau! Habe schon bei google und co. geguckt nichts passendes gefunden! Würde mich über eure Hilfe sehr freuen.
Gruß
|

25-10-2009, 12:39
|
 |
onemorenerd
 Moderator
|
|
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
|
|
Wenn kein User eingeloggt ist, was ist dann $user_id?
|

25-10-2009, 16:28
|
|
Ri4i
Registrierter Benutzer
|
|
Registriert seit: Jun 2009
Beiträge: 14
|
|
Zitat:
Zitat von onemorenerd
Wenn kein User eingeloggt ist, was ist dann $user_id?
|
na id ist doch wenn User eingelogt ist!? oder...
eigentlich funktioniert alles sowie ich will nur mich stört halt wenn User nicht eingelogt ist dann wird diese DB Fehler angezeigt!:
PHP-Code:
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /www/htdocs/toptop/top.php on line 6
|

25-10-2009, 16:41
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Zitat:
Zitat von Ri4i
na id ist doch wenn User eingelogt ist!? oder...
|
Die Frage war, was diese Variable enthält, wenn der Nutzer nicht eingeloggt ist.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

25-10-2009, 16:50
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.309
|
|
Jetzt denk doch mal logisch. Wenn der User nicht eingeloggt ist, gibt es keine ID. Und wie sieht dann dein SQL-Statement aus? So:
PHP-Code:
SELECT punkte_ges FROM profil WHERE id=
Und das ist ein Syntax-Fehler!
Bau mal folgenden Code ein, dann siehst du es:
PHP-Code:
$res = mysql_query("SELECT punkte_ges FROM profil WHERE id=$user_id") or die(mysql_error());
Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
|

25-10-2009, 17:53
|
 |
fireweasel
Registrierter Benutzer
|
|
Registriert seit: Sep 2008
Ort: At home
Beiträge: 680
|
|
Zitat:
Zitat von Ri4i
... "Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /www/...online6"
also die Zeile 6 ist irgendwie falsch!
und hier ist die aus PHP:
PHP-Code:
$punkte=mysql_fetch_object(mysql_query("SELECT punkte_ges FROM profil WHERE id=$user_id"));
Ich vermutte, dass ich was bei bzw nach "SELECT" schreiben soll, aber weiß nicht was genau!
|
Falsch vermutet. Was lernen wir als erstes im Grundkurs Programmieren? Dass das Ergebnis einer Funktion auf Gültigkeit überprüft werden muss, bevor wir es der nächsten Funktion in den Hals stopfen. Also:
PHP-Code:
$result = mysql_query("SELECT punkte_ges FROM profil WHERE id=$user_id");
if (!is_resource($result)) {
die('Sch#@*, hat nicht geklappt');
}
$fo = mysql_fetch_object($result);
Die gleiche Vorgehensweise ist vor dem Aufruf von mysql_query() zu empfehlen. Du übergibst einen String, der die Variable $user_id auswertet. Wenn die einen unbrauchbaren Wert enthält oder gar nicht existiert, wird die als Leerstring "''" in deine(n) Query eingesetzt. Dann ist es auch kein Wunder, wenn mysql_query() kein Result-Set zurückgibt, sondern FALSE.
__________________
PHP-Code:
class Brick implements Throwable {
// ...
}
Geändert von fireweasel (25-10-2009 um 18:13 Uhr)
|

25-10-2009, 21:07
|
|
Ri4i
Registrierter Benutzer
|
|
Registriert seit: Jun 2009
Beiträge: 14
|
|
Leute ist doch alles das selbe. habe auch Probiert!
hier ist das ganze:
PHP-Code:
$punkte=mysql_fetch_object(mysql_query("SELECT punkte_ges FROM profil WHERE id=$user_id")); if($punkte->punkte_ges>=39500) $zahl=" LIMIT 100"; elseif($punkte->punkte_ges>=29500) $zahl=" LIMIT 30"; elseif($punkte->punkte_ges>=19500) $zahl=" LIMIT 28"; elseif($punkte->punkte_ges>=9300) $zahl=" LIMIT 26"; elseif($punkte->punkte_ges>=9300) $zahl=" LIMIT 24"; elseif($punkte->punkte_ges>=5500) $zahl=" LIMIT 22"; elseif($punkte->punkte_ges>=5000) $zahl=" LIMIT 20"; elseif($punkte->punkte_ges>=2200) $zahl=" LIMIT 18"; elseif($punkte->punkte_ges>=2200) $zahl=" LIMIT 16"; elseif($punkte->punkte_ges>=500) $zahl=" LIMIT 14"; elseif($punkte->punkte_ges>=500) $zahl=" LIMIT 12"; elseif($punkte->punkte_ges>=0) $zahl=" LIMIT 10"; } if (!isset($user_id)) $zahl=" LIMIT 10"; $top=mysql_query("SELECT * FROM `foto`, `profil` WHERE profil.id=foto.user_id AND profil.sex=$sex AND foto.vote>=100 AND foto.status=1 ORDER BY prozent DESC $zahl"); ?>
Wie kann ich denn diese fehler weg machen? sorry habe vielleicht nicht verstanden was sie genau meinen
|

25-10-2009, 21:10
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Zitat:
Zitat von Ri4i
habe auch Probiert!
|
Aber nicht logisch ...
PHP-Code:
if (!isset($user_id)) $zahl=" LIMIT 10";
$top=mysql_query("SELECT ...");
Wieso verwendest du die Variable $user_id vor diesen Zeilen schon - wenn du erst hier überprüfst, ob es sie überhaupt gibt?
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

26-10-2009, 19:14
|
|
Ri4i
Registrierter Benutzer
|
|
Registriert seit: Jun 2009
Beiträge: 14
|
|
Zitat:
Zitat von wahsaga
Aber nicht logisch ...
PHP-Code:
if (!isset($user_id)) $zahl=" LIMIT 10"; $top=mysql_query("SELECT ...");
Wieso verwendest du die Variable $user_id vor diesen Zeilen schon - wenn du erst hier überprüfst, ob es sie überhaupt gibt?
|
hmm irgendwas mache ich walsch! kommt immer selbe Ergebniss oder es geht garnix!
könnt mir vielleicht genaueren tipp geben
|

26-10-2009, 21:21
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.309
|
|
Zitat:
Zitat von Ri4i
könnt mir vielleicht genaueren tipp geben 
|
Hier gibt es nur Hilfe zur Selbsthilfe. Und keinen fertigen Code. Beherzige diese Ratschläge und du wirst den Fehler selber finden. Oder aber auf Ungereimten stoßen, bei denen wir dir gerne weiterhelfen.
Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
|

27-10-2009, 08:50
|
|
Ri4i
Registrierter Benutzer
|
|
Registriert seit: Jun 2009
Beiträge: 14
|
|
Zitat:
Zitat von Kropff
Hier gibt es nur Hilfe zur Selbsthilfe. Und keinen fertigen Code. Beherzige diese Ratschläge und du wirst den Fehler selber finden. Oder aber auf Ungereimten stoßen, bei denen wir dir gerne weiterhelfen.
Peter
|
hier Peter,
wenn ich mein Problemm selber finden will, dann benutze ich google! Das habe ich, das hat mir aber nicht weiter geholfen! Darum muss ich hier fragen! Wenn du nicht helfen willst dann las es! Verarschen kann ich mich auch selber!
Und was meinst du mit "Ungereimten stoßen"? Vielleicht habe ich mich Falsch ausgedruckt! Sorry. Das ist auch meine Ungereimtheit! Ich habe ja geschrieben wo ich fehler vermutte, und durch euren Antworten hat das sich hier bestätigt! Schööön)))
Das hat aber mein Fehler nicht weg gemacht! Ich habe ja auch versucht umzuschreiben, wird aber nicht besser! Bitte euch mir weiter zu helfen!
|

27-10-2009, 09:20
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.309
|
|
Zitat:
Zitat von Ri4i
wenn ich mein Problemm selber finden will, dann benutze ich google! Das habe ich, das hat mir aber nicht weiter geholfen! Darum muss ich hier fragen! Wenn du nicht helfen willst dann las es! Verarschen kann ich mich auch selber!
|
Verwarn!  Noch so eine Entgleisung und du bist weg vom Fenster.
Zitat:
Zitat von Ri4i
Und was meinst du mit "Ungereimten stoßen"? Vielleicht habe ich mich Falsch ausgedruckt! Sorry. Das ist auch meine Ungereimtheit! Ich habe ja geschrieben wo ich fehler vermutte, und durch euren Antworten hat das sich hier bestätigt! Schööön)))
|
Und wie sehen deine Versuche aus? Testausgaben? So wie ich es beschrieben habe? Wahrscheinlich nicht. Und wie ich schon sagte, fertigen Code gibst es hier nicht!
Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
|

27-10-2009, 10:38
|
|
phpMorpheus2
Registrierter Benutzer
|
|
Registriert seit: Apr 2007
Beiträge: 646
|
|
Wenn du die Variable $user_id benutzt, um etwas aus der mysql datenbank abzufragen, so MUSS die Variable $user_id aber auch etwas beinhalten !
Ist der User eingeloggt, so beinhaltet die Variable die Userid (z.B. "20")
Ist der User aber NICHT eingeloggt, so beinhaltet die Variable $user_id nichts.
Die ist dann ja leer.
Und da die Variable leer ist, gibt es bei der mysql Abfrage einen Syntaxfehler.
PHP-Code:
$punkte=mysql_fetch_object(mysql_query("SELECT punkte_ges FROM profil WHERE id=$user_id"));
Darum solltest du prüfen ob $user_id gefüllt ist.
Und das bitte VOR jegleicher Verwendung.
z.B. so:
PHP-Code:
if(isset($user_id) === true) {
$punkte = mysql_fetch_object(mysql_query(" SELECT
punkte_ges
FROM
profil
WHERE
id=$user_id"));
if($punkte->punkte_ges>=39500) $zahl=" LIMIT 100";
elseif($punkte->punkte_ges>=29500) $zahl=" LIMIT 30";
elseif($punkte->punkte_ges>=19500) $zahl=" LIMIT 28";
elseif($punkte->punkte_ges>=9300) $zahl=" LIMIT 26";
elseif($punkte->punkte_ges>=9300) $zahl=" LIMIT 24";
elseif($punkte->punkte_ges>=5500) $zahl=" LIMIT 22";
elseif($punkte->punkte_ges>=5000) $zahl=" LIMIT 20";
elseif($punkte->punkte_ges>=2200) $zahl=" LIMIT 18";
elseif($punkte->punkte_ges>=2200) $zahl=" LIMIT 16";
elseif($punkte->punkte_ges>=500) $zahl=" LIMIT 14";
elseif($punkte->punkte_ges>=500) $zahl=" LIMIT 12";
elseif($punkte->punkte_ges>=0) $zahl=" LIMIT 10";
} else {
$zahl = " LIMIT 10";
$top = mysql_query("SELECT
*
FROM
`foto`,
`profil`
WHERE
profil.id = foto.user_id
AND
profil.sex=$sex
AND
foto.vote>=100
AND
foto.status=1
ORDER BY
prozent
DESC $zahl");
}
Dazu noch:
SELECT * ist nicht so das Gelbe vom Ei.
|

27-10-2009, 16:27
|
|
Ri4i
Registrierter Benutzer
|
|
Registriert seit: Jun 2009
Beiträge: 14
|
|
Zitat:
Zitat von Kropff
Verwarn!  Noch so eine Entgleisung und du bist weg vom Fenster.
Und wie sehen deine Versuche aus? Testausgaben? So wie ich es beschrieben habe? Wahrscheinlich nicht. Und wie ich schon sagte, fertigen Code gibst es hier nicht!
Peter
|
Zitat:
Zitat von phpMorpheus2
Wenn du die Variable $user_id benutzt, um etwas aus der mysql datenbank abzufragen, so MUSS die Variable $user_id aber auch etwas beinhalten !
Ist der User eingeloggt, so beinhaltet die Variable die Userid (z.B. "20")
Ist der User aber NICHT eingeloggt, so beinhaltet die Variable $user_id nichts.
Die ist dann ja leer.
Und da die Variable leer ist, gibt es bei der mysql Abfrage einen Syntaxfehler.
PHP-Code:
$punkte=mysql_fetch_object(mysql_query("SELECT punkte_ges FROM profil WHERE id=$user_id"));
Darum solltest du prüfen ob $user_id gefüllt ist.
Und das bitte VOR jegleicher Verwendung.
z.B. so:
PHP-Code:
if(isset($user_id) === true) { $punkte = mysql_fetch_object(mysql_query(" SELECT punkte_ges FROM profil WHERE id=$user_id")); if($punkte->punkte_ges>=39500) $zahl=" LIMIT 100"; elseif($punkte->punkte_ges>=29500) $zahl=" LIMIT 30"; elseif($punkte->punkte_ges>=19500) $zahl=" LIMIT 28"; elseif($punkte->punkte_ges>=9300) $zahl=" LIMIT 26"; elseif($punkte->punkte_ges>=9300) $zahl=" LIMIT 24"; elseif($punkte->punkte_ges>=5500) $zahl=" LIMIT 22"; elseif($punkte->punkte_ges>=5000) $zahl=" LIMIT 20"; elseif($punkte->punkte_ges>=2200) $zahl=" LIMIT 18"; elseif($punkte->punkte_ges>=2200) $zahl=" LIMIT 16"; elseif($punkte->punkte_ges>=500) $zahl=" LIMIT 14"; elseif($punkte->punkte_ges>=500) $zahl=" LIMIT 12"; elseif($punkte->punkte_ges>=0) $zahl=" LIMIT 10"; } else { $zahl = " LIMIT 10"; $top = mysql_query("SELECT * FROM `foto`, `profil` WHERE profil.id = foto.user_id AND profil.sex=$sex AND foto.vote>=100 AND foto.status=1 ORDER BY prozent DESC $zahl"); }
Dazu noch:
SELECT * ist nicht so das Gelbe vom Ei.
|
oh leute habe das hinbekommen, war eigentlich ganz einfach, ich glaube war nur übermüdet!
musste gleich nachm header das da einfügen:
PHP-Code:
if (isset($user_id))
und dann nach } das da:
if (!isset($user_id)) $zahl=" LIMIT 10";
Danke euch, hätte eigentlich selber hinbekommen! Und Kropff sei mir bitte nicht sauer! so kammst mir einfach rüber!
Gruß
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|