webForumDet fria alternativet

SQL-sats som krånglar

6 svar · 275 visningar · startad av henkeny

henkenyMedlem sedan maj 200152 inlägg
#1

Då var det dags för ett nytt problem :-)

Har en select-lista jag väljer matkategori ur.
---------------main.php----------------

<select name="SnabbvalMat" onChange="document.location='snabbval_mat_res.php?kategori=' + this[this.selectedIndex].value;">

  \<option selected\>Snabbval Mat\</option\>
  \<option value="Svensk husmanskost"\>Svensk husmanskost\</option\>
  \<option value="Kött"\>Kött\</option\>
  \<option value="Fisk"\>Fisk\</option\>
  \<option value="Italienskt"\>Italienskt\</option\>
  \<option value="Kinesiskt"\>Kinesiskt\</option\>
  \<option value="Pizza"\>Pizza\</option\>
  \<option value="Vegetariskt"\>Vegetariskt\</option\>

</select>

--------------snabbval_mat_res.php-------------

<?
include("dbconn.inc");
$sql = "SELECT * FROM restaurang WHERE kat LIKE '%$kategori%";
$result=mysql_query("$sql");

?>
<table border="0" width="300" align="left">
<tr align="left">
<th>Restaurang</th>
<th><i>Geografisk placering</i></th>
</tr>

<?
while ( $row = mysql_fetch_array($result) )
{

?>

<tr>
<?
$uid = $row['id'];
$restname = $row['restname'];
$omrade = $row['omrade'];

$visaURL = "restur_pres.php?idnr=$uid";

?>
<td><a href="<? print $visaURL ?>"><? print $restname ?></a>&nbsp</td>
<td><i><? print $omrade ?>&nbsp</i></td>

</tr>

</font>
<?
}
mysql_close ($conn);
?>

Får felmeddelandet :

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/u1143/web/snabbval_mat_res.php on line 42

line 42 är:
while ( $row = mysql_fetch_array($result) )

haft detta felmeddelande innan, men jag kna inte komma på vad det är som strular nu..

tacksam för svar

/Henke

henkenyMedlem sedan maj 200152 inlägg
#2

Glöm det.......en jävla fnuttjävel för lite....och så hittar man det precis när man postat inlägg här.

Hej på er!

:birp
/Henke

@ndersMedlem sedan juni 200032 969 inlägg
#3

Du har glömt att stänga strängen inuti SQL-frågan.

$sql = "SELECT * FROM restaurang WHERE kat LIKE '%$kategori%'";

Använd gärna [ kod]- eller [ php]-taggar så blir din kod mer lättläst. (Utan inledande mellanslag då).

Mvh,

SPiNMedlem sedan mars 20007 896 inlägg
#4

Ändra följande i filen snabbval_mat_res.php, från:

<?
include("dbconn.inc");
$sql = "SELECT * FROM restaurang WHERE kat LIKE '%$kategori%";
$result=mysql_query("$sql");

?>

Till:

<?
include("dbconn.inc");
$sql = "SELECT * FROM restaurang WHERE kat LIKE '%$kategori%'";
$result=mysql_query( $sql )
     or die( mysql_error() );
?>

Jag tror att det beror på att du glömt en enkelfnutt i SQL-satsen, som du ser att jag lade till. Jag la också till 'or die'-raden, för att se om SQL-frågan genererar något fel - i så fall dör scriptet med felmeddelandet.

henkenyMedlem sedan maj 200152 inlägg
#5

tack för svaren så hemskt mycket!!

kom på att jag tänkt lite fel. det fungerar mycket riktigt nu.

men på första sidan main.php har jag färdiga kategorier som man väljer i drop-listen. Likaså i databasen finns dessa kategorier med så jag ska ju inte ha en SQL sats som denna som tar ungefärligt lika poster.

Min SQL-sats ska ju bara visa de poster i databasen som har EXAKT samma värde. T.ex. väljer jag pizza i select-listen ska den bara visa de poster som har denna katagori.

Hur skriver jag den sql-satsen???

SPiNMedlem sedan mars 20007 896 inlägg
#6

Om jag förstått dig rätt; Då byter du ut nyckelordet LIKE mot ett likhetstecken ( = ) och tar bord wildcard-tecknen ( % ).

SELECT blah FROM bluh WHERE blih = '$kategori'

@ndersMedlem sedan juni 200032 969 inlägg
#7

Möjligen missförstår jag frågan, men om du istället för operatorn LIKE använder = så får du ju en exakt jämförelse. (Bort med wildcards givetvis då också).

$sql = "SELECT * FROM restaurang WHERE kat = '$kategori'";

Mvh,

132 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)