php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005-2

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 23.10.2005, 22:54   #1 (permalink)
Gast
 
Beiträge: n/a
Standard Frage: Suche Fehler in diesem Script...

Hi,
hab nen Fehler in meinem Script... aber find ihn ned, hab jetzt seid 4 Monaten ned mit PHP programmiert ...

Das ganze soll als Script für meine WoW Gilde dienen, jeder user bekommt nen Rang zugewiesen. Rat u. Hoher Rat können anderen Membern einen neuen Rang zuweisen per "auf und ab" link, member kicken oder ihnen Awards verleihen für - 3, 6 oder 12 Monate mitgliedschaft usw. leute mit dem rang mentor können nur neue ränge zuweisen... (dient zu trial übernahme | Trial -> Member)

kicken und awards verteilen hab ich noch ned eingebaut, weil ich den fehler im rang "auf/ab" system raus kriegen will. Nun meine frage: wo is der fehler und wie kann ich den code möglicherweise optimieren...

wundert euch nicht, wenn das noch nen bissl komisch aussieht, aber comments, design und sachen wie \n usw. mach ich erst wenn das script fertig is

Windows XP prof
PHP 4.1.1
MySQL 3.23.49

Zitat:
Warning: Supplied argument is not a valid MySQL result resource in c:\www\gilde\index.php on line 37
index.php:
PHP-Code:
<?php
<HTML>
 <
HEAD><title>xXx Guild of Eredar Memberliste</title></HEAD>
 <
BODY>

<?
php

include("inc/config.inc.php");
include(
"inc/DB-Connect.inc.php");

global 
$up$down;

?>

<Table cellspacing="0" cellpadding="0" border="0" width="500">
 <tr>
  <td style="font-family: tahoma; font-size: 11px; font-weight: bold">Nickname</td>
  <td style="font-family: tahoma; font-size: 11px; font-weight: bold">Rang</td>
  <td style="font-family: tahoma; font-size: 11px; font-weight: bold">Level</td>
  <td style="font-family: tahoma; font-size: 11px; font-weight: bold">Klasse</td>
  <td style="font-family: tahoma; font-size: 11px; font-weight: bold">Rasse</td>
  <td style="font-family: tahoma; font-size: 11px; font-weight: bold">dabei seit</td>
<?php
 
if ($rang == "2" || $rang == "3") {
  echo 
"<td style=\"font-family: tahoma; font-size: 11px; font-weight: bold\">Auf-/Absteigen</td>\n";
  echo 
"<td style=\"font-family: tahoma; font-size: 11px; font-weight: bold\">Kicken</td>\n";
  echo 
"<td style=\"font-family: tahoma; font-size: 11px; font-weight: bold\">Award</td>\n";
 } elseif(
$rang == "4") {
  echo 
"<td style=\"font-family: tahoma; font-size: 11px; font-weight: bold\">Auf-/Absteigen</td>\n";
 }
?>
 </tr>

<?php
$query 
"SELECT * FROM mitglieder";
$result mysql_query($query);

