Hallo,

Ik heb dus een zoeksysteem, het werkt bijna zoals ik het wil. Als ik in mijn database dit heb:
______________
Naam

Test
Test1
Test2
Test3
Lalal
_______________

En ik zoek op: Test, dan krijg ik alleen maar 'Test', en niet Test1, Test2, Test3 .. Ik heb gezien / gelezen dat ik de % moest aanpassen, maar ik heb ze allemaal geprobeerd zonder enige effect. Hopelijk is mijn vraag duidelijk.

[code]
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$zoekterm = mysql_real_escape_string(addslashes(trim($_POST['zoekterm'])));

$sql = "SELECT * FROM PlayerInfo WHERE user LIKE '$zoekterm%'";
$result = mysql_query($sql);
$row = mysql_fetch_array( $result );
{ ?>
<table id="table1" class="gtable sortable">
<thead>
<th class="first" width="5">
<a href="http://www.dawn-tdm.com/UCP/psummary.php?sort=1">#</a>;
</th>
<th width="700">
Name
</th>
<th width="250">
<a href="http://www.dawn-tdm.com/UCP/psummary.php?sort=3">Score</a>;
</th>
<th width="99">
<a href="http://www.dawn-tdm.com/UCP/psummary.php?sort=2">Cash</a>;
</th>
<th width="5">
<a href="http://www.dawn-tdm.com/UCP/psummary.php?sort=4">Wins</a>;
</th>
<th class="last" width="5">
<a href="http://www.dawn-tdm.com/UCP/psummary.php?sort=5">Muted</a>;
</th>
</thead> <?php

echo'<tr class="bg2">';
echo'<td class="first">';
echo $row['ID'];
echo'</td>';
echo'<td title="">';
echo "<a href=\"http://www.Dawn-tdm.com/UCP/profile.php?id=$row[ID]\">$row[user]</a>; ";
echo'<td>';
echo $row['Score'];
echo'<td title="">';
echo "$"; echo $row['Cash'];
echo'<td title="">';
echo $row['Wins'];
echo'<td class="last">';
if ($row['Muted'] == "0")
{
echo'No';
}
else if ($row['Muted'] == "1")
{
?><b><?php echo'Yes'; ?></b><?php
}
echo'</td>';
echo'</tr>';
echo'</table>';
}
}
Haal $vars buiten de quotes.
Bouw foutafhandeling in.

Zo te zien zou het moeten werken.
Noppes Homeland op 22/01/2012 17:49:41

Waarom post je een geheel script als het alleen maar draait om het sql statement en dan ook nog een specifiek over LIKE.

Verdiep je er eens in, wat de mogelijkheden zijn:
http://dev.mysql.com/doc/refman/5.0/en/string-comparison-functions.html


Ik weet niet of de fout in the query zit of ergens anders, wat ik denk dat de query gewoon juist is.
$zoekterm = mysql_real_escape_string(addslashes(trim($_POST['zoekterm']))) is wel een heel bijzondere....

Debuggen: wat krijg je als je de query echoot?
Als je die kopieert en rechtstreeks uitvoert op je database (via phpadmin of gelijkwaardig), gaat het dan goed?
En, zoals SanThe ook aangeeft, bouw foutafhandeling in.
Als ik de query echo: SELECT * FROM PlayerInfo WHERE user LIKE '%test%', niks mis mee toch?
Probleem zit ook helemaal niet in je query, maar in deze regel:

$row = mysql_fetch_array( $result );

Je loopt niet door alle resultaten heen, maar alleen maar door de eerste. Het maakt dus helemaal niet uit hoeveel resultaten je uit je query krijgt, je zal er op deze manier altijd maar een zien.
Als ik er een while aanknoop dan laat hij helemaal niets meer zien.
Je hebt zeker de ; niet weggehaald aan het eind.....
Sorry, niet helemaal slim van mij. Bedankt Erwin.
En overigens gaat het dan waarschijnlijk ook nog fout, want dan bouw je bij elk record de hele tabel opnieuw op. Daar zal je dus ook nog het een en ander moeten aanpassen.

Reageren