tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
9
ZUGRIFFE
904
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    fvosgerau fvosgerau ist offline Grünschnabel
    Registriert seit
    Apr 2008
    Beiträge
    2
    Hallo! Ich hab ein mittelschweres Problem mit der sql-abfrage (glaube ich zumindestens)
    Hier mein code:
    PHP-Code:
    if ($_POST){
      
    $vname trim($_POST ['vname']);
      
    $nname trim($_POST['nname']);
    }
    echo 
    "Gesucht wird nach: $vname $nname";

    $suchen mysql_query("SELECT id, vname, nname FROM vos_database WHERE vname LIKE '%$vname%' OR nname LIKE '%$nname%' ORDER BY id");
    $zeilen mysql_query($suchen);
    $treffer mysql_affected_rows();
    if (
    $treffer==0){
      echo 
    "Leider keine Übereinstimmung gefunden! Bitte versuchen Sie es mit einem noch einmal mit einem anderen Suchbegriff!";
    } else {
      while (list (
    $id$vname$nname) = mysql_fetch_row($zeilen)){
        
    get_person($id);
        echo 
    "<br /n>";
      }

    Fehlermeldung: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in usw.... Woran kann das liegen?
     

  2. #2
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Du hast da was doppelt gemoppelt:
    Code :
    1
    2
    
    $suchen = mysql_query("SELECT id, vname, nname FROM vos_database WHERE vname LIKE '%$vname%' OR nname LIKE '%$nname%' ORDER BY id");
    $zeilen = mysql_query($suchen);

    entweder so:
    Code :
    1
    2
    
    $suchen = "SELECT id, vname, nname FROM vos_database WHERE vname LIKE '%$vname%' OR nname LIKE '%$nname%' ORDER BY id"
    $zeilen = mysql_query($suchen);
    oder so:
    Code :
    1
    
    $zeilen = mysql_query("SELECT id, vname, nname FROM vos_database WHERE vname LIKE '%$vname%' OR nname LIKE '%$nname%' ORDER BY id");
    ....wäre besser
     

  3. #3
    Avatar von Loomis
    Loomis Loomis ist offline Mitglied Bunt
    Registriert seit
    Jul 2002
    Ort
    Aschaffenburg
    Beiträge
    1.538
    Spontan würde ich sagen es liegt daran dass du 2 mysql_query ausführst.

    Also das mysql_query bei $suchen weg.

    Wenn es dann immernoch nicht geht, echo auf $suchen. Den Query der ausgegeben wird in phpMyAdmin(oder anderes Programm...) ausführen.

    //edit: Sven Mintel war halt schneller, buh
    Geändert von Loomis (22.04.08 um 09:44 Uhr) Grund: edit...
     

  4. #4
    Avatar von Loomis
    Loomis Loomis ist offline Mitglied Bunt
    Registriert seit
    Jul 2002
    Ort
    Aschaffenburg
    Beiträge
    1.538
    @ Sven

    Hab ich das richtig verstanden... du meinst...
    PHP-Code:
    $zeilen mysql_query("SELECT id, vname, nname FROM vos_database WHERE vname LIKE '%$vname%' OR nname LIKE '%$nname%' ORDER BY id"); 
    ...wäre besser?

    Kannst du erklären warum? Will ja auch dazulernen.

    Ich mache das nämlich immer in der Form:
    PHP-Code:
    $suchen "SELECT id, vname, nname FROM vos_database WHERE vname LIKE '%$vname%' OR nname LIKE '%$nname%' ORDER BY id"
    $zeilen mysql_query($suchen); 
     

  5. #5
    theunset theunset ist offline Mitglied Bronze
    Registriert seit
    Apr 2008
    Beiträge
    38
    Keine der beiden Methoden ist "besser" in dem Sinne. Evtl. ist die zweite übersichtlicher, im Endeffekt kommt bei beiden das selbe raus.
     

  6. #6
    fvosgerau fvosgerau ist offline Grünschnabel
    Registriert seit
    Apr 2008
    Beiträge
    2
    Klar! Doppelt Abfrage! Hätte ich auch gleich drauf kommen können, Fehlermeldung ist weg, aber jetzt schmeißt er mir SÄMTLICHE Datensäztze raus, was natürlich nicht im Sinne des Erfinders ist! Hab jetzt den Code SO:
    PHP-Code:
    $suchen "SELECT id, vname, nname FROM vos_database WHERE vname LIKE '%$vname%' OR nname LIKE '%$nname%' ORDER BY id";
    $zeilen mysql_query($suchen);
    $treffer mysql_affected_rows();
    if (
    $treffer==0){
      echo 
    "Leider keine Übereinstimmung gefunden! Bitte versuchen Sie es mit einem noch einmal mit einem anderen Suchbegriff!";
    } else {
      while (list (
    $id$vname$nname) = mysql_fetch_row($zeilen)){
        
    get_person_ausgabe($id);
        echo 
    "<br /n>";
      }

     

  7. #7
    Avatar von tombe
    tombe tombe ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2004
    Ort
    Möglingen (BaWü)
    Beiträge
    3.109
    So wie Du es im letzten Beitrag schreibst muss/müsste es auch ohne Probleme funktionieren (siehe auch Erklärung von Sven).

    Ganz am Anfang hast Du aber folgendes geschrieben:

    PHP-Code:
    $suchen mysql_query("SELECT id, vname, nname FROM vos_database WHERE vname LIKE '%$vname%' OR nname LIKE '%$nname%' ORDER BY id"); 
    $zeilen mysql_query($suchen); 
    Hier führst Du in der ersten Zeile die SQL-Abfrage aus und übergibst das Ergebnis an die Variable $suchen.
    In der zweiten Zeile versucht Du dieses Ergebnis erneut als Abfrage auszuführen und an die Variable $zeilen zu übergeben. Das ist es dann was den Fehler auslöst.

    Ich persönlich übergebe die SQL-Anweisung auch immer zuerst an eine Variable, wie z.B.

    PHP-Code:
    $sql "SELECT * FROM tabelle WHERE feld = 'abc'"
    $result mysql_query($sql); 
    Besser oder schlechter ist das nicht wie wenn man die Anweisung gleich bei mysql_query reinschreibt. Aber bei kompliziertenren Abfragen kann man sich so einfach per echo die komplette Anweisung am Bildschirm anzeigen. Da entdeckt mann dann oft ein vergessenes Zeichen.

    Gruß Thomas
     
    Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.

    Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.

  8. #8
    Registriert seit
    Jul 2007
    Ort
    Quakenbrück
    Beiträge
    756
    Bist du dir sicher, dass es ein Zufall ist, dass alle Datensätze ausgespuckt werden?
    Oder ist das Ergebnis der Suche evtl Tatsächliche, dass die Suchmaske auf alle Datensätze zutrifft?
     
    PHP-Code:
    ($hilfe=='hilfreich') ? bewerten(positiv) : ignore_post(); 
    Schnellste Hilfe -> www.gidf.de

    Wer aus meiner Gegend kommt, kann sich gern mal melden, kenn hier keenen ;)

  9. #9
    theunset theunset ist offline Mitglied Bronze
    Registriert seit
    Apr 2008
    Beiträge
    38
    Lass dir mal den generierten Query ausgeben. Ich wette meinen Morgenkaffee darauf, dass $vname und $nname leer sind. Darauf solltest du vorher prüfen.
     

  10. #10
    Avatar von Loomis
    Loomis Loomis ist offline Mitglied Bunt
    Registriert seit
    Jul 2002
    Ort
    Aschaffenburg
    Beiträge
    1.538
    Hier:
    PHP-Code:
    $treffer mysql_affected_rows(); 
    wäre
    PHP-Code:
    $treffer mysql_num_rows($zeilen); 
    richtig.

    (Siehe: mysql_affected_rows() und mysql_num_rows() bei php.net)
     

Ähnliche Themen

  1. Antworten: 30
    Letzter Beitrag: 29.07.10, 15:39
  2. Antworten: 11
    Letzter Beitrag: 05.08.09, 22:52
  3. Antworten: 9
    Letzter Beitrag: 14.09.08, 20:22
  4. Antworten: 4
    Letzter Beitrag: 21.09.07, 11:53
  5. Antworten: 3
    Letzter Beitrag: 18.05.07, 13:12