MySQL LIKE
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<?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>';
}
}
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>';
}
}
Gewijzigd op 22/01/2012 17:46:40 door Jurrien P
Verdiep je er eens in, wat de mogelijkheden zijn:
http://dev.mysql.com/doc/refman/5.0/en/string-comparison-functions.html
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
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.
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?
$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.
Ja, een stuk van de tabel moet boven de while komen.