Warning: Invalid argument supplied for foreach

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Arjan Hekman

Arjan Hekman

26/01/2016 16:02:00
Quote Anchor link
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 :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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 = "";
 
PHP hulp

PHP hulp

29/03/2024 14:11:10
 
- Ariën  -
Beheerder

- Ariën -

26/01/2016 16:03:56
Quote Anchor link
$_GET['gender_in'] is geen array. Misschien bedoel je $_GET of anders iets anders waar ik geen zicht op heb.
 
Arjan Hekman

Arjan Hekman

26/01/2016 16:27:19
Quote Anchor link
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) {
Gewijzigd op 26/01/2016 16:37:11 door Arjan Hekman
 
- Ariën  -
Beheerder

- Ariën -

26/01/2016 16:31:44
Quote Anchor link
Kan je de relevante code plaatsen aub door je bericht te bewerken? Zoals ik in de PM al beschreef is het niet prettig voor anderen om door grote lappen script te moeten scrollen.

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 -
 
Arjan Hekman

Arjan Hekman

26/01/2016 17:35:47
Quote Anchor link
Warning: Invalid argument supplied for foreach() in /home/zoeken1/public_html/uitgebreid-zoeken.php on line 24

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);
 
- Ariën  -
Beheerder

- Ariën -

26/01/2016 17:36:32
Quote Anchor link
$gender_in is een array, en moet een string zijn.
 
Arjan Hekman

Arjan Hekman

26/01/2016 18:13:28
Quote Anchor link
Hoe zet ik dat in ,graag een voorbeeld ?
 
- Ariën  -
Beheerder

- Ariën -

26/01/2016 18:20:59
Quote Anchor link
Ik weet niet of die data die je daarin wilt gebruiken in die varaibele staat:
Wat krijg je te zien met print_r($gender_in);?
 
Arjan Hekman

Arjan Hekman

26/01/2016 18:49:43
Quote Anchor link
Hmmm gehele pagina is dan weg en krijg ik dit :
Parse error: syntax error, unexpected ';' in ,inline 26
 
- Ariën  -
Beheerder

- Ariën -

26/01/2016 19:45:48
Quote Anchor link
Dan heb je een ; op een plek die er niet hoort.
 
Arjan Hekman

Arjan Hekman

26/01/2016 22:51:00
Quote Anchor link
Helaas na het toepassen van de commando $_GET zie ik dat de gewenste zoekopdracht geen foto's meer presenteert en bij het verwijderen van de ; blijft deze fout nu zo staan
Warning: mysqli::escape_string() expects parameter 1 to be string, array given in /home/zoeken1234/public_html/uitgebreid-zoeken.php on line 26
 
- Ariën  -
Beheerder

- Ariën -

26/01/2016 23:17:50
Quote Anchor link
Als je wat meer relevante code van ongeveer tiental regels kan geven, dan zou dat een stuk makkelijker zijn.

Dus kijk steeds wat hogerop in je script op de plek waar je een error op krijgt.
 
Arjan Hekman

Arjan Hekman

27/01/2016 06:13:40
Quote Anchor link
Hier begint de script mee :

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);
}
 
Thomas van den Heuvel

Thomas van den Heuvel

27/01/2016 16:05:02
Quote Anchor link
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?
 
Arjan Hekman

Arjan Hekman

27/01/2016 19:11:17
Quote Anchor link
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 .
 
Arjan Hekman

Arjan Hekman

29/01/2016 19:51:42
Quote Anchor link
Bedoelde u dit mischien ?
Gewijzigd op 29/01/2016 20:04:30 door Arjan Hekman
 
Ben van Velzen

Ben van Velzen

29/01/2016 19:59:32
Quote Anchor link
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.
 
Thomas van den Heuvel

Thomas van den Heuvel

29/01/2016 20:02:49
Quote Anchor link
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.
 
Ben van Velzen

Ben van Velzen

30/01/2016 01:23:40
Quote Anchor link
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.
 
Thomas van den Heuvel

Thomas van den Heuvel

30/01/2016 14:53:50
Quote Anchor link
@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.
 
Arjan Hekman

Arjan Hekman

31/01/2016 01:12:54
Quote Anchor link
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 .
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.