MySQL Suche

Alles, was PHP betrifft, kann hier besprochen werden.

MySQL Suche

Postby Gukie » 22. January 2007 11:47

Hallo, ich möchte eine MySQL Suche programieren, komme aber leider nicht weit.
Habe mir ein paar Tutorials angeguckt, aber habe irgendwie nichts gefunden, was interessant wäre.

Diese Suche soll so aussehen

Ich habe erstmal ein Formular, wo ich URL, oder URLNAME oder SPRACHE eingebe.

Dann habe ich in einem Datensatz folgende Begriffe
url, urlname, sprache

URL | URLNAME | SPRACHE
www.spiegel.de | Spiegel | Deutsch
www.google.com | Google.com | Englisch
usw

Und jetzt soll es so sein, dass wenn ich in den Formular Deutsch eingebe, alle Seiten aufgelistet werden, die auf Deutsch sind, wenn ich Spiegel eingebe, alle Seiten aufgelistet werden, die Spiegel heissen, usw

Nur da komme ich überaupt nicht weit.

Im Moment habe ich 2 Seiten programmiert, einmal die Seite mit dem Formular, und einmal die Seite mit dem MySQL-Code



So sehen sie aus

Formular

Code: Select all
<form action="muster.php"
      method="POST"
      name="suche">

<table border="1" height="208" width="319" align="center">
   <tr>
    <td height="23" width="146"><b>&nbsp;URL</b></td>
    <td height="23" width="157"><input name="url" type="text" value=""></td>
  </tr>
  <tr>

    <td height="23" width="146"><b>&nbsp;Name</b></td>
    <td height="23" width="157"><input name="urlname" type="text" value=""></td>
  </tr>
  <tr>
    <td height="23" width="146"><b>&nbsp;Sprache</b></td>
    <td height="23" width="157"><input name="sprache" type="text" value=""></td>
  </tr>
</table>
<p align="center">
<br>
<input type="submit">
</form>


MySQL-Code

Code: Select all
    <?php
  mysql_connect("localhost",
  "root","****") or die
  ("Keine Verbindung möglich");
  mysql_select_db("linkverwaltung")or die
  ("Die Datenbank existiert nicht");
  ?>
  <?php
  $sql = "SELECT * FROM users WHERE url='$url' OR urlname='$urlname'";
  $ergebnis = mysql_query($sql);
  while($row = mysql_fetch_object($ergebnis))
    {
    echo $row->url." , "
    .$row->urlname."<br>";
    }
  ?>


Weiss jemand wo mein Fehler liegt?
Es kann auch jetzz sein, das fast alles falsch ist :oops:
Aber ich hoffe mir kann jemand weiter helfen

Danke
Gukie
Gukie
 
Posts: 22
Joined: 05. January 2007 15:33

Postby sari42 » 22. January 2007 21:12

$sql = "SELECT * FROM users WHERE url='$url' OR urlname='$urlname'";
funktioniert nur, wenn register_globals = On ( http://de.php.net/de/register_globals ).
Versuch doch mal
Code: Select all
$sql = "SELECT * FROM users WHERE url='" . $_POST['url'] . "' OR ....
sari42
 
Posts: 800
Joined: 27. November 2005 18:28

Postby Gukie » 26. January 2007 12:47

hey
danke für die hilfe
ich habe hier die änderung gemacht, und mein code sieht jetzt so aus

Code: Select all
  <?php
  mysql_connect("localhost",
  "root","********") or die
  ("Keine Verbindung möglich");
  mysql_select_db("linksverwaltung")or die
  ("Die Datenbank existiert nicht");
  ?>
  <?php
  $sql = "SELECT * FROM users WHERE url='" . $_POST['url'] . "'
  OR urlname='" . $_POST['urlname'] . "'";
  $suche = mysql_query($sql);
  while($row = mysql_fetch_object($suche))
    {
    echo $row->url." , "
    .$row->urlname."<br>";
    }
  ?>
 


Aber ich bekomme diese Fehlermeldung

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in D:\Programme\XAMPP 1.5.1\xampp\htdocs\datenbankuebung\muster.php on line 18


Warum? Überall wo ich Hilfe gescuht haben, n jeden Tutorial stand das ich "mysql_fetch_object()" schreiben sollte.

Hoffe ihr könnt mir helfen

mfg
Gukie
Gukie
 
Posts: 22
Joined: 05. January 2007 15:33

Postby Wiedmann » 26. January 2007 12:54

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource

dann schauen wir uns mal diese Zeile an:
Code: Select all
while($row = mysql_fetch_object($suche))


Die "result resource" steckt also in der Variablen "$suche". Diese Variable wird in dieser Zeile definiert:
Code: Select all
$suche = mysql_query($sql);

Wenn mysql_query() keine "result resource" rauswirft, dann hat das Query,
welches in der Variablen "$sql" setckt, einen Fehler.

Leider hast du ja bei der Funktion mysql_query() überhaupt keine Fehlerbehandlung, um eine entspr. Fehlermeldung sehen zu können.
--> Schau dir mal im PHP-Manual das Beispiel zu mysql_query() an.
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby Gukie » 01. February 2007 13:59

Hallo, ich habe jetzt mein Problem gelöst.
Und zwar lg mien Fehler hier:


Code: Select all
$sql = "SELECT * FROM users WHERE url='" . $_POST['url'] . "'
  OR urlname='" . $_POST['urlname'] . "'";


Mir ist nicht aufgefallen, dass ich da wo "users" steht, der Name meiner Datenbank angeben muss.
Als ich das geändert habe, hat es sofort geklappt.

Ich bedanke mich für die Hilfen.

:*
Gukie
Gukie
 
Posts: 22
Joined: 05. January 2007 15:33

Postby Rene Knapp » 19. February 2007 22:32

Code: Select all
$sql = "SELECT * FROM users WHERE url='" . $_POST['url'] . "'
  OR urlname='" . $_POST['urlname'] . "'";


Gukie wrote:Hallo, ich habe jetzt mein Problem gelöst.
Und zwar lg mien Fehler hier:


Mir ist nicht aufgefallen, dass ich da wo "users" steht, der Name meiner Datenbank angeben muss.
Als ich das geändert habe, hat es sofort geklappt.

Ich bedanke mich für die Hilfen.

:*
Gukie


ja sowas passiert oft :lol: du solltest bei solchen problemen dir eine fehlermeldung ausgeben lassen --> echo mysql_error();
User avatar
Rene Knapp
 
Posts: 37
Joined: 26. September 2006 14:17

Kleiner Verbesserungsvorschlag

Postby maxhb » 27. February 2007 20:17

Hi!
Du solletst die Strings, die Du in Dein SQL-Statement einbindest escapen, sonst knallt es, wenn jemand ' oder " eingibt, siehe auch PHP-Manual, Stichwort "mysql_escape_string":

Code: Select all
$sql = "SELECT * FROM users WHERE url='" . mysql_escape_string($_POST['url']) . "'
  OR urlname='" . mysql_escape_string($_POST['urlname']) . "'";


CU
maxhb
User avatar
maxhb
 
Posts: 17
Joined: 18. January 2007 15:08
Location: Bremen


Return to PHP

Who is online

Users browsing this forum: No registered users and 20 guests