• Hey :)

    meine Usersuche funktioniert nicht so, wie ich es gerne hätte ..
    Die User suche ist folgendermaßen aufgebaut:
    Eingabe -> Prüfen ob es eine Zahl ist -> Wenn ja prüfen ob ID(Zahl) vorhanden ist -> Wenn ja -> Direkt umleiten ENDE -> Wenn nicht vorhanden -> Fehlermeldung 'Keinen User gefunden' ...
    ... -> Wenn es keine Zahl ist -> Aus der DB die ID vom USER selectieren -> Wenn eine ID gefunden direkt umleiten ENDE ->
    Wenn mehrere IDs gefunden wurden -> Ausgabe mit while() ENDE -> Wenn keine ID gefunden wurde -> Fehlermeldung 'Keinen User gefunden'

    Es gibt die Möglichkeit nach ID, Mail, Namen oder Nachnamen zu suchen.
    Daher prüfe ich zuerst ob es eine Zahl ist oder nicht.

    Nun zu meinem Problem:
    Egal welchen User ich suche, es wird nie einer gefunden, auch wenn er eigentlich existiert.
    Warum ? Wo liegt mein Fehler in der Logik ?

    Wäre sehr nett, wenn mir jemand einen kleinen Denkanstoß oder einen Lösungsvorschlag geben würden.

    Hier meine Syntax:


    Liebe Grüße
    Tim :)

  • Ich bin mir ziemlich sicher, dass ich dir dies schon mal geschrieben habe:

    Richtig debuggen

    • Man bemerkt, dass ein Skript nicht das tut, was es soll.
    • Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(E_ALL);
    • Man verwendet ini_set('display_errors', true); damit die Fehler auch angezeigt werden.
    • Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
    • An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde. Wichtig bei MySQL Fehlern (...not a valid MySQL result resource...): mysql_error() verwenden oder Abfrage ausgeben und zb mit phpmyadmin testen.
    • Schritt 5 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
    • Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
    • Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
    • Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.


    Bedauerlicherweise sehe ich nichts, aber auch rein garnichts davon in dem Script. Weiterhin hilft es, wenn man sich mal die Zeit nimmt, Kommentare in den Quellcode zu schreiben. Das ist nicht nur für sich selber recht gut, sondern hilft den Leuten in Foren den Quellcode bessert zu verstehen.

  • Sorry ..
    Hatte das zuerst drin, dann gab es aber keinen Fehler mehr.
    Als ich es ausprobiert habe war ich unzufrieden und habe es nochmal geschrieben und vergessen.

    Danke :)

  • Ein Script, das nicht funktioniert, muss das error_reporting hochgedreht haben und man muss sich an allen möglichen Stellen die benutzten Variablen ausgeben lassen!

  • Ein Tip: Teste deine SQL-Queries vorher mal in PHPMA ohne Variablen! Bringen die das gewünschte Ergebnis? -> wenn ja: Variablen, die eingesetzt werden, überprüfen.

    Ansonsten kann ich Bandit nur zustimmen.

  • Ich hatte es mir eigentlich gemerkt nur an der Stelle wieder vergessen, sorry.
    und mal wieder dickes Danke an dich :D
    $ danke an alxy für den Tipp :)

    Aber ich hab jetzt ein neues kleines Problem ..
    error_reporting ist "an" und es kommt keine Fehlermeldung.
    Bei der Usersuche hatte bisjetzt alles funktioniert.
    Ich habe sogar den Teil der jetzt nicht funktioniert nichtmal bearbeitet .. :o
    Sollte ein Name oder ein Nachname eingegeben werden, so soll eine Schleife bei mehreren Ergebnissen alle Ergebnisse ausgeben .. Die Schleife gibt aber nur 1 Ergebnis aus .. :s

    Hier das Script dazu:

    Wieso bekomme ich nur ein Ergebnis obwohl 2 Ergebnisse für den Nachnamen "test" in der Datenbank vorhanden sind ?

    Einmal editiert, zuletzt von Bleistift (27. Mai 2012 um 18:58)

  • Muss ich dir jetzt wirklich noch zeigen, wie man richtig debuggt???

  • Das Ergebnis von

    PHP
    <?php echo mysql_num_rows($mysql); ?>


    = 2
    Ausgabe jedoch nur eins...
    Und da will ich wissen wieso nur eine Zeile ausgegeben wird ...

    :s

  • HTML-Code den der Browser ausgibt:

    Die 2 ist die Anzahl der eigentlichen Zeilen (mysql_num_rows($mysql)

  • Mach mal nur das als Schleife:

    PHP
    while($id = mysql_fetch_assoc($mysql))
    {
       echo "<pre>";
       print_r($id);
       echo "</pre>";
    }
  • HTML
    2 
    Array
    (
        [id] => 1
        [name] => Tim
        [lastname] => Gatzemeier
    )

    In dem Array wird auch nur eine Zeile ausgegeben ..
    In $mysql hab ich auch kein LIMIT o.a. drin ^^

  • Dann verstehe ich das nicht mehr?!?!? Wenn mysql_num_rows 2 liefert, aber die Schleife nur einmal durchlaufen wird, bin ich entweder blind oder irgendwelche merkwürdigen Dinge passieren in deinem Script, die ich nicht verstehe.

  • Ich weiß auch nicht was es ist ..
    Die Schleife hatte super funktioniert und dann aufeinmal nichtmehr ..
    obwohl ich die nichtmal angerührt habe ..
    Hab schon alles vom Server runtergenommen und neu draufgepackt hilft auch nichts..

    Bin ratlos :(

  • Ich habe auch keine Idee mehr. Hast du schon mal die Abfrage per phpMyAdmin getestet?

  • Also Ergebnis von fetch_object($mysql) ist das gleiche wie mit assoc ^^

    HTML
    2 
    stdClass Object
    (
        [id] => 1
        [name] => Tim
        [lastname] => Gatzemeier
    )

    Und die Abfrage testen ist ja eigentlich unsinnig, weil die Abfrage ja eigentlich funktioniert ..
    Sonst würde die Schleife ja gar nicht in Kraft treten (siehe Syntax in meinem ersten Post) ..
    Solang da kein Fund ist tritt das else if nicht in Kraft ..
    Also die Abfrage funktioniert ja aber irgendwas übermenschliches will nicht das mehr als eine Ausgabe kommen :(