login  Naam:   Wachtwoord: 
Registreer je!
 Forum

foreach

Offline jelle - 29/06/2007 21:28
Avatar van jellePHP beginner
  1. <?
  2. $time= time();
  3.  
  4. $edit = mysql_query("SELECT id,user,tijd,naam, achternaam,avatar FROM leden ");
  5. while($record = mysql_fetch_object($edit))
  6. {
  7. $id = $record->id;
  8.  
  9. $time2= $record->tijd;
  10. foreach($id as $value )
  11. {
  12. if($time < $time2)
  13. {
  14. echo $record->user;
  15. }
  16. }
  17. }
  18. ?>


Warning: Invalid argument supplied for foreach() in /storage/mijndomein/users/023963/public/sites/www.jellewebtools.nl/stats.php on line 216

Warning: Invalid argument supplied for foreach() in /storage/mijndomein/users/023963/public/sites/www.jellewebtools.nl/stats.php on line 216

wat doe ik fout ??

15 antwoorden

Gesponsorde links
Offline JBke - 29/06/2007 21:32 (laatste wijziging 29/06/2007 21:35)
Avatar van JBke PHP gevorderde $id is geen array maar 1 waarde.

je moet eerst je array $id vullen en daarna pas de foreach loop uitvoeren.:D

je kan ook $id = array(); bovenaan zetten dan definieer je $id als array maar dan gaat je script niet het gewenste resultaat geven.

Gebruik
  1. <?php
  2. echo "<pre>" , var_dump($id) , "</pre>";
  3. ?>


om na te gaan wat er in $id zit en welk type het is.

een array vul je met $id[] = je waarde.
Offline jelle - 29/06/2007 21:34
Avatar van jelle PHP beginner
  1. <?
  2.  
  3. $time= time();
  4.  
  5. $edit = mysql_query("SELECT id,user,tijd,naam, achternaam,avatar FROM leden ");
  6. while($record = mysql_fetch_object($edit))
  7. {
  8. $user = $record->user;
  9.  
  10. $time2= $record->tijd;
  11. foreach($user as $value )
  12. {
  13. if($time < $time2)
  14. {
  15. echo $record->user;
  16. }
  17. }
  18. }
  19. ?>

dit doet hij ook niet en nu is het wel een waarde
Offline JBke - 29/06/2007 21:37 (laatste wijziging 29/06/2007 21:52)
Avatar van JBke PHP gevorderde je snapt het niet goed, met je while doorloop je tot aan foreach en daar begin je een tweede lus, maar $user krijgt pas een nieuwe waarde bij je volgende while. of is dat je bedoeling?? definieer dan $id of $user als een array bovenaan je script.

doe eens:
  1. <?php
  2.  
  3. $user = array();
  4. $time2 = array();
  5. $time= time();
  6.  
  7. $edit = mysql_query("SELECT id,user,tijd,naam, achternaam,avatar FROM leden ");
  8. while($record = mysql_fetch_object($edit)) {
  9. $user[] = $record->user;
  10. $time2[] = $record->tijd;
  11. }
  12. for($i = 0; $i < count($user); $i++) {
  13. if ($time < $time2[$i]) {
  14. echo $user[$i];
  15. }
  16. }
  17. ?>


al gebruik ik zelf meestal PHP.net: mysql_fetch_assoc();
Offline jelle - 29/06/2007 21:44 (laatste wijziging 29/06/2007 21:48)
Avatar van jelle PHP beginner
  1. $time= time();
  2.  
  3. $edit = mysql_query("SELECT id,user,tijd,naam, achternaam,avatar FROM leden ");
  4. while($record = mysql_fetch_object($edit))
  5. {
  6. $id=array($record->user);
  7. $time2= $record->tijd;
  8. foreach($id as $value )
  9. {
  10. if($time < $time2)
  11. {
  12. echo $record->user;
  13. }
  14. }
  15. }
  16.  
  17. ?>

is dit ook goed??

de jouwe geeft:

