Zoekresultaat klopt niet
Alvast bedankt voor hulp
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
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
elseif ($_POST['zoekopcategorie'] == 'Bibliotheek' || $_POST['zoekopcategorie'] == 'Conferentie' || $_POST['zoekopcategorie'] == 'BVBo7' || $_POST['zoekopcategorie'] == 'Onderwijs' || $_POST['zoekopcategorie'] == 'Onderzoek' || $_POST['zoekopcategorie'] == 'Publicatie' || $_POST['zoekopcategorie'] == 'Raak project' || $_POST['zoekopcategorie'] == 'Related' || $_POST['zoekopcategorie'] == 'Site' || $_POST['zoekopcategorie'] == 'Subsidie' || $_POST['zoekopcategorie'] == 'Under content creation' || $_POST['zoekopcategorie'] == 'Jongeren' || $_POST['zoekopcategorie'] == 'Zonder categorie' && $_POST['zoekenin'] == 'omschrijving' || $_POST['zoekenin'] == 'trefwoord' )
{
$zoekexploded = explode(' ', $zoeken);
$like = "";
$zoekexploded = explode(' ', $zoeken);
$like = "";
foreach($zoekexploded as $k=>$v)
{
if($k == 0)
{
$like .= " `$_POST[zoekenin]` LIKE '%".$v."%' ";
}
else
{
$like .= "AND `$_POST[zoekenin]` LIKE '%".$v."%' ";
}
}
$sql = "
SELECT
thumbnail,
trefwoord,
categorie,
omschrijving
FROM
afbeelding
WHERE
categorie LIKE '$_POST[zoekopcategorie]' AND
".$like."
";
}
{
$zoekexploded = explode(' ', $zoeken);
$like = "";
$zoekexploded = explode(' ', $zoeken);
$like = "";
foreach($zoekexploded as $k=>$v)
{
if($k == 0)
{
$like .= " `$_POST[zoekenin]` LIKE '%".$v."%' ";
}
else
{
$like .= "AND `$_POST[zoekenin]` LIKE '%".$v."%' ";
}
}
$sql = "
SELECT
thumbnail,
trefwoord,
categorie,
omschrijving
FROM
afbeelding
WHERE
categorie LIKE '$_POST[zoekopcategorie]' AND
".$like."
";
}
Jouw datamodel is verder niet goed, de categorieen zet je in een aparte tabel en die koppel je aan de tabel 'afbeelding'. Dit scheelt weer een berg ellende.
Backtics ` horen niet in SQL thuis, gooi dit weg en gebruik ze nooit meer. Userinput ($_POST) mag je nooit vertrouwen en mag nooit zo in een query zetten. Gebruik minimaal mysql_real_escape_string().
Gewijzigd op 01/01/1970 01:00:00 door Frank -
Ik zet niets in een tabel ik haal het UIT de tabel om dat vervolgens weer tegen als thumbnail het resultaat te tonen. Dat van Backtics wist ik niet, maar hoe moet het dan wel? Hoe kan ik ervoor zorgen dat het wel werkt
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
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
//beveiliging zodat andere mensen niet mijn script kunnen gebruiken om in mijn database te komen
elseif ($_POST['zoekopcategorie'] == 'Bibliotheek' || $_POST['zoekopcategorie'] == 'Conferentie' || $_POST['zoekopcategorie'] == 'BVBo7' || $_POST['zoekopcategorie'] == 'Onderwijs' || $_POST['zoekopcategorie'] == 'Onderzoek' || $_POST['zoekopcategorie'] == 'Publicatie' || $_POST['zoekopcategorie'] == 'Raak project' || $_POST['zoekopcategorie'] == 'Related' || $_POST['zoekopcategorie'] == 'Site' || $_POST['zoekopcategorie'] == 'Subsidie' || $_POST['zoekopcategorie'] == 'Under content creation' || $_POST['zoekopcategorie'] == 'Jongeren' || $_POST['zoekopcategorie'] == 'Zonder categorie' && $_POST['zoekenin'] == 'omschrijving' || $_POST['zoekenin'] == 'trefwoord' )
{
$zoekexploded = explode(' ', $zoeken);
$like = "";
$zoekexploded = explode(' ', $zoeken);
$like = "";
foreach($zoekexploded as $k=>$v)
{
if($k == 0)
{
$like .= " `$_POST[zoekenin]` LIKE '%".$v."%' ";
}
else
{
$like .= "AND `$_POST[zoekenin]` LIKE '%".$v."%' ";
}
}
$sql = "
SELECT
thumbnail,
trefwoord,
categorie,
omschrijving
FROM
afbeelding
WHERE
categorie LIKE `mysql_real_escape_string($_POST[zoekopcategorie])` AND
".$like."
";
}
elseif ($_POST['zoekopcategorie'] == 'Bibliotheek' || $_POST['zoekopcategorie'] == 'Conferentie' || $_POST['zoekopcategorie'] == 'BVBo7' || $_POST['zoekopcategorie'] == 'Onderwijs' || $_POST['zoekopcategorie'] == 'Onderzoek' || $_POST['zoekopcategorie'] == 'Publicatie' || $_POST['zoekopcategorie'] == 'Raak project' || $_POST['zoekopcategorie'] == 'Related' || $_POST['zoekopcategorie'] == 'Site' || $_POST['zoekopcategorie'] == 'Subsidie' || $_POST['zoekopcategorie'] == 'Under content creation' || $_POST['zoekopcategorie'] == 'Jongeren' || $_POST['zoekopcategorie'] == 'Zonder categorie' && $_POST['zoekenin'] == 'omschrijving' || $_POST['zoekenin'] == 'trefwoord' )
{
$zoekexploded = explode(' ', $zoeken);
$like = "";
$zoekexploded = explode(' ', $zoeken);
$like = "";
foreach($zoekexploded as $k=>$v)
{
if($k == 0)
{
$like .= " `$_POST[zoekenin]` LIKE '%".$v."%' ";
}
else
{
$like .= "AND `$_POST[zoekenin]` LIKE '%".$v."%' ";
}
}
$sql = "
SELECT
thumbnail,
trefwoord,
categorie,
omschrijving
FROM
afbeelding
WHERE
categorie LIKE `mysql_real_escape_string($_POST[zoekopcategorie])` AND
".$like."
";
}
Gewijzigd op 01/01/1970 01:00:00 door Carel
Carel schreef op 10.01.2008 15:57:
Ik controleer omdat er ook andere mogelijkheden zijn waarop de gebruiker zoekt. Op basis van die controle voert mijn script een code uit om te zoeken zoals je hierboven ziet. Ik heb nog meer scripten maar wilde alleen maar 1 neerzetten anders werd het onovezichtelijk voor jouw waar het probleem is en onduidelijk. Ik snap je punt over openbreken van categorie in php maar die categorieeen zijn blijvend en veradanderen niet meer.
Ik zet niets in een tabel ik haal het UIT de tabel om dat vervolgens weer tegen als thumbnail het resultaat te tonen. Dat van Backtics wist ik niet, maar hoe moet het dan wel? Hoe kan ik ervoor zorgen dat het wel werkt
Ik zet niets in een tabel ik haal het UIT de tabel om dat vervolgens weer tegen als thumbnail het resultaat te tonen. Dat van Backtics wist ik niet, maar hoe moet het dan wel? Hoe kan ik ervoor zorgen dat het wel werkt
En wat hebben die andere manieren te maken met jouw huidige en vooral verkeerde manier te maken?
En nog veel onoverzichtelijker kan het haast niet worden, jouw huidige code is een bende. Gooi die kansloze controles uit je code en laat de database het lekker zelf uitzoeken. Jij controleert of er input is, beveiligt deze en slingert de hele zooi de database in. Die gaat dan voor jou aan de slag en levert vanzelf wel resultaten op. Of niet, dat hoort er bij.
En dat er niks meer aan de categorieen verandert.... Lijkt me een gebrek aan ervaring, er verandert namelijk altijd wat. Daarnaast mag jouw code niet afhankelijk zijn van de inhoud van de database, je gaat dus geen hardcoded data in je php-code zetten. Waar heb je anders een database voor nodig?
Backtics gooi je gewoon weg en daarmee klaar.
Tip: Ga eerst je datamodel aanpassen, daar zit nu het grootste probleem. Nu verder gaan met de huidige opzet, zal je alleen maar verder in de problemen helpen.