Moppel: Was ist hier falsch???

Ich habe folgendes Script erstellt:
_____________________________________________________________________
<html>
<head>
<title>Untitled</title>
</head>
<body>

<?
echo $search;
//Verbindung herstellen
$db = mysql_connect("******","*****","******"); [Streng Geheim ]
mysql_select_db("dav",$db);

//Daten auslesen
$result = mysql_query("SELECT * FROM liste WHERE titel LIKE '" + $search + "'",$db);
?>

<table border="1" cellspacing="0" cellpadding="3" align="center">
<tr>
<td><b>ID</b></td>
<td><b>Eintragsnummer</b></td>
<td><b>Filmtitel</b></td>
<td><b>Format</b></td>
<td><b>CD-Anzahl</b></td>
<td><b>Bild</b></td>
<td><b>Beschreibung</b></td>
<td><b>Inhalt</b></td>
<td><b>Cover</b></td>
</tr>
<? while ($daten = mysql_fetch_array($result)) { ?>
<tr>
<td><? echo $daten[id]; ?></td>
<td><? echo $daten[eintrnr]; ?></td>
<td><? echo $daten[titel]; ?></td>
<td><? echo $daten[format]; ?></td>
<td><? echo $daten[cda]; ?></td>
<td><? echo $daten[bild]; ?></td>
<td><? echo $daten[besch]; ?></td>
<td><? echo $daten[inhalt]; ?></td>
<td><? echo $daten[link]; ?></td>
</tr>
<? } ?>
</table>

</body>
</html>
_____________________________________________________________________

Eigentlich soll man in einem HTML Formular einen Suchbegriff eingeben können, der dann hier mit der Datenbank verglichen wird. (Das ist die Variable $search)

Ich danke jedem, der sich die Mühe macht sich durch mein Script zu arbeiten.
PS: Wenn es geht antwortet bitte nicht alzu kompliziert, da ich totaler PHP Anfänger bin