Parse error: syntax error, unexpected ',', expecting ';' in /storage/mijndomein/users/023963/public/sites/www.jellewebtools.nl/stats.php on line 220

  1. <?
  2. for($i = 0, $i < count($user), $i++) {
  3. ?>
Offline JBke - 29/06/2007 21:48
Avatar van JBke PHP gevorderde denk niet dat dat zal werken. bekijk eens goed je structuur en zet er hier en daar een echo in met de inhoud van je variabelen en je array's.

Probeer het voorbeeld van mij hierboven eens.

Je tabel moet wel waardes hebben he.
Offline jelle - 29/06/2007 21:50
Avatar van jelle PHP beginner ja  user1= webmaster jelle user2= blabla
Offline JBke - 29/06/2007 21:50 (laatste wijziging 29/06/2007 21:53)
Avatar van JBke PHP gevorderde lol moeten ; zijjn ipv , omg ik beetje overwerkt. srry
Offline jelle - 29/06/2007 21:51 (laatste wijziging 29/06/2007 21:54)
Avatar van jelle PHP beginner nu geen error maar hij print niks mijn tijd in db:1183145566
Offline JBke - 29/06/2007 21:55 (laatste wijziging 29/06/2007 21:56)
Avatar van JBke PHP gevorderde wat print hij bij het volgende:

  1. <?php
  2.  
  3. $user = array();
  4. $time2 = array();
  5. $time= time();
  6.  
  7. $edit = mysql_query("SELECT id,user,tijd,naam, achternaam,avatar FROM leden ");
  8. while($record = mysql_fetch_object($edit)) {
  9. $user[] = $record->user;
  10. $time2[] = $record->tijd;
  11. }
  12. for($i = 0; $i < count($user); $i++) {
  13. if ($time < $time2[$i]) {
  14. echo $user[$i];
  15. } else {
  16. echo "Fout<br />";
  17. }
  18. }
  19. ?>
Offline jelle - 29/06/2007 21:57
Avatar van jelle PHP beginner 2x fout
Offline JBke - 29/06/2007 21:59 (laatste wijziging 29/06/2007 22:01)
Avatar van JBke PHP gevorderde ok, je hebt dus 2 velden in je database. Dan is je controle functie dus niet juis doe een echo van je tijd uit je database en time() en vergelijk die. Wat is eigenlijk de bedoeling en hoe slaag je de tijd op in je database, haal ze er correct uit met mysql met dateformat.
Offline jelle - 29/06/2007 22:06 (laatste wijziging 29/06/2007 22:09)
Avatar van jelle PHP beginner ik heb hem in mijn db staan als text.
dit gebruik ik om tijd op te slaan:
  1. <?php
  2. $edit = mysql_query("SELECT * FROM leden WHERE id = '".$_SESSION['login']."' ");
  3. if(!empty($_SESSION['login']))
  4. {
  5. $id=$_SESSION['login'];
  6. while($record = mysql_fetch_object($edit))
  7. {
  8. $time = time()+300; //300 sec -> 5 minuten
  9. mysql_query("UPDATE leden SET tijd ='".$time."' WHERE id = '$id' ") or die("FOUT: ". mysql_error());
  10. }
  11. }
  12. ?>

mijn uiteindelijke bedoeling is een leden online systeem maken.
Offline JBke - 29/06/2007 22:14
Avatar van JBke PHP gevorderde ik zou een date of timestamp veld gebruiken. heb het zo gebruikt voor een login script met database. of integer veld.
Offline jelle - 30/06/2007 10:10 (laatste wijziging 30/06/2007 10:11)
Avatar van jelle PHP beginner o.. ja ik wist niet goed hoe de while werkte
  1. ]
  2. <?php
  3.  
  4. $edit = mysql_query("SELECT id,user,tijd,naam, achternaam,avatar FROM leden ");
  5. while($record = mysql_fetch_object($edit)) {
  6. if(time() < $record->tijd)
  7. {
  8. echo $record->user;
  9. }
  10. echo "<br>".time()."<br>"; //voor debug
  11. echo $record->tijd."<br>"; //voor debug
  12. }
  13. ?>

zo doet hij het wel
Offline JBke - 30/06/2007 10:36 (laatste wijziging 30/06/2007 10:41)
Avatar van JBke PHP gevorderde klopt, je kan het zelfs nog korter maken als je enkel de records uit je database haald die reeds voldoen aan time() < $record->tijd.

  1. <?php
  2.  
  3. $edit = mysql_query("SELECT id,user,naam, achternaam,avatar FROM leden WHERE tijd > NOW ");
  4. while($record = mysql_fetch_object($edit)) {
  5. echo $record->user;
  6. }
  7. echo "<br />".time()."<br />"; //voor debug
  8. // echo $record->tijd."<br />"; //voor debug
  9. }
  10. ?>


weet niet echt of je NOW zo kan gebruiken, geloof het wel. Het is om je een voorbeeld te geven van wat ik bedoel.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.278s