Finde Fehler einfach nicht

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

  • Finde Fehler einfach nicht

    Bei folgendem einfachen Code finde ich den Fehler nicht:




    //$db = mysql_connect();
    $sqlab = "select * from produkte where name like LIKE '%".$anf."%' ";
    $res = mysql_db_query("test", $sqlab);
    $num = mysql_num_rows($res);
    if ($num==0) echo "keine passenden Datensätze gefunden";

    for ($i=0; $i<$num; $i++)
    {
    $nn = mysql_result($res, $i, "name");
    //$vn = mysql_result($res, $i, "beschreibung");
    echo "$nn, $vn<br>";
    }


    bekomme immer die Fehlermeldung:

    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /var/www/test/search.php on line 11
    keine passenden Datensätze gefunden

    Jemand eine Idee?

    Gruß Jörn

  • #2
    http://www.php-resource.de/forum/sho...threadid=50454

    Kommentar


    • #3
      Original geschrieben von penizillin
      http://www.php-resource.de/forum/sho...threadid=50454
      Fehlerausgabe:

      Parse error: parse error, unexpected T_LOGICAL_OR in /var/www/test/search.php on line 12

      Mfg

      Kommentar


      • #4
        php-tags
        aktueller code

        Kommentar


        • #5
          Re: Finde Fehler einfach nicht

          bekomme immer die Fehlermeldung:

          Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /var/www/test/search.php on line 11
          keine passenden Datensätze gefunden

          Jemand eine Idee?
          Du stellst keine Verbindung zur Datenbank her und wunderst dich dann das dein Script nicht funktioniert ?

          gruss Chris

          [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

          Kommentar


          • #6
            Re: Re: Finde Fehler einfach nicht

            [QUOTE]Original geschrieben von hhcm
            [B]Du stellst keine Verbindung zur Datenbank her und wunderst dich dann das dein Script nicht funktioniert ?


            Ich habe eine Datenbankverbindung aufgebaut:

            Hier nochmal die beiden Scripts:

            Datei 1: index.html

            <html>
            <body>
            Suche in der Datenbank:
            <form action = "search.php" method = "post">
            <input name = "anf"> <p>
            <input type = "submit">
            <input type = "reset">
            </form>
            </body>
            </html>


            Datei 2: search.php (beide im gleichen Verzeichnis)

            in meiner config.php baue ich die Datenbankverbindung auf.

            <?php

            include("config.php");



            $sqlab = "select * from produkte where LIKE '%$anf%' "
            or die(mysql_error().'<hr />'.'euer SQL'.'<hr />');

            $res = mysql_db_query("test", $sqlab);
            $num = mysql_num_rows($res);
            if ($num==0) echo "keine passenden Datensätze gefunden";

            for ($i=0; $i<$num; $i++)
            {
            $nn = mysql_result($res, $i, "name");
            $vn = mysql_result($res, $i, "beschreibung");
            echo "$nn, $vn<br>";
            }


            ?>

            Datei 3: config.php

            <?php

            mysql_connect("localhost",
            "user","geheim");
            mysql_select_db("test")
            or die ("Die Datenbank existiert nicht");

            ?>


            Gruß Jörn

            Kommentar


            • #7
              mach mal ein reset( $res) nach jeder "Benutzung" der Variablen.

              Kommentar


              • #8
                php-tags
                problembeschreibung
                ausgabe


                $sqlab = "select * from produkte where LIKE '%$anf%' "
                or die(mysql_error().'<hr />'.'euer SQL'.'<hr />');
                ist natürlich unsinn. nochmal im erwähnten thread nachfucken, _wo_ man mysql_error() einsetzt.

                Kommentar


                • #9
                  ist natürlich unsinn. nochmal im erwähnten thread nachfucken, _wo_ man mysql_error() einsetzt.

                  Stimmt, da hst du recht.

                  Ich habe nun mal ein wenig gesucht und auch ein passendes Suchscript hier im Portal gefunden. Nun stimmen auch die Ausgabeergebnisse der ersten Seite, aber schon beim Blättern auf die zweite Seite kommt nur noch Müll. Leider kann ich keinen Fehler finden. Die Bilder und die Beschreibungen werden nicht mehr gefunden. Es kommt keine Fehlermeldung sondern nur Müll

                  hier der Quellcode des Scriptes:

                  <?

                  // Verbindung zur Datenbank
                  $verbindung = mysql_connect("localhost","user","geheim");
                  if (!$verbindung) { echo "Keine Verbindung möglich! "; exit; }

                  $db = MySQL_db_query("test",$verbindung);

                  /*
                  // Angaben zum Test, Diese daten kommen aus der Datei index.html

                  */
                  $anf = $_POST['anf'];
                  $seite = "10";

                  if (!$step = $_REQUEST['step'])

                  $step= $seite; // Anzahl Zeilen pro Seite


                  // Anzahl der Datensätze ermitteln

                  $erg = mysql_query("SELECT * FROM produkte WHERE name LIKE '$anf%'");

                  //list($anz) = mysql_fetch_row($res);

                  $anz = mysql_num_rows($erg);



                  $page = max(1,min($maxpage= ceil($anz/$step), $_REQUEST['page']));



                  $start = ($page-1)*$step+1;

                  $ende = min($page*$step, $anz);



                  $linestr = "$start bis $ende von $anz";



                  // Linkleiste erzeugen mit Vorherige und Nächse Seite

                  $seitenstr = "Seiten ($maxpage): ". (($page>1)

                  ? '<a href="suchen.php?page='. ($page-1). '">Vorherige Seite <a>':'' );


                  for ($i=1; $i<=$maxpage; $i++)

                  $seitenstr .= ($i==$page

                  ? " <b>[ $i ]</b>"

                  : ' <a href="suchen.php?page='. $i. '">'. $i. '</a>'

                  );

                  $seitenstr .= ($ende == $anz

                  ? ''

                  : ' <a href="suchen.php?page='. ($page+1). '"> Nächste Seite<a>'

                  );


                  // Ausgabe der Suche in Tabelle

                  echo "<p>Die Einträge $linestr gefundenen Einträgen werden angezeigt.</p>
                  $seitenstr<BR><HR>";

                  // Tabelllenkopf generieren
                  echo ('<table border="1" cellspacing="2" cellpadding="2" width="100%">');
                  echo ('<tr>
                  <td bgcolor="#ffff99">
                  <div align="center">
                  <b>
                  Name</b></div>
                  </td>
                  <td bgcolor="#ffff99">
                  <div align="center">
                  <b>
                  Beschreibung<br>

                  </b></div>
                  </td>
                  <td bgcolor="#ffff99">
                  <div align="center">
                  <b>
                  Bild<br>

                  </b></div>
                  </td>
                  <td bgcolor="#ffff99">
                  <div align="center">
                  <b>
                  Link<br>

                  </b></div>
                  </td>

                  </tr>
                  <tr>');

                  // datenbank abfragen und ausgeben

                  $res = mysql_query("SELECT * FROM produkte WHERE name LIKE '$anf%' ORDER BY name LIMIT $start, "
                  . ($ende-$start+1));

                  while ($row = mysql_fetch_assoc($res)) {
                  $feld1[] = $row["name"];
                  $feld2[] = $row["beschreibung"];
                  $feld3[] = $row["bild"];
                  $feld4[] = $row["link"];

                  }


                  for ($i=$start-1; $i<$ende; $i++) {
                  echo ('<tr><td width="10%"><div align="left">'.$feld1[$i].'</td>
                  <td width="30%"><div align="right">'.$feld2[$i].'</td>
                  <td width="20%"><div align="right"><img src="'.$feld3[$i].'" width="137" height="137"></td>
                  <td width="10%"><div align="right"><a href="'.$feld4[$i].'">Link zum Produkt</td></tr>');

                  }

                  echo ("</table><p></p>");

                  echo "<hr>$seitenstr";
                  echo "<BR><BR>";

                  /*Ausgaben zur Fehlersuche
                  echo "$step<BR>";
                  echo "$start<BR>";
                  echo "$ende<BR>";
                  echo "$anz<BR>";
                  echo "$kulturart<BR>";
                  echo "ende<BR>";
                  echo $res;
                  */
                  mysql_close($verbindung);

                  ?>

                  Gruß
                  Jörn

                  Kommentar


                  • #10
                    Original geschrieben von penizillin
                    ... ist natürlich unsinn. nochmal im erwähnten thread nachfucken, _wo_ man mysql_error() einsetzt.
                    Tststs

                    Kommentar


                    • #11
                      Verwende doch endlich mal die PHP-Tags !
                      Was bezweckst du mit folgender Zeile
                      PHP-Code:
                      $db MySQL_db_query("test",$verbindung); 
                      ? Afaik ist php case Sensitive und die Fkt heisst gemäss Manual mysql_db_query(). Aber auch wenn du die Fkt korrekt geschrieben hättest würde sie nicht sehr viel Sinn machen.
                      aus'm Manual
                      resource mysql_db_query ( string database, string query [, resource link_identifier] )
                      mysql_db_query() selects a database, and executes a query on it.
                      Ich glaube irgendwie nicht, dass $verbindung ein String darstellt, sondern viel mehr eine MySql-Ressource und das wird die Fkt nicht mögen (zumindest nicht als zweites Argument)
                      Irgendwie habe ich das Gefühl, dass du eher folgendes wolltest
                      PHP-Code:
                      $db mysql_select_db('test'); 
                      zu finden bei mysql_select_db().
                      Weiter habe ich deinen Code nicht gelesen...
                      Aber ggf hätte dich ein
                      PHP-Code:
                      error_reporting(E_ALL); 
                      so wie es in den Regeln steht weitergebracht und dich über den falschen Gebrauch der Fkt informiert.

                      Gruss

                      tobi
                      Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                      [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                      Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                      Kommentar

                      Lädt...
                      X