Hallo ik krijg op mijn site bij het zoeken boven in beeld deze fout melding
Warning: Invalid argument supplied for foreach() in /home/zoeken1/public_html/uitgebreid-zoeken.php on line 24
24 foreach($_GET['gender_in'] as $gender_in) {
25 if ($gender_in != 'alle')
26 $gi[]=$db->escape_string($gender_in);
27 }
28 if (!empty($gi)){
29 $clause .= "looking_for in ('".implode("','",$gi)."') AND ";
30 $wording .= " Die op zoek is naar een <b>".implode("</b>, <b>",$gi).'</b>';
31 }
Ik heb gemaks halve de fout melding en de regels waar dit onder valt maar zo getypt .
Hier begint de pagina mee :
<?php
include_once 'controller/function.php';
if(isset($_GET['uitgebreid'])){
$clause =' WHERE is_fake <> 2 AND ';
$limit=12;
$stages ='none';
de eerste fout is deze op line 24
foreach($_GET['gender_in'] as $gender_in) {
if ($gender_in != 'alle')
$gi[]=$db->escape_string($gender_in);
}
if (!empty($gi)){
$clause .= "looking_for in ('".implode("','",$gi)."') AND ";
$wording .= " Die op zoek is naar een <b>".implode("</b>, <b>",$gi).'</b>';
}
[size=xsmall]Toevoeging op 27/01/2016 06:50:16:[/size]
foreach($_GET['eyekleur'] as $huidskleur) {
$ek[]=$db->escape_string($huidskleur);
}
en deze
foreach($_GET['postuur'] as $postuur) {
$pt[]=$db->escape_string($postuur);
en deze
foreach($_GET['haarkleur'] as $haarkleur) {
$hk[]=$db->escape_string($haarkleur);
}
en deze
foreach($_GET['relatie'] as $relatie) {
if ($relatie != 'alle')
$rt[]=$db->escape_string($relatie);
}
en deze
foreach($_GET['etnic'] as $etnic) {
if ($etnic != 'alle')
$et[]=$db->escape_string($etnic);
}
en de laatste
foreach($_GET['interest'] as $inter) {
if ($inter != 'alle')
$it[]=$db->escape_string($inter);
}
Hoe ziet je formulier er uit?
Welke methode gebruik je? get? post?
Hoe zien je formuliervelden er uit?
Zijn dit checkboxen?
Hoe luiden de namen van deze velden? Is dit bijvoorbeeld haarkleur[], interest[] et cetera?
Waarom controleer je niet eerst op het bestaan van een variabele (isset($_GET['xyz'])) voordat je deze gebruikt (foreach($_GET['xyz') ...)? En als je verwacht dat dit een array is, moet je hier wellicht ook op controleren?
Je geeft ons een paar stukjes van de puzzel, en verwacht vervolgens dat we deze oplossen?
Hallo ik ben een beginnende in PHP en dit stukje script heb ik niet zelf gemaakt vandaar dat ik niet weet waar ik het moet zoeken.
form method="GET"
checkboxen denk ik
de velden heten haarkleur[], interest[] et cetera ik lees in de pagina ook een regel genaamd
if (isset($_GET['alias'])){
het spijt me zeer dat ik niet meer info hier over weet .
Wauw, iemand heeft spaghetti gekookt. Maar nee. Dit is zo te zien het opbouwen van een query, op een extreem beroerde manier. Nogmaals: hoe ziet je form eruit? De HTML ervan dus.
Abstract gezien gaat waarschijnlijk het volgende mis:
Als je geen specifieke checkbox van een eigenschap aanvinkt, wordt deze ook niet doorgestuurd via de URL.
Vervolgens probeer je een lijst te doorlopen van een niet-bestaand veld. De bijbehorende variabele van de eigenschap bestaat dan simpelweg niet.
Mogelijk is dit niet de meest optimale startplaats voor een beginnend PHP-er. Wat je hier in feite probeert te doen is het dynamisch opbouwen van een zoek-query. Dat is nou niet bepaald beginnersmateriaal.
Om code netjes weer te geven moet je deze trouwens tussen [code]code haken[/code] plaatsen.
Helemaal eens met wat je zegt. Daarom is het ook zo belangrijk om te weten hoe het formulier eruit ziet. Of er velden genaamd gender_in[] etc bestaan. Dit vereist een controle op het bestaan van die array, en als deze niet bestaat meteen falen met een bijhorende (generieke) melding. Maar zonder het formulier te zien is er verder niks van te zeggen, afgezien van dat het script moeilijk kauwmateriaal is voor een beginner.
@Ben: het niet aanvinken van een specifiek veld zou ook aan kunnen geven "geen speciale voorkeur", dit hoeft in principe niet fout te zijn, en is eigenlijk equivalent met het aanvinken van alle opties, je zoekt hiermee in beide gevallen effecties in alle varianten van de eigenschap, waarbij je dit in het ene geval weglaat uit de condities van de zoekquery, en in het andere geval alle varianten expliciet opneemt in de condities.
Dit zou je nog kunnen "optimaliseren" of er inderdaad sprake is van het aanvinken van alle opties, en deze eigenschap dan gewoon weglaten uit de condities van je zoekquery.
Oke ik heb nog maar 1 optie meer ,wie wil en kan ik vertrouwen om op mijn server in te loggen om dit probleem en mogelijk meer problemen op te lossen voor weinig geld ?
dus noen je prijs en ik geef je de inlog van de server waar mijn site op draait ?ik ben toch te on-ervaren om dit op te lossen .