Moppel

  1. Hi,

    Ich habe folgendes Script erstellt:

    Was hier falsch ist?

    Es fehlt die Beschreibung des Fehlers.
    Und was Du schon versucht hast, ihn zu beheben.

    cu,
    Andreas

    --
    Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
  2. Ich habe folgendes Script erstellt:

    Hossa und Hallo :)

    //Daten auslesen
    $result = mysql_query("SELECT * FROM liste WHERE titel LIKE '" + $search + "'",$db);
    ?>

    schreibst du mal lieber so:
    $result = mysql_query("SELECT * FROM liste WHERE titel LIKE '%$_POST[search]%'");

    <? while ($daten = mysql_fetch_array($result)) { ?>
    <tr>
    <td><? echo $daten[id]; ?></td>
    <td><? echo $daten[eintrnr]; ?></td>
    <td><? echo $daten[titel]; ?></td>
    <td><? echo $daten[format]; ?></td>
    <td><? echo $daten[cda]; ?></td>
    <td><? echo $daten[bild]; ?></td>
    <td><? echo $daten[besch]; ?></td>
    <td><? echo $daten[inhalt]; ?></td>
    <td><? echo $daten[link]; ?></td>
    </tr>
    <? } ?>
    </table>

    ich würde da immer in den [ ] Klammern die " oder ' setzten!
    z.B. so:
     <td><? echo $daten['id']; ?></td>
     <td><? echo $daten['eintrnr']; ?></td>
     <td><? echo $daten['titel']; ?></td>
     <td><? echo $daten['format']; ?></td>
     <td><? echo $daten['cda']; ?></td>
     <td><? echo $daten['bild']; ?></td>
     <td><? echo $daten['besch']; ?></td>
     <td><? echo $daten['inhalt']; ?></td>
     <td><? echo $daten['link']; ?></td>

    Moppel

    LG Christoph

    1. Tausend Dank für deine Hilfe, jetzt kommt immerhin keine Fehlermeldung mehr, aber ich habe ein anderes Problem: Egal was man eingibt, man bekommt alle Einträge angezeigt.

      Ich hab den Link, kannst ja mal gucken gehen.
      (Links musst du den Suchbegriff eingeben)

      1. Tausend Dank für deine Hilfe, jetzt kommt immerhin keine Fehlermeldung mehr, aber ich habe ein anderes Problem: Egal was man eingibt, man bekommt alle Einträge angezeigt.

        hm ok dann schreibs halt so:
        $result = mysql_query("SELECT * FROM liste WHERE titel LIKE '$_POST[search]'");

        also ohne den % denn die bewirken das man alles aus der DB rausholt!
        Versuchs nochmal so!

        Ich hab den Link, kannst ja mal gucken gehen.
        (Links musst du den Suchbegriff eingeben)

        LG Christoph

        1. Jetzt wird nichts mehr gefunden, und ich weiß auch wieso:

          Mein Suchformular übermittelt keine Daten, aber es liegt wohl nicht am Formular, denn auch andere einfachere zur Überprüfung zeigen, dass nichts gesendet wird.

          Hier ein Beispiel:
          Die Datei eingabe.html

          <html>
          <head>
           <title>Untitled</title>
          </head>

          <body>

          <form action="action.php" method="POST">
           Ihr Name: <input type="text" name="name" />
           Ihr Alter: <input type="text" name="alter" />
           <input type="submit">
          </form>

          </body>
          </html>

          Und hier die Datei action.php

          <html>
          <head>
           <title>Untitled</title>
          </head>

          <body>

          Hallo <?php echo $_POST["name"]; ?>.
          Sie sind <?php echo $_POST["alter"]; ?> Jahre alt.

          </body>
          </html>

          1. Huhu Moppel

            welche PHP-Version verwendest Du?

            phpinfo()

            Viele Grüße

            lulu

            --
            bythewaythewebsuxgoofflineandenjoytheday
            1. Der Freewebspace-Anbieter hat PHP 4

              Wenn ich echo $name; schreibe klappt´s
              Aber wennich folgendes mache klappt`s nicht:

              <?php

              echo $_POST["name"];
              echo "Sie sind $alter Jahre alt.";

              ?>
              Hier schreibt der nur das Alter aber nicht den Namen, ich werde einfach nicht schlau daraus.

              1. Huhu Moppel

                Der Freewebspace-Anbieter hat PHP 4

                der interessantere Teil der Versions-Nummer ist der nach der 4.
                Also 4.x.y, welches x.y ?

                ich vermute mal das es sich um eine "olle" PHP-Version handelt, die $_POST noch nicht kennt. (ab PHP 4.1.0)

                teste mal folgendes:

                var_dump($_POST);

                bzw.

                var_dump($HTTP_POST_VARS);

                Viele Grüße

                lulu

                --
                bythewaythewebsuxgoofflineandenjoytheday
                1. Herzlichen Dank dafür, dass du mir geholfen hast.
                  Ich habe meine Suchfunktion gerade eben ans Laufen bekommen.
                  Ich habe nochmal mit dem "alten" $name in der Auslesefunktion gespielt und das ganze mit Klammern versehen. Nach ein paar versuchen hats dann auf einmal geklappt, weiß der Teufel wieso. Ich brauche jetzt auf jeden Fall nicht mehr das blöde $_POST.
                  Aber nochmal danke.

                  Alles Gute

                  Moppel

                  1. Huhu Moppel

                    Ich brauche jetzt auf jeden Fall nicht mehr das blöde $_POST.

                    Nein, das ist die falsche Schlussfolgerung.

                    $_POST ist nicht blöd, sondern in aktuelleren PHP-Versionen der Standard.

                    $name -> funktioniert nur wenn Register-Globals "on" gesetzt ist.
                             das wird in naher Zukunft die Ausnahme sein.

                    D.h. sämtlich Skripts die nicht mit $_POST arbeiten werden nicht mehr einwandfrei funktionieren.

                    $HTTP_POST_VARS -> wird über kurz oder lang nicht mehr unterstützt werden.

                    D.h. sämtlich Skripts die nicht mit $_POST arbeiten werden nicht mehr einwandfrei funktionieren.

                    $_POST hat ausserdem die Eigenschaft "superglobal" zu sein.
                    D.h. man kann es auch innerhalb von Funktionen benutzen, ohne es explizit global setzen zu müssen.

                    Hier kannst Du etwas dazu lesen, folge auch den weiteren Links

                    http://www.php.net/manual/en/language.variables.predefined.php#language.variables.superglobals

                    Viele Grüße

                    lulu

                    --
                    bythewaythewebsuxgoofflineandenjoytheday