een while () loop tellen....
Ik ben bezig een zoekfunctie in te bouwen op een website voor iemand, dat werkt allemaal prima met onderstaande code alleen nu wil ik graag laten weergeven hoeveel resultaten er gevonden zijn...
Hoe tel ik de while() loop??
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
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
<?
//-- natuurlijk moet er eerst een connectie met de database worden gemaakt:
if (!@mysql_select_db("databasenaam", @mysql_connect("localhost", "gebruikersnaam", "wachtwoord")))
{
echo "Er kan geen database connectie gemaakt worden.";
exit();
}
//-- $HTTP_POST_VARS[zoekterm] is de naam van het zoekveld in het formulier wat we
//-- hebben gemaakt in het vorige 'hoofdstuk'. Dit is dus de SQL code:
$sql = "SELECT id,content FROM vprod_content WHERE content LIKE '%$HTTP_POST_VARS[zoekterm]%'";
//-- voer de SQL code uit en zet dit in een variabele zodat we zometeen kunnen
//-- kijken of er een resultaat is
$res = mysql_query($sql);
//-- bekijk nu of er een resultaat is, of het zoekwoord dus gevonden is of niet
if (mysql_num_rows($res) >= 1)
{
//-- Het aantal resultaten tellen:
$aantal= count("$row");
echo "<p>Aantal gevonden resultaten: <b> $aantal</b></p><br>";
//-- er is een resultaat gevonden, toon de resultaten via een while () loop
while ($row = mysql_fetch_array($res))
{
echo "<p>Gevonden pagina: <b><a href=\"index.php?id=$row[id]\">$row[id]</a></p></b>";
echo "Gevonden in deze tekst: <b>$row[content]</b></p><br><br>";
}
echo "<a href=\"index.php?id=zoeken\" title=\"zoek opnieuw\">zoek opnieuw</a>";
}
//-- als er geen resultaat is gevonden, dus als het zoekwoord niet gevonden is:
else
{
echo "<p>Er is niets gevonden op uw zoekterm:<b> $HTTP_POST_VARS[zoekterm]</b></p>";
echo "<p><a href=\"index.php?id=zoeken\" title=\"zoek opnieuw\">zoek opnieuw</a></p>";
}
?>
//-- natuurlijk moet er eerst een connectie met de database worden gemaakt:
if (!@mysql_select_db("databasenaam", @mysql_connect("localhost", "gebruikersnaam", "wachtwoord")))
{
echo "Er kan geen database connectie gemaakt worden.";
exit();
}
//-- $HTTP_POST_VARS[zoekterm] is de naam van het zoekveld in het formulier wat we
//-- hebben gemaakt in het vorige 'hoofdstuk'. Dit is dus de SQL code:
$sql = "SELECT id,content FROM vprod_content WHERE content LIKE '%$HTTP_POST_VARS[zoekterm]%'";
//-- voer de SQL code uit en zet dit in een variabele zodat we zometeen kunnen
//-- kijken of er een resultaat is
$res = mysql_query($sql);
//-- bekijk nu of er een resultaat is, of het zoekwoord dus gevonden is of niet
if (mysql_num_rows($res) >= 1)
{
//-- Het aantal resultaten tellen:
$aantal= count("$row");
echo "<p>Aantal gevonden resultaten: <b> $aantal</b></p><br>";
//-- er is een resultaat gevonden, toon de resultaten via een while () loop
while ($row = mysql_fetch_array($res))
{
echo "<p>Gevonden pagina: <b><a href=\"index.php?id=$row[id]\">$row[id]</a></p></b>";
echo "Gevonden in deze tekst: <b>$row[content]</b></p><br><br>";
}
echo "<a href=\"index.php?id=zoeken\" title=\"zoek opnieuw\">zoek opnieuw</a>";
}
//-- als er geen resultaat is gevonden, dus als het zoekwoord niet gevonden is:
else
{
echo "<p>Er is niets gevonden op uw zoekterm:<b> $HTTP_POST_VARS[zoekterm]</b></p>";
echo "<p><a href=\"index.php?id=zoeken\" title=\"zoek opnieuw\">zoek opnieuw</a></p>";
}
?>
Gewijzigd op 01/01/1970 01:00:00 door Mark
ok, ik weet niet waarom hij het 2x weergeeft, en krijg het ook niet weg. excuus
Dit geeft het aantal gevonden rijen die matchen met je query.
2.) Zoeken met %LIKE% is niet de beste manier om te zoeken, als je in grotere stukken tekst wilt zoeken.
Ga eens opzoek naar FULLTEXT search.
3.) $HTTP_POST_VARS[zoekterm]..
Welkom in de 20e eeuw. Tegenwoordig gebruiken we $_POST ipv HTTP_POST_VARS. Nieuwe servers zijn waarschijnlijk niet eens meer compateble met je scriptje.
4.) Verder is het niet echt veilig, de variabelen worden rechtstreeks in de QUERY te zetten.
Zodra iemand ook maar een ' in je zoekstring gooit, gaat het op z'n gat, laat staan als iemand met kwade bedoelingen dit script gebruikt.
Kijk eens naar SQL Injection
5.) Variabelen halen we buiten de quotes. Dus
Code (php)
Zeg nou zelf, wat is duidelijker als je een stukje script aan het doorspitten bent, naar fouten?
6.) Het is niet netjes om een array waarde (bv $_POST['lala']) aan te roepen als $_POST[lala] (dus zonder haakjes). Dit kan als gevolg hebben dat PHP je input 'lala' als CONSTANTE herkent, en dus niet de variabele aanroept, die je zou willen.
Gewijzigd op 01/01/1970 01:00:00 door Pieter van Linschoten
Mark schreef op 27.04.2009 22:34:
ok, ik weet niet waarom hij het 2x weergeeft, en krijg het ook niet weg. excuus
Pas je post even aan en gebruik de knop om dit te doen.
Gelieve Niet Bumpen:
Twee of meer keer achter elkaar in een topic posten heet bumpen. Bumpen is pas na 24 uur toegestaan en kan een reden zijn voor de admins en moderators om een topic te sluiten. Gebruik indien nodig de knop om je tekst aan te passen.
SanThe.
Maar ik krijg die 2x niet weg omdat ik die niet zie staan als ik op het wijzig icoontje klik
Jij had [php] gebruikt in plaats van . Hoe het komt dat het dan twee keer wordt weergegeven is mij ook een raadsel.