Ankündigung

Einklappen
Keine Ankündigung bisher.

Frage: Suche Fehler in diesem Script...

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • 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

    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...

  • #2
    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

    Kommentar


    • #3
      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.
      **********************************

      Kommentar


      • #4
        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()); 
             } 

        ?>

        Kommentar


        • #5
          lass dir doch mal $query ausgeben und vergleichs mit deiner DB-Struktur. Gibts die Spalten auch alle?

          Kommentar


          • #6
            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.
            **********************************

            Kommentar


            • #7
              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...

              Kommentar


              • #8
                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?

                Kommentar


                • #9
                  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...

                  Kommentar


                  • #10
                    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
                    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.
                    **********************************

                    Kommentar


                    • #11
                      Dann benutzt Dein Editor Zeilenumbruchszeichen, die php nicht erkennt.
                      Das solltest Du besser ändern, sonst wirst Du beim Suchen einer Fehlerquelle dusselig.

                      Kommentar


                      • #12
                        1. habe ich das gemacht.
                        2. glaube ich das ihr beide denkt ihr werd so gut mitm php proggen wie der entwickler selber.
                        3. hab ich das problem selber gefunden und trotzdem danke gesagt.
                        4. hab ich nur versucht euch zu erklären warum mir php denn genau das gesagt hat.
                        und zu letzt hast brauchst du mich jetzt nicht so voll gackern... ich such mir nen anderes forum wo die community netter is.. wenn ich mal nen fehler ned selber finde...

                        Kommentar


                        • #13
                          ich benutze den windows editor... ich halt nix von php/html editoren...

                          Kommentar


                          • #14
                            Es ist nur ein gutgemeinter Tipp. Mach was Du willst.

                            Ich habe allerdings lange genug Erfahrung auch (aber nicht nur) in php, um zumindest starke Zweifel an der Darstellung zu haben.
                            Ein mögliche Erklärung habe ich Dir geliefert. Wenn die ausgeschlossen ist, fällt das ganze für mich unter "Es hat so lange gedauert, bis das Wasser kochte, weil der MAD meinen Wasserkocher beobachtet".

                            Kommentar


                            • #15
                              Man muss keinen PHP-Editor verwenden.
                              Jeder zum Programmieren taugliche Editor kann Zeilennummern anzeigen.
                              Die gibt es wie Sand am Meer.

                              Ich glaube nicht, dass sich hier jemand wie ein PHP-Guru aufführt.
                              Aber an Deinen Darlegungen stimmt einfach einiges nicht. Ist aber Dein Bier.

                              Bei Deinem Nick fällt mir jemand anders ein...
                              Warst Du schon mal unter entw23 hier angemeldet?
                              **********************************
                              Nein, ich bin nicht die Signatur.
                              Ich putze hier nur.
                              **********************************

                              Kommentar

                              Lädt...
                              X