Hej! Har du kollat så att information finns kvar i databasen, att ingen har lyckats tömma den genom något säkerhetshåll (SQL injection)? Hej! Kan du lägga in utskrift av några variabler så att man ser hur de ser ut: Det verkar som att POST-variablerna fylls men att where satsen ej byggs... Anledningen till problemet torde vara att inputfältens namn plötsligt har fått gemena begynnelsebokstäver; tidigare var de versala: Hej! Se till att det stämmer överens på alla tre ställena. Vad som används för tabellerna brukar emellertid inte ha någon betydelse. Det skumma är att om jag har samma på alla ställen(versal begynnelsebokstav) så får jag samma fel som tidigare, den hittar inga annonser oavsett vad jag väljer.... Pröva att byta ut Problemet kvarstår... Hur ser $alla_fält, $_POST och SQL-satsen nu när du prövar? Så här ser allt ut: I $alla_fält har fältnamnen versal initial (ex. 'Annonstyp'), men i ditt formulär gemen ('annonstyp'). Du ändrar nog enklast till gemener i $alla_fält: Det har jag försökt med tidigare. Det som händer då är jag inte får någon sökträff alls, även om jag gör en tom sökning... Du måste hur som helst ha samma på båda ställena, annars finns ingen chans att det fungerar. Nu fick jag ordning på den!Hjälp! Varför har min sökfunktion lagt av igen..?
Fick hjälp här av Per Persson för att få till en bra sökfunktion, det fick jag, den blev skitbra!
Nu har den helt plötsligt lagt av och visar alltid alla annonser, oberoende av sökkriterier.
Vad kan ha flippat ut?
[code: PHP]
if ($_POST['submitsearch'])
{
//Koppla upp mot MySQL
$dbh=mysql_connect ("", "", "") or die ('cannot connect to database because: ' . mysql_error());
mysql_select_db ("databas");
$alla_fält = array('Annonstyp', 'Lan', 'Annonsor', 'Kategori', 'Annonstext');
$where = array();
foreach($alla_fält as $fält)
{
if(!empty($_POST[$fält]))
{
$value = mysql_escape_string($_POST[$fält]);
$where[] = "$fält = '$value'";
}
}
if(count($where) > 0)
{
$where = 'WHERE ' . implode(' AND ', $where);
}
else
{
$where = '';
}
$query = "SELECT Annonsnummer, Datum, Rubrik, Kategori, Lan, Annonsor FROM annons $where ORDER BY Datum DESC";
$result = mysql_query($query) or die('Kunde inte söka annonser:<br>'.mysql_error());
$soktraffar = MYSQL_AFFECTED_ROWS();
if ($soktraffar == 0)
{
echo '<B>Hittade inga annonser som motsvarar din sökning...</B>';
}
else
{
echo 'Sökträffar: 1-'.$soktraffar.' av '.$soktraffar.';
//Hämta datan från databasen och skriva ut den
$result = mysql_query($query) or die ("Kunde inte hämta data ".mysql_error());
while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
echo $row['Datum'];
echo '<a class="soktraff" href="index.php?link=visatraff&id='.$row['Rubrik'].'" target="_new">'.$row['Rubrik'].'</a>';
osv...
}
}
}
[/code]
Var i koden är det mest troligt att något avlidit?
MVH
/SebastianSv: Hjälp! Varför har min sökfunktion lagt av igen..?
Sv:Hjälp! Varför har min sökfunktion lagt av igen..?
Allt finns kvar i databasen, struktur och innehåll stämmer... Även om jag väljer något alternativ bland sökkriterierna så kommer alla sökresultat fram...Sv: Hjälp! Varför har min sökfunktion lagt av igen..?
echo '<pre>';
print_r($_POST);
echo '</pre>';
echo $query;
Sv:Hjälp! Varför har min sökfunktion lagt av igen..?
Detta är vad som visas:
Vid "tom" sökning:
Array
(
[annonstext] =>
[annonstyp] => Finnes
[lan] =>
[kategori] =>
[annonsor] => Alla
[submitsearch] => Sök
)
SELECT Annonsnummer, Datum, Rubrik, Kategori, Lan, Annonsor FROM annons ORDER BY Datum DESC
Vid valda sökkriterier:
Array
(
[annonstext] =>
[annonstyp] => Finnes
[lan] => Halland
[kategori] => Ekonomi, Finans
[annonsor] => Företag
[submitsearch] => Sök
)
SELECT Annonsnummer, Datum, Rubrik, Kategori, Lan, Annonsor FROM annons ORDER BY Datum DESC
Sv: Hjälp! Varför har min sökfunktion lagt av igen..?
$alla_fält = array('Annonstyp', 'Lan', 'Annonsor', 'Kategori', 'Annonstext');
<code>(
[annonstext] =>
[annonstyp] => Finnes
[lan] =>
[kategori] =>
[annonsor] => Alla
[submitsearch] => Sök
)</code>
Enklast är nog att ändra i PHP-koden till$alla_fält = array('annonstyp', 'lan', 'annonsor', 'kategori', 'annonstext');
Sv:Hjälp! Varför har min sökfunktion lagt av igen..?
När jag ändrar dom så får jag inga träffar alls på någonting. I databasen har jag versal begynnelsebokstav så det kanske är därför det inte blir någon träff alls... Ska jag ändra till gemener i databasen tror du?Sv: Hjälp! Varför har min sökfunktion lagt av igen..?
Sv:Hjälp! Varför har min sökfunktion lagt av igen..?
Superskumt!
Det bästa alternativet är att ha små bokstäver överallt, för då blir det alla träffar, alltid...
Hur f*n ska jag göra... Håller på att bli tokig!Sv: Hjälp! Varför har min sökfunktion lagt av igen..?
$soktraffar = MYSQL_AFFECTED_ROWS();
mot
$soktraffar = mysql_num_rows($result);
Du behöver för övrigt inte köra om satsen i else-grenen som du gör:
$result = mysql_query($query) or die ("Kunde inte hämta data ".mysql_error());Sv:Hjälp! Varför har min sökfunktion lagt av igen..?
Dock så är koden mer effektiv kan jag tänka! Tack för tipset!Sv: Hjälp! Varför har min sökfunktion lagt av igen..?
Sv:Hjälp! Varför har min sökfunktion lagt av igen..?
$alla_fält:
Array
(
[0] => Annonstyp
[1] => Lan
[2] => Annonsor
[3] => Kategori
[4] => Annonstext
)
"Tom sökning"
Array
(
[annonstext] =>
[annonstyp] => Finnes
[lan] =>
[kategori] =>
[annonsor] => Alla
[submitsearch] => Sök
)
SELECT Annonsnummer, Datum, Rubrik, Kategori, Lan, Annonsor FROM annons ORDER BY Datum DESC
Vid inmatning av vissa sökkriterier:
Array
(
[annonstext] =>
[annonstyp] => Finnes
[lan] => Jönköping
[kategori] => Bygg, Anläggning
[annonsor] => Alla
[submitsearch] => Sök
)
SELECT Annonsnummer, Datum, Rubrik, Kategori, Lan, Annonsor FROM annons ORDER BY Datum DESC
...
Sv: Hjälp! Varför har min sökfunktion lagt av igen..?
$alla_fält = array('annonstyp', 'lan', 'annonsor', 'kategori', 'annonstext');Sv:Hjälp! Varför har min sökfunktion lagt av igen..?
Sv: Hjälp! Varför har min sökfunktion lagt av igen..?
Hur ser SQL-satsen ut efter att du fixat det?Sv:Hjälp! Varför har min sökfunktion lagt av igen..?
Tack för all hjälp!