Permalänk
Medlem

söka i flera variabler

har 2 saker jag gärna vill ha lite hjälp med

1. Har gjort en film databas och skulle vilja göra en sökning i den, så det jag undrar är om man kan söka med ett sök ord i flera olika variabler samtidigt och få de att skrivas ut på skärmen...

dvs att söker jag på tex: "tom" så ska jag få upp träffar som "tom hanks", "tomten är far till alla barnen"...

variablerna kan man nu välja i en drop down lista, men den vill jag inte ha kvar.

de variablerna som det ska sökas i är
movie
actors
director

2. Istället för att söka på genre och att skriva in det i en sökruta så skulle jag vilja ha vanlig text, (länkar?) med de olika genrerna som ska vara klickbara och sedan skriva ut filmer i just den genren...

om man kan städa koden är det oxå en trevlig påpekelse...

så här var det väl tänkt att sidan skulle se ut när den var klar ->
http://joco.se/temp/
notera att sidan inte är komplett

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>hmm.php</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <style type="text/css"> body {background-color: #333333;} body {font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px; color: #000000;} td {font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px;} a:link { text-decoration: none; color: #000000} a:visited { text-decoration: none; color: #000000} a:active { text-decoration: none; color: #000000} a:hover { text-decoration: underline; color: #000000} </style> </head> <body> <p align="center"> <table width="800" border="0" cellspacing="1" cellpadding="0"> <tr> <td valign="top"> <table bgcolor="#535353" border="0" cellpadding="0" cellspacing="0"> <tr> <td> <h2>Sök film</h2> <form name="form1" method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>"> <input name="Search" type="text"><br> <select name="Select"> <option value="Movie">Movie</option> <option value="Actors">Actor</option> <option value="Director">Director</option> </select> <input type="submit" name="submit" value="Sök Film"> </form> </td> </tr> <tr> <td height="200" bgcolor="#666666"> <!--Genre--> Action<br> Barn/Familj<br> Drama<br> Komedi<br> Krig<br> Romantik<br> Sci-Fi<br> Skräck<br> Tecknat<br> Thriller<br> Western<br> Äventyr<br> </td> </tr> </table> </td> <td valign="top" width="20"> </td> <td valign="top" bgcolor="#333333" rowspan="3"> <?php include "config.php"; include "connect_database.php"; // har formuläret körts? if(isset($_POST['submit'])) { // avgör vilket fält användaren valt switch($_POST['Select']) { case 'Movie': $type = 'Movie'; // namnet på fältet där filmtiteln är lagrad break; case 'Actors': $type = 'Actors'; // namnet på fältet där skådespelarna är lagrade break; case 'Director': $type = 'Director'; // namnet på fältet där regissören är lagrad break; } // hämtar information från den angivna tabellen $searchstring = mysql_real_escape_string($_POST['Search']); $sql = "SELECT * FROM movie WHERE {$type}='{$searchstring}'"; $result = mysql_query($sql) or die(mysql_error()); // HTML-tabellens formatering - tabellstart echo " <tr><td height='72'> </td> <td><strong>Titel</strong></td> <td><strong>Inspelningsår</strong> </td> <td><strong>Genre</strong></td> <td><strong>Skådespelare</strong></td> <td><strong>Regissör</strong></td> </tr>"; // hämtar resultatrader från tabellen while($row = mysql_fetch_assoc($result)) { // skriver ut innehållet i raderna till HTML-tabellen echo "<tr><td height='72'>"; echo "<img height='70' width='50' alt='' src='pics/"; echo $row['Movie']; echo ".jpg'>"; echo "</td><td width='120'><b>"; echo $row['Movie']; echo "</b></td><td width='32'>"; echo $row['Year']; echo "</td><td width='47'>"; echo $row['Genre']; echo "</td><td width='199'>"; echo $row['Actors']; echo "</td><td width='98'>"; echo $row['Director']; echo "</td></tr>"; } // stänger databasen mysql_close($opendb); } //om ingen sökning gjorts else { // hämtar information från den angivna tabellen $result = mysql_query("SELECT * FROM movie") or die(mysql_error()); // HTML-tabellens formatering - tabellstart echo " <tr><td height='72'> </td> <td><strong>Titel</strong></td> <td><strong>Inspelningsår</strong> </td> <td><strong>Genre</strong></td> <td><strong>Skådespelare</strong></td> <td><strong>Regissör</strong></td> </tr>"; // hämtar resultatrader från tabellen while($row = mysql_fetch_assoc($result)) { // skriver ut innehållet i raderna till HTML-tabellen echo "<tr><td height='72'>"; echo "<img height='70' width='50' alt='' src='pics/"; echo $row['Movie']; echo ".jpg'>"; echo "</td><td width='120'><b>"; echo $row['Movie']; echo "</b></td><td width='32'>"; echo $row['Year']; echo "</td><td width='47'>"; echo $row['Genre']; echo "</td><td width='199'>"; echo $row['Actors']; echo "</td><td width='98'>"; echo $row['Director']; echo "</td></tr>"; } // stänger databasen mysql_close($opendb); } ?> </td> </tr> </table> </body> </html>

vart ett långt inlägg, hoppas att någon har ork att kolla igenom

Tack på förhand
Pontus

Permalänk
Medlem

>> dvs att söker jag på tex: "tom" så ska jag få upp träffar som "tom hanks", "tomten är far till alla barnen"...

select * from moviez where title='tom%'

Visa signatur

(defmacro lisp-bootstrap (expr) expr)

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av tomasc
>> dvs att söker jag på tex: "tom" så ska jag få upp träffar som "tom hanks", "tomten är far till alla barnen"...

select * from moviez where title='tom%'

hur ska jag lägga in det i koden om den ska kunna söka i variabeln movies, actors och director?

edit 1... såg nu, ska testa

edit 2... det funkade inte något bra, sökfunktionen gillar inte % tecken,
skrev koden så här

$sql = "SELECT * FROM movie WHERE {$type}='{$searchstring}%'";

och gör jag en sökning då så kommer inget upp

gör jag så här:

$sql = "SELECT * FROM movie WHERE {$type}='{$searchstring%}'";

så blir det detta

Parse error: parse error, unexpected '%', expecting '}'

andra tips?

Permalänk
Medlem

Testa med WHERE ".$type." LIKE '".$searchstring."%'

Visa signatur

MVH Adam
Kulturstrategisk aggregator

Permalänk
Medlem

tack tack, lite problem kvar bara

$sql = "SELECT * FROM movie WHERE {$type} LIKE '{$searchstring}%'";

det funkar, och

$sql = "SELECT * FROM movie WHERE {$type} LIKE '%{$searchstring}'";

funkar.
men jag kan inte skriva

$sql = "SELECT * FROM movie WHERE {$type} LIKE '%{$searchstring}%'";

som jag helst av allt vill ha, så att man matcha både början och slutet på ett ord går det att lösa?

Sen var det frågan hur man ska få sökningen att söka i 3 variabler samtidigt, tips?

/Pontus

edit: det funkar nu med

$sql = "SELECT * FROM movie WHERE {$type} LIKE '%{$searchstring}%'";

av någon konstig anledning.. är väl servern som är lite seg med att uppdatera, men en fråga återstår ->
Sen var det frågan hur man ska få sökningen att söka i 3 variabler samtidigt, tips?

Permalänk
Medlem

En variant vore kanske att köra med OR.

SELECT * FROM movie WHERE {$type} LIKE '{$searchstring}% OR {$type2} LIKE '{$searchstring}%;

Helt otestat och så men det borde väll kanske fungera.

Permalänk
Medlem

$sql = "SELECT * FROM movie WHERE movie LIKE '%{$searchstring}%' OR actors LIKE '%{$searchstring}%' OR director LIKE '%{$searchstring}%'";

vart det o det funkade klockrent.

någon som har tips på hur man ska få en genre sökning med klickning på länkar?
design ide -> http://joco.se/temp/