Avatar billede clausberg Nybegynder
05. maj 2005 - 18:14 Der er 7 kommentarer og
1 løsning

SELECT problemer

Hej :)
Jeg er ved at lave en hjemmeside, hvor jeg vil samle alle mine madopskrifter. For at søge i databasen har jeg lavet følgende søgeformular:

<html>
<form method="post" action="http://www.xxxxxxxxxxxx.dk/results.php" target="_blank">
<div><p>
<label for="t1">Søgeord:</label><input type="text" name="Navn" id="t1" /><br>
<label for="t1">Kategori:</label><select name="Kategori" id="t1" size="1">
<option>Alle</option>
<option>Brunch</option>
<option>Fond & Saucer</option>
<option>Dessert</option>
</select>
<br>
<label for="t1">Ingredienser:</label><input type="text" name="Ingredienser" id="t1">
<br>
<label for="t1">Land:</label><select name="Land" id="t1" size="1">
<option>Alle</option>
<option>Italien</option>
<option>Frankrig</option>
<option>Tyrkiet</option>
</select>
<br>
<label for="t1">Kuverter:</label><select name="Kuverter" id="t1" size="1">
<option>Alle</option>
<option>1</option>
<option>2</option>
<option>4</option>
</select>
<br>
</div>
Search database: <input type="submit" value="Go!!" name="Go">
</form>                   
</html>

For at gøre det hele mere overskueligt, har jeg udeladt CSS koderne.

Den fil der henvises til i 1. linie (results.php) ser sådan ud:

<center>
<table border="1" cellpadding="5" cellspacing="0" bordercolor="#000000">
<tr>
<td width="60"><b>id</b></td>
<td width="100"><b>Søgeord</b></td>
<td width="70"><b>kategori</b></td>
<td width="150"><b>ingredienser</b></td>
<td width="70"><b>land</b></td>
<td width="70"><b>kuverter</b></td>
</tr>
<tr>
<td>
<? $hostname = "localhost";
$username = "xxxxxxxxxxxx"; // The username you created for this database.
$password = "xxxxxxxxxxx"; // The password you created for the username.
$usertable = "details"; // The name of the table you made.
$dbName = "xxxxxxxxxxxx"; // This is the name of the database you made.

MYSQL_CONNECT($hostname, $username, $password) OR DIE("DB connection unavailable");
@mysql_select_db( "$dbName") or die( "Unable to select database");
?>
<?
//error message (not found message)begins
$XX = "No Record Found, to search again please close this window";
//query details table begins
$query = mysql_query("SELECT * FROM details WHERE ".$_POST['metode']." LIKE '%".$_POST['search']."%' LIMIT 0, 50");
while ($row = @mysql_fetch_array($query))
{
$variable1=$row["id"];
$variable2=$row["søgeord"];
$variable3=$row["kategori"];
$variable4=$row["ingredienser"];
$variable5=$row["land"];
$variable6=$row["kuverter"];
//table layout for results

print ("<tr>");
print ("<td>$variable1</td>");
print ("<td>$variable2</td>");
print ("<td>$variable3</td>");
print ("<td>$variable4</td>");
print ("<td>$variable5</td>");
print ("<td>$variable6</td>");
print ("</tr>");
}
//below this is the function for no record!!
if (!$variable1)
{
print ("$XX");
}
//end
?>
</table>
</center>

Problemet er, at den linie der starter med "$query = mysql_query" helt sikkert er forkert (jeg går ud fra at problemet kan isoleres til denne ene sætning). jeg kan ganske enkelt ikke finde ud af at skrive denne sætning, således at den medtager feltet "søgeord", den valgte værdi i feltet "kategori", ingrediens osv...

Scriptet skulle også gerne give mulighed for, at man kan undlade at udfylde fx 1 af de ialt 5 felter - fx at man kun søger efter opskrifter udfra feltet "søgeord".

Help plz :)
-Claus
Avatar billede sukos Juniormester
05. maj 2005 - 18:26 #1
Hvor har du $_POST['metode'] henne, ud over i din query?
Og dine <option> skal jo lige ha' en value, hvis de skal bruges til noget.
Avatar billede clausberg Nybegynder
05. maj 2005 - 18:40 #2
$_POST[´metode´] er et levn fra et gammelt script - ved godt, at der ikke skal stå "metode", men jeg ved ikke hvad jeg skal skrive i stedet for,sådan at det passer med min søgeformular.

:-D Mine option skal naturligvis have en value - det er nu rettet.
Avatar billede sukos Juniormester
05. maj 2005 - 19:00 #3
hmm, ja, nu ved jeg jo så ik' lige hvordan din DB ser ud, hvilke kolonner du har, men det må jo være i stil med flg.

$query = mysql_query("SELECT * FROM details WHERE `madtype` LIKE '%".$_POST['Ingredienser']."%' LIMIT 0, 50") or die (mysql_error());

Her søges der jo så kun i en kolonne, "madtype", men så kan du jo sætte en OR på for at søge i flere
Avatar billede clausberg Nybegynder
05. maj 2005 - 21:21 #4
Det må jeg lige afprøve - det lyder som en løsning :-D

Men hvis nu jeg vil søge på flere kolonner på een gang - hvordan bruger jeg så "or". Jeg er nemlig lidt i tvivl om, hvordan den skrives ind i min $query sætning.

Der må også være mulighed for at lave en kombineret søgning, hvor man bruger "and"... er der ikke noget der hedder det?
Avatar billede clausberg Nybegynder
05. maj 2005 - 22:40 #5
Jeg har fået det til at virke - fedt :-D

Men jeg er stadig i tvivl om hvordan man bruger kommandoen or... og hvis man skal kombinere en søgning, så skal man vel bruge noget der hedder and... eller noget i den retning?
Avatar billede sukos Juniormester
06. maj 2005 - 09:03 #6
Bruger du OR bliver det også taget med
Bruger du AND så skal alle kreterier være opfyldt

$query = mysql_query("SELECT * FROM details WHERE `madtype` LIKE '%".$_POST['Ingredienser']."%' OR `hovedret` LIKE '%".$_POST['Ingredienser']."%' LIMIT 0, 50") or die (mysql_error()); // Den ene eller den anden

$query = mysql_query("SELECT * FROM details WHERE `madtype` LIKE '%".$_POST['Ingredienser']."%' AND `land` LIKE '%".$_POST['Land']."%' LIMIT 0, 50") or die (mysql_error()); // Både den ene og den anden skal passe



Men ved ikke, har ikke rigtigt prøvet mig med at lave søgning i DB
Måske der er nemmere/enklere måder at gøre det på?
Lav evt. et spm i myqsl kategorien
Avatar billede clausberg Nybegynder
07. maj 2005 - 20:51 #7
Jeg prøver lige med et spørgsmål i mysql.

men mange tak for hjælpen - smider du lige et svar
Avatar billede clausberg Nybegynder
17. maj 2005 - 08:40 #8
Tusind tak for hjælpen, men du skal vel have point?
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