while (@
$read mysql_fetch_assoc($result) or DIE("Error: " mysql_error()))
{
?>

 <tr>
  <td style="font-family: tahoma; font-size: 11px"><?php echo $read["nickname"]; ?></td>
  <td style="font-family: tahoma; font-size: 11px">
   <?php
    
if($read["rang"] == "1") {
     echo 
"Ehrenmember - 1";
    } elseif(
$read["rang"] == "2") {
     echo 
"Hoher Rat - 2";
    } elseif(
$read["rang"] == "3") {
     echo 
"Rat - 3";
    } elseif(
$read["rang"] == "4") {
     echo 
"Mentor - 4";
    } elseif(
$read["rang"] == "5") {
     echo 
"Wächter - 5";
    } elseif(
$read["rang"] == "6") {
     echo 
"Krieger - 6"
    } elseif(
$read["rang"] == "7") {
     echo 
"Novize - 7";
    } elseif(
$read["rang"] == "8") {
     echo 
"Trial - 8";
    } else { echo 
"<font color=\"red\">Error</font>"; }
   
?>
  </td>
  <td style="font-family: tahoma; font-size: 11px"><?php echo $read["level"]; ?></td>
  <td style="font-family: tahoma; font-size: 11px"><?php echo $read["klasse"]; ?></td>
  <td style="font-family: tahoma; font-size: 11px"><?php echo $read["rasse"]; ?></td>
  <td style="font-family: tahoma; font-size: 11px"><?php echo $read["dabei_seit"]; ?></td>
   <?php
    
if ($rang == "2" || $rang == "3") {

     if(
$up != "") {
      
$query "UPDATE mitglieder SET rang=".$r."-1 WHERE id=".$up." ";
      
$result = @mysql_query($query) or DIE("Error: " mysql_error());
     }

     if(
$down !="") {
      
$query "UPDATE mitglieder SET rang=".$r."+1 WHERE id=".$down." ";
      
$result = @mysql_query($query) or DIE("Error: " mysql_error());
     }

     echo 
"<td style=\"font-family: tahoma; font-size: 11px\"><a href=\"memberliste.php?up=" $read["id"] . "&r=" $read["rang"] . "\" style=\"color: green; text-decoration:none\">+</a> / <a href=\"memberliste.php?down=" $read["id"] . "&r=" $read["rang"] . "\" style=\"color: red; text-decoration:none\">-</a></td>\n";
     echo 
"<td style=\"font-family: tahoma; font-size: 11px\">Kick</td>\n";
     echo 
"<td style=\"font-family: tahoma; font-size: 11px\">Liste</td>\n";

    } elseif(
$rang == "4") {
     echo 
"<td style=\"font-family: tahoma; font-size: 11px\">";
 
     echo 
"</td>";
    }
   
?>
 </tr>

<?php

?>

</Table>

 </BODY>
</HTML>
Config.inc.php:
PHP-Code:
<?php
[...]
$rang "2";
[...]
?>
naja, ich hoff mal ihr könnt mir helfen...

PS: wenn ich die daten von 2 membern ausgeben will, dann wird nur eine zeile ausgegeben und nur bei jedem 2 linksklick geht rang auf oder rang ab...
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 23.10.2005, 23:05   #2 (permalink)
Waq
Erfahrener Benutzer
 
Registriert seit: 15.08.2004
Beiträge: 2.473
Waq
Standard

Der Beitrag wurde verschoben, wegen...
... Postings im falschen Forum. Bitte beim nächsten Mal darauf achten..

Bemerkung:
Die gestellte Frage entspricht nicht dem Wissensstand eines/einer Fortgeschrittenen. Dazu: http://www.phpfriend.de/forum/viewtopic.php?t=21515

moved to PHP - Anfänger
__________________
mod = master of disaster
Waq ist offline  
Alt 24.10.2005, 00:19   #3 (permalink)
Erfahrener Benutzer
 
Registriert seit: 08.11.2004
Beiträge: 2.075
Der_Gerhard ist zur Zeit noch ein unbeschriebenes Blatt
Der_Gerhard eine Nachricht über ICQ schicken
Standard

Hallo, willkommen im Forum.

Anscheinend hast Du für Deine Beiträge BB-Code deaktiviert. Daher werden Code- und Quote-Tags nicht korrekt ausgewertet.
Für PHP-Code wären auch die PHP-Tags deutlich besser geeignet.
Bitte editier Deinen Beitrag entsprechend.
Die Lesbarkeit wird dadurch erheblich verbessert.

Es wäre übrigens auch sehr hilfreich, die betroffene Zeile im Code zu markieren.
Keiner hier hat Lust, Zeile 37 selbst zu suchen.

Ich hab das jetzt mal gemacht, aber künftig solltest Du drauf achten.

PHP-Code:
<?php
$query 
"SELECT * FROM mitglieder";
$result mysql_query($query);

while (@
$read mysql_fetch_assoc($result) or DIE("Error: " mysql_error()))
{
?>
Zu Deinem Problem.
Die Forumssucher nach der Fehlermeldung ergibt etliche Beiträge, die Dich alle in die Richtung lenken, dass der mysql_query-Aufruf vorher schief geht.

Das "or die()" ist schon nicht schlecht, aber richtig sinnvoll wäre es, wenn Du es hinter das mysql_query() packen würdest. Dort tritt nämlich auch das Problem auf.

Nimm auch mal die ganzen @ aus dem Code. Die verhindern nur eine ordentliche Fehlersuche.

Weitere Hinweise kriegst Du, wenn Du error_reporting(E_ALL) an den Anfang des Scripts setzt.

Hast Du eigentlich die DB richtig ausgewählt und gibt es eine DB "mitglieder"?
Sonst kann ich nix sehen, was an dem Query-String falsch sein könnte.
__________________
**********************************
Nein, ich bin nicht die Signatur.
Ich putze hier nur.
**********************************
Der_Gerhard ist offline  
Alt 24.10.2005, 23:07   #4 (permalink)
Gast
 
Beiträge: n/a
Standard

ich hab alles vorher shcon ausprobiert *g* die @ weg gemacht, das mysql_error() vor den query gemacht und ja es gibt eine db, bekomme ja was ausgegeben... steht ja oben ^^

achja, der fehler muss in dieser zeile liegen... ich denke mal der wählt zeile 37 weil das ganze da anfängt...

PHP-Code:
<?php
     
if($up != "") { 
      
$query "UPDATE mitglieder SET rang=".$r."-1 WHERE id=".$up." "
      
$result = @mysql_query($query) or DIE("Error: " mysql_error()); 
     } 

     if(
$down !="") { 
      
$query "UPDATE mitglieder SET rang=".$r."+1 WHERE id=".$down." "
      
$result = @mysql_query($query) or DIE("Error: " mysql_error()); 
     } 

?>
 
Alt 25.10.2005, 10:02   #5 (permalink)
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

lass dir doch mal $query ausgeben und vergleichs mit deiner DB-Struktur. Gibts die Spalten auch alle?
Zergling-new ist offline  
Alt 25.10.2005, 12:43   #6 (permalink)
Erfahrener Benutzer
 
Registriert seit: 08.11.2004
Beiträge: 2.075
Der_Gerhard ist zur Zeit noch ein unbeschriebenes Blatt
Der_Gerhard eine Nachricht über ICQ schicken
Standard

Und was ist nun Zeile 37?

Von diesen Zeilen kann in keiner die Fehlermeldung kommen, weil dort keine MySQL-Ressource erwartet wird.
Die Meldung muss von einem anderen Aufruf stammen. mysql_query kann diese Meldung nicht erzeugen.

Vielleicht solltest Du DIE() auch mal richtig schreiben: die().
__________________
**********************************
Nein, ich bin nicht die Signatur.
Ich putze hier nur.
**********************************
Der_Gerhard ist offline  
Alt 25.10.2005, 15:13   #7 (permalink)
Gast
 
Beiträge: n/a
Standard

naja, danke das ihr mir versucht zu helfen, aber da sie "funktion" bei zeile 37 anfängt kann es auch alles andere innerhalb dieser sein...

und der fehler is erst da seit dem ich

PHP-Code:
<?php
     
if($up != "") {  
      
$query "UPDATE mitglieder SET rang=".$r."-1 WHERE id=".$up." ";  
      
$result = @mysql_query($query) or DIE("Error: " mysql_error());  
     }  

     if(
$down !="") {  
      
$query "UPDATE mitglieder SET rang=".$r."+1 WHERE id=".$down." ";  
      
$result = @mysql_query($query) or DIE("Error: " mysql_error());  
     }  
?>
hinzugefüght habe...

/EDIT: war genau das was ich gesagt hab *g* , lag an dem codeteil, hab ihn nun unter die "global" verschoben und es funtzt...

achja, kann mir plz einer nen gutes tutorial über funktionen und klassen posten? wär nett...
 
Alt 25.10.2005, 15:16   #8 (permalink)
Gast
 
Beiträge: n/a
Standard

Zitat:
naja, danke das ihr mir versucht zu helfen, aber da sie "funktion" bei zeile 37 anfängt kann es auch alles andere innerhalb dieser sein...
Nein, in 100 von 100 Fällen irrt sich da der Benutzer, nicht php.
Es handelt sich garantiert um eine mysql Funktion wie mysql_fetch_irgendwas. Und davon hast Du nicht allzuviele im Code.
Die Zeilenzahl stimmt ganz sicher auch. PHP kann gerade noch zählen. Haben sich die Zeilen vielleicht mittlerweile verschoben?
 
Alt 25.10.2005, 15:22   #9 (permalink)
Gast
 
Beiträge: n/a
Standard

hihi, bruchpilot, kann vielleicht sein.. aber ich hab doch noch recht behalten, wie es sa steht...

php benutzt

PHP-Code:
<?php

$query 
"SELECT * FROM mitglieder"
$result mysql_query($query); 

while (@
$read mysql_fetch_assoc($result) or DIE("Error: " mysql_error())) 


?>
als eine einzige zeile, das dient jediglich dazu, dass wir menschen den code übersichtlicher gestalten können und in meinem fall hat php wegen irgendwas den fehler der innerhalb dieser funktion war am ausgangspunkt dieser an gegeben...
 
Alt 25.10.2005, 15:27   #10 (permalink)
Erfahrener Benutzer
 
Registriert seit: 08.11.2004
Beiträge: 2.075
Der_Gerhard ist zur Zeit noch ein unbeschriebenes Blatt
Der_Gerhard eine Nachricht über ICQ schicken
Standard

Zitat:
Zitat von Sandman23
naja, danke das ihr mir versucht zu helfen, aber da sie "funktion" bei zeile 37 anfängt kann es auch alles andere innerhalb dieser sein...

und der fehler is erst da seit dem ich

PHP-Code:
<?php
irgendwelcher Code
wo nur mysql_query drin vorkommt...
?>
hinzugefüght habe...

/EDIT: war genau das was ich gesagt hab *g* , lag an dem codeteil, hab ihn nun unter die "global" verschoben und es funtzt...
Jetzt nochmal langsam zum Mitmeiseln:
Dir Fehlermeldung lautet
Zitat:
Supplied argument is not a valid MySQL result resource
Durch simples Lesen und 5 Sekunden Nachdenken weiß man folgendes:
- Eine Funktion wird aufgerufen
- diese Funktion erwartet eine MySQL result resource als Argument
- sie kriegt aber keins.

Ein paar Sekunden später sieht man im Handbuch zu mysql_query(), dass dort ein String erwartet wird und eine MySQL result resource zurückgegeben wird.
Eine derartige Fehlermeldung kann also in 100 Jahren nicht von dieser Funktion stammen.

Durch Zählen der Zeilen (das macht der Editor normalerweise auch ganz gut) kommt man zu der Zeile wo der Fehler auftritt.
Dort steht sicher ein Aufruf von mysql_fetch_xyz oder mysql_result() oder sonst was.
Laut Doku erwarten diese Funktionen eine MySQL result resource und können daher so eine Fehlermeldung verursachen.

So....
Wenn der Code nicht totaler Mist ist, steht kurz vor der betroffenen Funktion, die den Fehler ausgibt eine Funktion, die die gewünschte Result resource liefern soll, dies aber nicht tut.

Wenn man über das noch mal 5 Sekunden nachdenkt, kommt man zu dem Schluss, dass immer wenn Du geschrieben hast,
- ja genau
- hab ich doch
- stimmt.
...
das riesiger BULLSHIT war, weil Du entweder nicht gelesen hast, was man Dir geschrieben hat oder zu es nicht verstanden hast.

Sollte letzteres der Fall sein, so ist es keine Schande, mal nachzufragen wie etwas gemeint ist.
Mit "Ja genau" exakt das Gegenteil zu machen ist Mist.

__________________
**********************************
Nein, ich bin nicht die Signatur.
Ich putze hier nur.
**********************************
Der_Gerhard ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Suche Script für Hintergrundmusik Sunslayer Scriptbörse 5 19.06.2008 10:18
kurze frage zu screen in einem shell script Server, Hosting und Workstations 4 16.12.2005 21:22
suche e-mail script Beitragsarchiv 2 16.10.2005 12:03
Suche - Fertigen Terminkalender Script. Beitragsarchiv 2 03.10.2005 17:25
Suche Script zum Abfragen von Inhalten einer anderen Seite Beitragsarchiv 7 26.09.2005 19:21
Suche - Klick-Counter Script nicobischof Beitragsarchiv 1 22.08.2005 19:21
Suche - Klick-Counter Script nicobischof PHP Tipps 2005-2 1 22.08.2005 18:40
[Erledigt] Suche Browsergame Script PHP Tipps 2005-2 7 02.07.2005 16:42
Suche einen Veranstaltungskalender Script für eine Page... Beitragsarchiv 1 19.05.2005 01:47
suche suchmaschinen script Beitragsarchiv 7 17.04.2005 00:34
[Erledigt] Suche dringend Download Script mit einmalig Paßwort Freigabe PHP Tipps 2005 6 05.04.2005 18:58
Suche ein Script um Passwörter zu versenden ? PHP Tipps 2005 21 19.03.2005 12:23
Suche Script Beitragsarchiv 0 02.01.2005 18:20
Suche Script PHP Tipps 2005 1 02.01.2005 13:01
array_push nur in begrenzter Anzahl ausführen ? PHP Tipps 2004 2 07.09.2004 09:05


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:01 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.