Min sökfunktion fungerar nästan. Men det är en grej som gör att det blir error...
Här följer lite kodexempel!
Detta fungerar:
// Hämta sökresultaten
$get = mysql_query("SELECT ... produkter_biltillbehör.id ... FROM sns_produkter_biltillbehör WHERE ... produktnamn LIKE '%" . $sok . "%' OR beskrivning LIKE '%" . $sok . "%' ... ORDER BY produktnamn");
Men när jag sedan vill att man ska söka igenom id också, så funkar det inte:
// Hämta sökresultaten
$get = mysql_query("SELECT ... produkter_biltillbehör.id [b]produkter_biltillbehör.id AS produkt_id[/b] ... FROM sns_produkter_biltillbehör WHERE ... produktnamn LIKE '%" . $sok . "%' OR beskrivning LIKE '%" . $sok . "%' [b] OR produkt_id LIKE '%" . $sok . "%'[/b] ... ORDER BY produktnamn");
Felmeddelandet lyder:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/kunder/www/sokresultat.php on line 78
tydalMedlem sedan juni 20034 013 inlägg Visa hela SQL-satsen som det blir fel på i stället. Och visa resultatet av mysql_error() efteråt. Då kan ju vi, och kanske du också, se vad det är för fel.
@ndersMedlem sedan juni 200032 969 inlägg Det kan också vara bra att separera fält i SELECT-frågan med kommatecken.
Tråden flyttas från PHP..
Ok, nu skrev jag bara koden för hand. Jag kopierar hela koden här då.
<?php
// Öppna databasen
require 'inkludera/databas.php';
// Räkna sökresultaten
$get = mysql_query("SELECT sns_bilmärken.id, sns_bilmärken.bilmärke, sns_bilmodeller.id, sns_bilmodeller.bilmodell, sns_kategorier_biltillbehör.id, sns_kategorier_biltillbehör.kategorinamn, sns_produkter_biltillbehör.id AS produkt_id, sns_produkter_biltillbehör.produktnamn, sns_produkter_biltillbehör.id_bilmodell, sns_produkter_biltillbehör.id_bilmärke, sns_produkter_biltillbehör.bild, sns_produkter_biltillbehör.beskrivning, sns_produkter_biltillbehör.pris, sns_produkter_biltillbehör.id_kategori, sns_produkter_biltillbehör.tid, sns_produkter_biltillbehör.datum FROM sns_produkter_biltillbehör
INNER JOIN sns_kategorier_biltillbehör ON sns_produkter_biltillbehör.id_kategori = sns_kategorier_biltillbehör.id
INNER JOIN sns_bilmodeller ON sns_produkter_biltillbehör.id_bilmodell = sns_bilmodeller.id
INNER JOIN sns_bilmärken ON sns_produkter_biltillbehör.id_bilmärke = sns_bilmärken.id WHERE produktnamn LIKE '%" . $sok . "%' OR beskrivning LIKE '%" . $sok . "%' OR bilmodell LIKE '%" . $sok . "%' OR bilmärke LIKE '%" . $sok . "%' OR kategorinamn LIKE '%" . $sok . "%' OR pris LIKE '%" . $sok . "%' OR produkt_id LIKE '%" . $sok . "%' ORDER BY produktnamn", $open);
$rowCount = mysql_numrows($get);
// Kolla hur många resultat som hittades
if ($rowCount == '0')
{
echo "Din sökning på ordet <span class=sok><b>$sok</b></span> gav inga resultat.<br/>";
echo "<li/><a href=sok.php>Ny sökning</a>";
}
else
{
if ($rowCount == '1')
{
echo "Din sökning på ordet <span class=sok><b>$sok</b></span> återfanns i $rowCount produkt.<br/>";
echo "<li/><a href=sok.php>Ny sökning</a><br/><br/>";
}
else
{
echo "Din sökning på ordet <span class=sok><b>$sok</b></span> återfanns i $rowCount produkter.<br/>";
echo "<li/><a href=sok.php>Ny sökning</a><br/><br/>";
}
echo "<table border=0 width=555px cellspacing=0 cellpadding=0>";
// Hämta sökresultaten
$get = mysql_query("SELECT sns_bilmärken.id, sns_bilmärken.bilmärke, sns_bilmodeller.id, sns_bilmodeller.bilmodell, sns_kategorier_biltillbehör.id, sns_kategorier_biltillbehör.kategorinamn, sns_produkter_biltillbehör.id AS produkt_id, sns_produkter_biltillbehör.produktnamn, sns_produkter_biltillbehör.id_bilmodell, sns_produkter_biltillbehör.id_bilmärke, sns_produkter_biltillbehör.bild, sns_produkter_biltillbehör.beskrivning, sns_produkter_biltillbehör.pris, sns_produkter_biltillbehör.id_kategori, sns_produkter_biltillbehör.tid, sns_produkter_biltillbehör.datum FROM sns_produkter_biltillbehör
INNER JOIN sns_kategorier_biltillbehör ON sns_produkter_biltillbehör.id_kategori = sns_kategorier_biltillbehör.id
INNER JOIN sns_bilmodeller ON sns_produkter_biltillbehör.id_bilmodell = sns_bilmodeller.id
INNER JOIN sns_bilmärken ON sns_produkter_biltillbehör.id_bilmärke = sns_bilmärken.id WHERE produktnamn LIKE '%" . $sok . "%' OR beskrivning LIKE '%" . $sok . "%' OR bilmodell LIKE '%" . $sok . "%' OR bilmärke LIKE '%" . $sok . "%' OR kategorinamn LIKE '%" . $sok . "%' OR pris LIKE '%" . $sok . "%' OR produkt_id LIKE '%" . $sok . "%' ORDER BY produktnamn");
// Highlighta sökordet
function colorit ($get, $sok)
{
$get = preg_replace ("/(.*?)(" . $sok . ")(.*?)/is", "\\1<span class=sok>\\2</span>\\3", $get);
return $get;
}
while($userRow = mysql_fetch_array($get))
{
echo "<tr>";
echo "<td bgcolor=#FBFAFA>";
echo "<table border=0 bgcolor=#000000 width=67px height=50px cellspacing=0 cellpadding=1>";
echo "<tr>";
echo "<td>";
echo "<a href=bilder/produkter/".$userRow['bild']." onclick=\"imgPopup5(this.href); return false;\"><img src=bilder/produkter/".$userRow['bild']." border=0 width=67px height=50px title=\" Förstora \"></a>";
echo "</tr>";
echo "</td>";
echo "</table>";
echo "</td>";
echo "<td width=20px bgcolor=#FBFAFA>";
echo " ";
echo "</td>";
echo "<td bgcolor=#FBFAFA>";
echo "<b>Bilmärke</b><br/>";
echo colorit($userRow['bilmärke'],$sok);
echo " ";
echo colorit($userRow['bilmodell'],$sok);
echo "</td>";
echo "<td width=20px bgcolor=#FBFAFA>";
echo " ";
echo "</td>";
echo "<td bgcolor=#FBFAFA>";
echo "<b>Pris</b><br/>";
echo colorit($userRow['pris'],$sok);
echo " kr";
echo "</td>";
echo "<td width=20px bgcolor=#FBFAFA>";
echo " ";
echo "</td>";
echo "<td bgcolor=#FBFAFA>";
echo "<b>Artikel ID</b><br/>";
echo colorit($userRow['produkt_id'],$sok);
echo "</td>";
echo "<td width=20px bgcolor=#FBFAFA>";
echo " ";
echo "</td>";
echo "<td bgcolor=#FBFAFA>";
echo "<b>";
echo colorit($userRow['produktnamn'],$sok);
echo "</b><br/>";
echo colorit($userRow['beskrivning'],$sok);
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td height=5px>";
echo "</td>";
echo "</tr>";
}
// Stäng databasen
mysql_close($open);
echo "</table>";
}
?>
Ja det glömde jag...
Warning: mysql_error(): 6 is not a valid MySQL-Link resource in /home/kunderwww/sokresultat.php on line 133
tydalMedlem sedan juni 20034 013 inlägg I stället för $get = mysql_query("SELECT osv... så skriver du:
$query = "SELECT osv... ";
echo($query);
$get = mysql_query($query);
echo(mysql_error());
Då får du fram hela sql-satsen och mysql_error efteråt.
Du hade nog råkat lägga mysql_error efter att du kört mysql_close, och då har den ju stängt förbindelsen till Mysql och kan därmed inte kolla felmeddelandet.
Jag kan väl inte skriva ut mysql_error() på echo? Då skriver den ju bara ut orden "mysql_error()"... ?
Jag får alltid samma felmeddelande:
Warning: mysql_numrows(): supplied argument is not a valid MySQL result resource in /home/kunder/www/sokresultat.php on line 42
Din sökning på ordet 87 återfanns i produkter.
# Ny sökning
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/kunder/www/sokresultat.php on line 82
tydalMedlem sedan juni 20034 013 inlägg echo("mysql_error()"); skriver ut orden mysql_error, men du ska skriva echo(mysql_error()); vilket i stället skriver ut resultatet av funktion mysql_error som talar om vad du får för felmeddelande i Mysql.
Felmeddelandet du klistrat in talar om att du ska kolla på vad Mysql ger för felmeddelande.
Ja, wow. Nu får man fram lite nyttig information.
Unknown column 'produkt_id' in 'where clause'
Men jag hämtar ju produkt_id
sns_produkter_biltillbehör.id AS produkt_id
@ndersMedlem sedan juni 200032 969 inlägg Det är inte alltid man kan använda de alias man ger fält i SQL-frågan. Du får nog använda sns_produkter_biltillbehör.id i WHERE-satsen istället.
Jamen äntligen funkar det :) Tack för era svar!