Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 18

Thema: Usersuche

  1. #1
    Samurai Avatar von Bleistift
    Registriert seit
    20.03.2012
    Alter
    21
    Beiträge
    235
    Danke
    0
    Bekam 4 mal "Danke" in 4 Postings

    Standard Usersuche

    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:
    PHP-Code:
    <?php
    $db 
    mysql_connect($host$user$gatewaytrue) or die (mysql_error());
    mysql_select_db($database) or die (mysql_error());
    session_start();
    $logincheck $_SESSION['logincheck'];
    if (
    $logincheck == 'successful') {
    $loginuser $_SESSION['loginmail'];
    $slcu mysql_query("SELECT `id` FROM `member` WHERE `mail`='".mysql_real_escape_string($loginuser)."'"$db) or die (mysql_error());
    $user mysql_fetch_assoc($slcu);
    $utis $_POST['where'];
             if (empty(
    $utis)) {
                     
    header('Location: /./user/index.php?id='.$user['id'].'');
                     
    $_SESSION['searching'] = 'Bitte ID, Mail, Vor- oder Nachnamen angeben.';
                }
             else {
                     if (
    is_int($utis)) {
                             
    $true mysql_query("SELECT `mail` FROM `member` WHERE `id`='".mysql_real_escape_string($utis)."'"$db) or die (mysql_error());
                             if (
    mysql_num_rows($true) == 1) {
                                     
    header('Location: /./user/index.php?id='.$utis.'');
                                }
                             else {
                                     
    header('Location: /./user/index.php?id='.$user['id'].'');
                                     
    $_SESSION['searching'] = 'Keinen User gefunden.';
                                }
                        }
                     else {
                             
    $mysql mysql_query("SELECT `id` FROM `member` WHERE ((`name`='".mysql_real_escape_string($utis)."') OR (`lastname`='".mysql_real_escape_string($utis)."') OR (`mail`='".mysql_real_escape_string($utis)."'))"$db) or die (mysql_error());
                             
    $id mysql_fetch_assoc($mysql);
                             if (
    mysql_num_rows($id) == 1) {
                                     
    header('Location: /./user/index.php?id='.$id['id'].'');
                                }
                             else if (
    mysql_num_rows($id)) { ?>
                             <html>
                                     <body>
                                     <table class="table"> <?php
                                     
    while($moreuser mysql_fetch_assoc($mysql)) { ?>
                                      <tr>
                                        <td class="id"><?php echo $moreuser['id']; ?></td>
                                       <td class="link"><a href="/./user/index.php?id=<?php echo $moreuser['id'];?>">Profil besuchen </a></td>
                                       <td class="other"><?php echo $usernamne?></td>
                                       <td class="other"><?php echo $userlname?></td>
                                       <td>BILD</td>
                                      </tr>
                             <?php ?>
                             </table>
                             </body>
                             </html>
                             <?php
                             
    }
                             else {
                                     
    header('Location: /./user/index.php?id='.$user['id'].'');
                                     
    $_SESSION['searching'] = 'Keinen User gefunden.';
                                  }
                          }
             }
    }
    else {
         
    header('Location: /./index.php');
         
    $_SESSION['loginreport'] = 'Du musst eingeloggt sein.';
    }
    ?>

    Liebe Grüße
    Tim
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!


  2. #2
    Bandit
    Gast

    Standard AW: Usersuche

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

    Richtig debuggen


    1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
    2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(E_ALL);
    3. Man verwendet ini_set('display_errors', true); damit die Fehler auch angezeigt werden.
    4. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
    5. 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.
    6. Schritt 5 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
    7. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
    8. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
    9. 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.

  3. #3
    Samurai
    Themenstarter
    Avatar von Bleistift
    Registriert seit
    20.03.2012
    Alter
    21
    Beiträge
    235
    Danke
    0
    Bekam 4 mal "Danke" in 4 Postings

    Standard AW: Usersuche

    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


  4. #4
    Bandit
    Gast

    Standard AW: Usersuche

    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!

  5. #5
    Samurai
    Registriert seit
    21.08.2011
    Beiträge
    233
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Usersuche

    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.

  6. #6
    Samurai
    Themenstarter
    Avatar von Bleistift
    Registriert seit
    20.03.2012
    Alter
    21
    Beiträge
    235
    Danke
    0
    Bekam 4 mal "Danke" in 4 Postings

    Standard AW: Usersuche

    Ich hatte es mir eigentlich gemerkt nur an der Stelle wieder vergessen, sorry.
    und mal wieder dickes Danke an dich
    $ 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 ..
    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:
    PHP-Code:
    <table class="table">
                                     <?php
    $mysql 
    mysql_query("SELECT `id`, `name`, `lastname` FROM `member` WHERE (`name`='".mysql_real_escape_string($utis)."') OR (`lastname`='".mysql_real_escape_string($utis)."') OR (`mail`='".mysql_real_escape_string($utis)."')"$db) or die (mysql_error());
                                     while(
    $id mysql_fetch_assoc($mysql)) { ?>
                                      <tr>
                                       <td class="id"><?php echo $id['id']; ?></td>
                                       <td class="link"><a href="/./user/index.php?id=<?php echo $moreuser['id'];?>">Profil besuchen </a></td>
                                       <td class="other"><?php echo $id['name']; ?></td>
                                       <td class="other"><?php echo $id['lastname']; ?></td>
                                       <td>BILD</td>
                                      </tr>
                             <?php ?>
                             </table>
    Wieso bekomme ich nur ein Ergebnis obwohl 2 Ergebnisse für den Nachnamen "test" in der Datenbank vorhanden sind ?
    Geändert von Bleistift (27.05.2012 um 19:58 Uhr)


  7. #7
    Bandit
    Gast

    Standard AW: Usersuche

    Muss ich dir jetzt wirklich noch zeigen, wie man richtig debuggt???
    PHP-Code:
    $query "SELECT 
                 `id`, 
                 `name`, 
                 `lastname` 
               FROM 
                 `member` 
               WHERE 
                 (`name`='" 
    mysql_real_escape_string($utis) . "') 
                OR 
                 (`lastname`='" 
    mysql_real_escape_string($utis) . "') 
                OR 
                 (`mail`='" 
    mysql_real_escape_string($utis) . "')";

    echo 
    "<pre>$query</pre><br>";
                 
    $result mysql_query($query)
        or die (
    "MySQL-Error: " mysql_error());
        
    echo 
    mysql_num_rows($result); 

  8. #8
    Samurai
    Themenstarter
    Avatar von Bleistift
    Registriert seit
    20.03.2012
    Alter
    21
    Beiträge
    235
    Danke
    0
    Bekam 4 mal "Danke" in 4 Postings

    Standard AW: Usersuche

    Das Ergebnis von
    PHP-Code:
    <?php echo mysql_num_rows($mysql); ?>
    = 2
    Ausgabe jedoch nur eins...
    Und da will ich wissen wieso nur eine Zeile ausgegeben wird ...

    :s


  9. #9
    Bandit
    Gast

    Standard AW: Usersuche

    Schon mal in den HTML-Code gesehen, den der Browser bekommt?

  10. #10
    Samurai
    Themenstarter
    Avatar von Bleistift
    Registriert seit
    20.03.2012
    Alter
    21
    Beiträge
    235
    Danke
    0
    Bekam 4 mal "Danke" in 4 Postings

    Standard AW: Usersuche

    HTML-Code den der Browser ausgibt:

    HTML-Code:
    <html>
    <head>
    <body>
     2 
    <table class="table">
    <tbody>
    <tr>
    <td class="id">1</td>
    <td class="link">
    <a href="/./user/index.php?id=1">
    </td>
    <td class="other">Tim</td>
    <td class="other">Gatzemeier</td>
    <td>BILD</td>
    </tr>
    </tbody>
    </table>
    </body>
    </html>
    Die 2 ist die Anzahl der eigentlichen Zeilen (mysql_num_rows($mysql)


Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •