PDA

Volledige versie bekijken : Fout niet te vinden


Flash-N44B
%Europe/Berlin %953 %2007, 23:53
Warning: Invalid argument supplied for foreach() in /usr/export/www/hosting/ocg/clan.php on line 137

Die foutmelding krijg ik op mijn site maar ik zie geen fout in het php script

$lasttype = 1;
foreach($clanpower as $type => $info) {
if($type != $lasttype)
print " <tr><td><br></td></tr>\n";

Iemand die me verder kan helpen ( Regel 137 is met Foreach ).

Hartstikke bedankt

Laiverd
%Europe/Berlin %958 %2007, 00:00
$clanpower moet een array zijn en is dat niet, of bestaat niet op het moment dat je de for each doet. Als $clanpower uit een databse komt, kan je query ook nog fout zijn (bv. foute kolomnamen gebruikt). Even checken met die (mysql_error()).

John

Flash-N44B
%Europe/Berlin %971 %2007, 00:18
Sorry, ik ben niet zo'n PHP freak ik snap je niet hellemaal:$. Zou je het nog eens kunnen uitlegen. Alvast bedankt

Bargok
%Europe/Berlin %984 %2007, 00:37
Foreach loopt door een array heen, een array is een multi dimensionale "container" waar je entrys in kunt opslaan.

De error zegt dat er een "invalid argument" is in de foreach, een argument is een meegestuurde waarde naar een functie, in dit geval is de functie foreach.

Foreach wilt als eerste waarde een van het type array, waar het nu probably een enkele waarde is (string/int).

Test dit maar eens, zet $clanpower = array(); boven je foreach, je zult zien dat het werkt.

Flash-N44B
%Europe/Berlin %991 %2007, 00:48
Juist, hartstikke bedankt Bargok. Laiverd ook nog bedankt uiteraard.

Flash-N44B
%Europe/Berlin %992 %2007, 00:49
Heb ik gelijk een nieuwe vraag:

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /usr/export/www/hosting/ocg/shop.php on line 76


en op Line 76 staat het volgende:
while($weapon = mysql_fetch_object($dbres)) {

Dauntless
%Europe/Berlin %295 %2007, 08:05
Dan is er iets mis met $dbres. Maar zo'n regels hebben altijd te maken met vorige dingen. We kunnen niet zeggen wat er mis is met $dbres, tenzij dat jij alle regels geeft waarin je $dbres declareert / vult.

(Hetzelfde geldt voor de eerste post: Daar zou je ook moeten laten zien wat $clanpower is, anders kunnen we enkel gokken).

Laat dus even HEEL je script zien (of tenminste alle belangrijke delen mbt de error die je krijgt)

Bargok
%Europe/Berlin %403 %2007, 10:41
Mysql_fetch_object vraagt een mysql resource als argument (dit is te controleren met is_resource($arg);. Een mysql resourcse wordt bijvoorbeeld gereturned door mysql_query.

Wat er waarschijnlijk aan de hand is, is dat je query niet klopt ;).

Flash-N44B
%Europe/Berlin %600 %2007, 15:24
Deze fout is al opgelost toen ik mysql_fetch_object weghaalde bij alles deed hij het goed en werkte 100%.

Alweer harstikke bedankt. Dan kom ik weer met een nieuwe vraag:

Parse error: syntax error, unexpected T_STRING in /usr/export/www/hosting/ocg/clandonate.php on line 31

Ik heb het desbetreffende bestandje bijgevoegd.:$.. Ook deze fout kan ik niet vinden er zaten veel fouten in de site heb er al veel van opgelost maar deze 3 kan ik echt niet vinden.

Bargok
%Europe/Berlin %649 %2007, 16:35
In die lijn staat een echo.
Met die echo wil jij een string weergeven, die string open je met ", en sluit je met ". Bij je html gebruik je ook "", bij name="" bijvoorbeeld. PHP ziet dit als het einde van je string, terwijl je dit niet zo bedoeld. Daarna komt hij een onbekende character tegen, namelijk de "s" van subTitle.

Je kan nu 2 dingen doen:
1. Escapen van tekens d.m.v. een \. De \ zegt tegen php dat hij het volgende character moet negeren.
print "<tr><td class=\"subTitle\"><b>Clan Donatie</b></td></tr>\n";
2. Het gebruiken van singlequotes, wat hier de beste oplossing is.
Nu vragen mensen zich misschien af waarom ik de html single quote: \n werkt enkel tussen dubbele quotes, dit voorkomt dat ik op het einde ."\n" hoef toe te voegen.
print "<tr><td class='subTitle'><b>Clan Donatie</b></td></tr>\n";


Hopelijk heb je hier iets aan ;)

josko
%Europe/Berlin %666 %2007, 17:00
In die lijn staat een echo.
Met die echo wil jij een string weergeven, die string open je met ", en sluit je met ". Bij je html gebruik je ook "", bij name="" bijvoorbeeld. PHP ziet dit als het einde van je string, terwijl je dit niet zo bedoeld. Daarna komt hij een onbekende character tegen, namelijk de "s" van subTitle.

Je kan nu 2 dingen doen:
1. Escapen van tekens d.m.v. een \. De \ zegt tegen php dat hij het volgende character moet negeren.
print "<tr><td class=\"subTitle\"><b>Clan Donatie</b></td></tr>\n";
2. Het gebruiken van singlequotes, wat hier de beste oplossing is.
Nu vragen mensen zich misschien af waarom ik de html single quote: \n werkt enkel tussen dubbele quotes, dit voorkomt dat ik op het einde ."\n" hoef toe te voegen.
print "<tr><td class='subTitle'><b>Clan Donatie</b></td></tr>\n";


Hopelijk heb je hier iets aan ;)
Een derde optie, die ikzelf gebruik:

