Foutmelding blijft maar terug komen
het gaat om de volgende code, maar ik kan geen fouten bespeuren. iemand een idee wat het kan zijn?
(iedere tip/terugkoppeling is welkom, ik ben een beginner en wil heel graag leren!!)
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
58
59
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
58
59
<?php
$button = $_GET ['Zoeken'];
$search = $_GET ['search'];
if(!$button)
echo "U heeft geen zoekwoord ingevoerd";
else
{
if(strlen($search)<=1)
echo "zoekterm te kort";
else{
echo "U zocht naar <b>$search</b> <hr size='1'></br>";
mysql_connect("localhost","your mysql username","password");
mysql_select_db("your database name");
$search_exploded = explode (" ", $search);
foreach($search_exploded as $search_each)
{
$x++;
if($x==1)
$construct .="keywords LIKE '%$search_each%'";
else
$construct .="AND keywords LIKE '%$search_each%'";
}
$construct ="SELECT * FROM searchengine WHERE $construct";
$run = mysql_query($construct);
$foundnum = mysql_num_rows($run);
if ($foundnum==0)
echo "Geen resultaten gevonden voor <b>$search</b>.</br></br>1.
Controleer uw spelling";
else
{
echo "$foundnum resultaten gevonden !<p>";
while($runrows = mysql_fetch_assoc($run))
{
$title = $runrows ['titel'];
$desc = $runrows ['Omschrijving'];
$url = $runrows ['url'];
echo "
<a href='$url'><b>$title</b></a><br>
$desc<br>
<a href='$url'>$url</a><p>
";
}
}
}
}
?>
$button = $_GET ['Zoeken'];
$search = $_GET ['search'];
if(!$button)
echo "U heeft geen zoekwoord ingevoerd";
else
{
if(strlen($search)<=1)
echo "zoekterm te kort";
else{
echo "U zocht naar <b>$search</b> <hr size='1'></br>";
mysql_connect("localhost","your mysql username","password");
mysql_select_db("your database name");
$search_exploded = explode (" ", $search);
foreach($search_exploded as $search_each)
{
$x++;
if($x==1)
$construct .="keywords LIKE '%$search_each%'";
else
$construct .="AND keywords LIKE '%$search_each%'";
}
$construct ="SELECT * FROM searchengine WHERE $construct";
$run = mysql_query($construct);
$foundnum = mysql_num_rows($run);
if ($foundnum==0)
echo "Geen resultaten gevonden voor <b>$search</b>.</br></br>1.
Controleer uw spelling";
else
{
echo "$foundnum resultaten gevonden !<p>";
while($runrows = mysql_fetch_assoc($run))
{
$title = $runrows ['titel'];
$desc = $runrows ['Omschrijving'];
$url = $runrows ['url'];
echo "
<a href='$url'><b>$title</b></a><br>
$desc<br>
<a href='$url'>$url</a><p>
";
}
}
}
}
?>
Let er ook op dat de MySQL-functies die je gebruikt binnenkort niet meer zullen werken. Kijk eens naar de MySQLi functies of PDO.
hoi Ariën, ontzettend bedankt voor je snelle reactie. ik zoek al twee dagen naar de fout. lol ;)
Mag ik misschien vragen uit welke tutorial je dit hebt geleerd? Ik zie een hoop fouten en eigenaardigheden namelijk.
Via Google kwam ik op een filmpje. Als je een betere bron weet hoor ik het heel graag.
En uiteraard zou ik graag vernemen wat er verder fout is en waarom het fout is.
Alvast bedankt.
Gewijzigd op 30/01/2017 07:39:04 door Rick Limmen
isset of de variabelen bestaan. Je kan ook meerdere variabelen in insset gebruiken:
2) Variabelen overschrijven heeft weinig nut, en maak je applicatie onoverzichtelijker.
Waarom zou je $_GET['search'] in $search willen plaatsen? Is het makkelijker te typen? Nee, een goede editor heeft wel 'auto-complete' die de juiste variabelen wel aanvult.
3) Gebruik geen mysql_.....() functies meer. In PHP 7 zijn ze geschrapt en in PHP 5.5 worden ze al bestempeld als 'afgekeurd'. De nieuwe manier om acties op je MySQL/Maria-database uit te voeren is door MySQLi-functies te gebruiken, of PDO.
4) Inspringen van je code. Zoals je in mijn voorbeeld code kan zien is de code netjes ingesprongen, door middel van tabs. Zorg dat je met de TAB-knop elke if/for/while/function/class netjes inspringt, zodat je in een oogopslag kan zien welke statement bij welke accolade hoort.
Als ik 4 accolades zie die lijnrecht onder elkaar staan, dan ben ik benieuwd of je direct ziet bij welke statement of functie de derde accolade hoort.
Een goede editor springt bovendien al helemaal automatisch in.
4) Foutafhandeling op je queries. Ook queries kunnen fouten maken, of het nou een foute querie van jouw is, of een probleem in je database die mogelijk corrupt kan zijn. Zorg ervoor dat je fouten aangeeft. Bij voorkeur log je de fouten in een speciaal bestand, en vertel je de gebruiker dat er een technische storing in je site is.
Handig leesvoer: https://www.phphulp.nl/php/tutorial/data-verwerking/foutafhandeling-query-sql/735/
Let er wel op dat deze tutorial zich richt op de functies van MySQL i.p.v. MySQLi, dus je zult eerder even wat moeten inlezen op MySQLi.
Met andere woorden: Er is nog een hoop werk aan de winkel. Ikzelf raad CodeAcademy aan om PHP te leren, en niet zomaar een willekeurig YouTube-filmpje. Die code kan je niet makkelijk foutloos overnemen.
1) Allereerst gebruik je variabelen waarvan je niet zeker weet of ze bestaan. Om te beginnen met de $_GET variabelen. Als deze niet bestaan, en dus niet in de URL opgeroepen worden) zal dit een Notice-melding met 'Undefined index' teruggeven. Controleer daarom met Code (php)
2) Variabelen overschrijven heeft weinig nut, en maak je applicatie onoverzichtelijker.
Waarom zou je $_GET['search'] in $search willen plaatsen? Is het makkelijker te typen? Nee, een goede editor heeft wel 'auto-complete' die de juiste variabelen wel aanvult.
3) Gebruik geen mysql_.....() functies meer. In PHP 7 zijn ze geschrapt en in PHP 5.5 worden ze al bestempeld als 'afgekeurd'. De nieuwe manier om acties op je MySQL/Maria-database uit te voeren is door MySQLi-functies te gebruiken, of PDO.
4) Inspringen van je code. Zoals je in mijn voorbeeld code kan zien is de code netjes ingesprongen, door middel van tabs. Zorg dat je met de TAB-knop elke if/for/while/function/class netjes inspringt, zodat je in een oogopslag kan zien welke statement bij welke accolade hoort.
Als ik 4 accolades zie die lijnrecht onder elkaar staan, dan ben ik benieuwd of je direct ziet bij welke statement of functie de derde accolade hoort.
Een goede editor springt bovendien al helemaal automatisch in.
4) Foutafhandeling op je queries. Ook queries kunnen fouten maken, of het nou een foute querie van jouw is, of een probleem in je database die mogelijk corrupt kan zijn. Zorg ervoor dat je fouten aangeeft. Bij voorkeur log je de fouten in een speciaal bestand, en vertel je de gebruiker dat er een technische storing in je site is.
Handig leesvoer: https://www.phphulp.nl/php/tutorial/data-verwerking/foutafhandeling-query-sql/735/
Let er wel op dat deze tutorial zich richt op de functies van MySQL i.p.v. MySQLi, dus je zult eerder even wat moeten inlezen op MySQLi.
Met andere woorden: Er is nog een hoop werk aan de winkel. Ikzelf raad CodeAcademy aan om PHP te leren, en niet zomaar een willekeurig YouTube-filmpje. Die code kan je niet makkelijk foutloos overnemen.
Thnx