Avatar billede s-tone Nybegynder
02. november 2005 - 13:28 Der er 17 kommentarer og
1 løsning

Søge i mysql database

Hej, jeg prøvet søge i en mysql database, jeg kan ikke få det virke.
Jeg får følgende 2 fejl:

Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in sog.php on line 25
---------------------------------------------
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in sog.php on line 49


Håber der er nogen der kan hjælpe mig er ved at køre død i det...
Mit cript ser sådan her ud:

<?
function ShowTable($name){
  MYSQL_CONNECT(localhost, xxxx, xxxx) OR DIE("Unable to connect");
  @MYSQL_SELECT_DB("data") OR DIE("Unable to select database");
  $query = $_POST['query'];
  $resultat = mysql_query("select * from subs where cder like '$query'") or die(mysql_error());
  $result = mysql_query($query);
  $total_rows = mysql_num_rows($resultat);
  if ($total_rows=="") {
    print "<HTML><BODY><h1>Ingen resultater</h1></BODY></HTML>";
    return;
  }
  $row = mysql_fetch_row($result);
  $total_cols = count($row);
  $style = '<link href="style.css" rel="stylesheet" type="text/css">';
  $div = '<div id="container">
    <img src="header2.jpg"/>';
  print "<HTML>";
  print "<HEAD>";
  print $style;
  print "</HEAD>";
  print "<BODY>";
  print $div;
  print "<table width='100%' border='0' cellspacing='0' cellpadding='0' align='center'>";
  print "<tr class='blue'><td colspan=$total_cols align=center>Din søgning gav: $total_rows resultater</td></tr>";
  print "<tr>";
  print $tallet;
  $i=0;
  while($i < $total_cols){
    print "<td>";
    print $row[$i];
    print "</td>";
    $i++;
  }
  print "</tr>";

  while($row = mysql_fetch_row ($result)) {
    $i = 0;
    print "<tr>";
    while($i < $total_cols){
      print "<td>";
      print $row[$i];
      print "</td>";
      $i++;
    }
    print "</tr>";
  }
  print "</TABLE></BODY></HTML>";
  }
?>
<?
ShowTable("Subs");
echo $order;
?>

På forhånd tak,
Avatar billede jaw Nybegynder
02. november 2005 - 13:47 #1
Hvilke linier er de 2 nævnte? Får du ikke mere beskrivende fejl end dem? Og så er der bestemt noget galt her:

  while($row = mysql_fetch_row ($result)) {
...for hvis du så kigger på at den behandler $result, som er:
  $result = mysql_query($query);
...so far, so good. Men den behandler jo $query, som er:
  $query = $_POST['query'];
Og der dør den nok. Du har en forespørgsel til databasen, der ikke indeholder andet end indholdet af $_POST['query'] ;)
Avatar billede s-tone Nybegynder
02. november 2005 - 13:57 #2
Okay, det må du lige forklare lidt mere, er blevet mega forvirret :)

Line 25 er :  $row = mysql_fetch_row($result);
og 45 :  while($row = mysql_fetch_row ($result)) {
Avatar billede s-tone Nybegynder
02. november 2005 - 14:00 #3
Hvis jeg skriver (print $total_rows;) får jeg også det rigtige antal at vide så ved ikke hvad du mener med dør.
Avatar billede jaw Nybegynder
02. november 2005 - 14:00 #4
Det kan jeg godt forstå at du er, det ville jeg også være. Men min pointe var egentlig, at der er gået ged i dine variabletildelinger tror jeg.

Jeg gik baglæns i dine forespørgsler, og endte med at konstatere, at du prøver at hente $_POST['query'] - og er det rigtigt?
Avatar billede jaw Nybegynder
02. november 2005 - 14:01 #5
Ok, nu forstår jeg måske hvad det er du gør :)

Men prøv at ændre:
$result = mysql_query($query);
til:
$result = mysql_query($query) or die(mysql_error());
Avatar billede s-tone Nybegynder
02. november 2005 - 14:09 #6
Jeg får fejlen You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '3' at line 1.

Har hørt noget om at jeg skulle bruge fetc_object istedet men kan hellere ikke få det til at virke...
Avatar billede jaw Nybegynder
02. november 2005 - 14:11 #7
Det vil nok ikke ændre noget, da det er en fejl i din forespørgsel. Du bliver nødt til at skrive hvad du har i $_POST['query']. Det gør du evt ved at paste outputtet fra:

echo $_POST['query'];
Avatar billede s-tone Nybegynder
02. november 2005 - 14:26 #8
Der har jeg det jeg indtaster formen
fx, 3
Avatar billede jaw Nybegynder
02. november 2005 - 14:28 #9
Så skal den jo også faile. Det svarer til at du skriver mysql_query("3"); og det kan den jo selvfølgelig slet ikke finde ud af.
Avatar billede s-tone Nybegynder
02. november 2005 - 14:31 #10
Okay, hvordan skal jeg så gøre det?
Avatar billede jaw Nybegynder
02. november 2005 - 14:34 #11
måske dine linier 25 og 49 skal være $resultat i stedet for $result ?
Avatar billede s-tone Nybegynder
02. november 2005 - 14:48 #12
Ja :) Tusind tak for hjælpen.... Smid et svar...
Avatar billede jaw Nybegynder
02. november 2005 - 14:49 #13
Selv tak >D

Og saa kan du nok slette linien:  $result = mysql_query($query);

Og nu blev exp amerikans-tastatur her - stener !
Avatar billede s-tone Nybegynder
02. november 2005 - 15:07 #14
Tak igen, lige et sidste spørgsmål... :)
Når jeg søger, så søger den efter det præcise ord hvordan kan man gøre så man evt det med der starter med de første par bogstaver af ordet?
Avatar billede jaw Nybegynder
02. november 2005 - 15:09 #15
% gælder som wildcard til x-antal tegn, så

'%$query%'

vil finde både 23, 232 og 32.
Avatar billede s-tone Nybegynder
02. november 2005 - 15:20 #16
Okay, det virker så ikke...
Når jeg søger skal jeg stadig skrive det fulde navn...
Avatar billede jaw Nybegynder
02. november 2005 - 15:22 #17
Så tror jeg du gør noget forkert.

felt LIKE '%".$query."%'
Avatar billede s-tone Nybegynder
02. november 2005 - 16:46 #18
Jeps, tak igen :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester