Warning: Invalid argument supplied for foreach
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 :
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
include_once 'controller/function.php';
if(isset($_GET['uitgebreid'])){
$clause =' WHERE is_fake <> 2 AND ';
$limit=12;
$stages ='none';
$page = isset($_GET['page'])?mysql_escape_string($_GET['page']):0;
$start = ($page !== 0)?($page - 1) * $limit:0;
$wording = "";
include_once 'controller/function.php';
if(isset($_GET['uitgebreid'])){
$clause =' WHERE is_fake <> 2 AND ';
$limit=12;
$stages ='none';
$page = isset($_GET['page'])?mysql_escape_string($_GET['page']):0;
$start = ($page !== 0)?($page - 1) * $limit:0;
$wording = "";
$_GET['gender_in'] is geen array. Misschien bedoel je $_GET of anders iets anders waar ik geen zicht op heb.
Toevoeging op 26/01/2016 16:42:20:
Je kan ook de code op Pastebin plaatsen, of een minder grote lap code te plaatsen. Alles onder het script is niet relevant.
Gewijzigd op 26/01/2016 16:33:00 door - Ariën -
dezefout is nu wel weg maar ik krijg nu op regel 26 2 keer de zelfde fout namelijk deze
Warning: mysqli::escape_string() expects parameter 1 to be string, array given in /home/zoeken1234/public_html/uitgebreid-zoeken.php on line 26
en dit is regel 26 $gi[]=$db->escape_string($gender_in);
$gender_in is een array, en moet een string zijn.
Hoe zet ik dat in ,graag een voorbeeld ?
Wat krijg je te zien met print_r($gender_in);?
Parse error: syntax error, unexpected ';' in ,inline 26
Dan heb je een ; op een plek die er niet hoort.
Warning: mysqli::escape_string() expects parameter 1 to be string, array given in /home/zoeken1234/public_html/uitgebreid-zoeken.php on line 26
Dus kijk steeds wat hogerop in je script op de plek waar je een error op krijgt.
include_once 'controller/function.php';
if(isset($_GET['uitgebreid'])){
$clause =' WHERE is_fake <> 2 AND ';
$limit=12;
$stages ='none';
$page = isset($_GET['page'])?mysql_escape_string($_GET['page']):0;
$start = ($page !== 0)?($page - 1) * $limit:0;
$wording = "";
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>';
}
Toevoeging op 27/01/2016 06:50:16:
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);
}
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?
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 .
Gewijzigd op 29/01/2016 20:04:30 door Arjan Hekman
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.
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.
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.
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 .