print '<tr><td class="subTitle"><b>Clan Donatie</b></td></tr>'."\n";
Nadeel / Voordelen:

Strings met "":
- Bij de HTML die je wilt weergeven, moet je de dubbele quotes escapen. (" -> \" )
+ Je kunt variablen er gewoon intypen

Strings met '':
- je kunt geen variablen intypen. dit los je op door de . operator, wiens naam ik even vergeten ben. Zal iets van append zijn ( echo 'blaat'. $var; )
+ Je kunt je HTML er gewoon intypen

Bargok
%Europe/Berlin %668 %2007, 17:02
."\n";

Dat is dus precies het nadeel die ik bij 2 aangaf ;). Je moet overigens nooit 'zomaar' iets intypen, ook al kan het. Dat is het verschil tussen slordig en georganiseerd programmeren.

Flash-N44B
%Europe/Berlin %570 %2007, 14:40
Ja, mijn broer kwam thuis en die heeft ook verstand van PHP. Alleen hij was een lange tijd niet thuis. En toen vroeg ik het hem en hij zei inderdaad precies het zelfde.

Dat het een PHP script is en ik daarin HTML had gezegt en dat dus anders moest oplossen hij heeft de haakjes gewoon in z'n geheel weggehaald dus:

print "<tr><td class=subTitle><b>Clan Donatie</b></td></tr>\n";

Werkte ook prima

Edit: Vergeten, bedankt voor alle hulp nog

Bargok
%Europe/Berlin %575 %2007, 14:48
Die aanhalingstekens mag je niet weglaten, dit is ten eerste slordig en ten tweede in strijd met W3C standaarden.

Laiverd
%Europe/Berlin %603 %2007, 15:28
Zie hieronder: oorspronkelijke post geedit omdat ik weer eens onzin zat te beweren ;)

John

Bargok
%Europe/Berlin %607 %2007, 15:34
<b> is niet depricated. <b> is net zo 'depricated' als strong. Ze zijn beide gewoon verouderd omdat css meer kracht heeft.

Laiverd
%Europe/Berlin %613 %2007, 15:43
Je hebt gelijk; <b> is niet deprecated, maar er is wel een voorkeur om de <strong> tag te gebruiken i.v.m. accessibility issue's. My bad.

John

Flash-N44B
%Europe/Berlin %638 %2007, 16:19
Snap het neit maar oke, ik merk nu dat <b> er niet eens instaat:P