foreach
jelle - 29/06/2007 21:28
PHP beginner
<?
$time= time();
$edit = mysql_query("SELECT id,user,tijd,naam, achternaam,avatar FROM leden ");
while($record = mysql_fetch_object($edit))
{
$id = $record->id;
$time2= $record->tijd;
foreach($id as $value )
{
if($time < $time2)
{
echo $record->user;
}
}
}
?>
<?
$edit = mysql_query ( "SELECT id,user,tijd,naam, achternaam,avatar FROM leden " ) ; {
$id = $record -> id ;
$time2 = $record -> tijd ;
foreach ( $id as $value )
{
if ( $time < $time2 )
{
}
}
}
?>
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
JBke - 29/06/2007 21:32 (laatste wijziging 29/06/2007 21:35)
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
<?php
echo "<pre>" , var_dump($id) , "</pre>";
?>
om na te gaan wat er in $id zit en welk type het is.
een array vul je met $id[] = je waarde.
jelle - 29/06/2007 21:34
PHP beginner
<?
$time= time();
$edit = mysql_query("SELECT id,user,tijd,naam, achternaam,avatar FROM leden ");
while($record = mysql_fetch_object($edit))
{
$user = $record->user;
$time2= $record->tijd;
foreach($user as $value )
{
if($time < $time2)
{
echo $record->user;
}
}
}
?>
<?
$edit = mysql_query ( "SELECT id,user,tijd,naam, achternaam,avatar FROM leden " ) ; {
$user = $record -> user ;
$time2 = $record -> tijd ;
foreach ( $user as $value )
{
if ( $time < $time2 )
{
}
}
}
?>
dit doet hij ook niet en nu is het wel een waarde
JBke - 29/06/2007 21:37 (laatste wijziging 29/06/2007 21:52)
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:
<?php
error_reporting(E_ALL);
$user = array();
$time2 = array();
$time= time();
$edit = mysql_query("SELECT id,user,tijd,naam, achternaam,avatar FROM leden ");
while($record = mysql_fetch_object($edit)) {
$user[] = $record->user;
$time2[] = $record->tijd;
}
for($i = 0; $i < count($user); $i++) {
if ($time < $time2[$i]) {
echo $user[$i];
}
}
?>
<?php
$edit = mysql_query ( "SELECT id,user,tijd,naam, achternaam,avatar FROM leden " ) ; $user [ ] = $record -> user ;
$time2 [ ] = $record -> tijd ;
}
for ( $i = 0 ; $i < count ( $user ) ; $i ++ ) { if ( $time < $time2 [ $i ] ) {
}
}
?>
al gebruik ik zelf meestal PHP.net: mysql_fetch_assoc();
jelle - 29/06/2007 21:44 (laatste wijziging 29/06/2007 21:48)
PHP beginner
$time= time();
$edit = mysql_query("SELECT id,user,tijd,naam, achternaam,avatar FROM leden ");
while($record = mysql_fetch_object($edit))
{
$id=array($record->user);
$time2= $record->tijd;
foreach($id as $value )
{
if($time < $time2)
{
echo $record->user;
}
}
}
?>
$edit = mysql_query ( "SELECT id,user,tijd,naam, achternaam,avatar FROM leden " ) ; {
$id = array ( $record -> user ) ; $time2 = $record -> tijd ;
foreach ( $id as $value )
{
if ( $time < $time2 )
{
}
}
}
?>
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
<?
for($i = 0, $i < count($user), $i++) {
?>
<?
for ( $i = 0 , $i < count ( $user ) , $i ++ ) { ?>
JBke - 29/06/2007 21:48
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.
JBke - 29/06/2007 21:50 (laatste wijziging 29/06/2007 21:53)
PHP gevorderde
lol moeten ; zijjn ipv , omg ik beetje overwerkt. srry
jelle - 29/06/2007 21:51 (laatste wijziging 29/06/2007 21:54)
PHP beginner
nu geen error maar hij print niks mijn tijd in db:1183145566
JBke - 29/06/2007 21:55 (laatste wijziging 29/06/2007 21:56)
PHP gevorderde
wat print hij bij het volgende:
<?php
error_reporting(E_ALL);
$user = array();
$time2 = array();
$time= time();
$edit = mysql_query("SELECT id,user,tijd,naam, achternaam,avatar FROM leden ");
while($record = mysql_fetch_object($edit)) {
$user[] = $record->user;
$time2[] = $record->tijd;
}
for($i = 0; $i < count($user); $i++) {
if ($time < $time2[$i]) {
echo $user[$i];
} else {
echo "Fout<br />";
}
}
?>
<?php
$edit = mysql_query ( "SELECT id,user,tijd,naam, achternaam,avatar FROM leden " ) ; $user [ ] = $record -> user ;
$time2 [ ] = $record -> tijd ;
}
for ( $i = 0 ; $i < count ( $user ) ; $i ++ ) { if ( $time < $time2 [ $i ] ) {
} else {
}
}
?>
jelle - 29/06/2007 21:57
PHP beginner
2x fout
JBke - 29/06/2007 21:59 (laatste wijziging 29/06/2007 22:01)
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.
jelle - 29/06/2007 22:06 (laatste wijziging 29/06/2007 22:09)
PHP beginner
ik heb hem in mijn db staan als text.
dit gebruik ik om tijd op te slaan:
<?php
$edit = mysql_query("SELECT * FROM leden WHERE id = '".$_SESSION['login']."' ");
if(!empty($_SESSION['login']))
{
$id=$_SESSION['login'];
while($record = mysql_fetch_object($edit))
{
$time = time()+300; //300 sec -> 5 minuten
mysql_query("UPDATE leden SET tijd ='".$time."' WHERE id = '$id' ") or die("FOUT: ". mysql_error());
}
}
?>
<?php
$edit = mysql_query ( "SELECT * FROM leden WHERE id = '" . $_SESSION [ 'login' ] . "' " ) ; if ( ! empty ( $_SESSION [ 'login' ] ) ) {
$id = $_SESSION [ 'login' ] ;
{
$time = time ( ) + 300 ; //300 sec -> 5 minuten }
}
?>
mijn uiteindelijke bedoeling is een leden online systeem maken.
JBke - 29/06/2007 22:14
PHP gevorderde
ik zou een date of timestamp veld gebruiken. heb het zo gebruikt voor een login script met database. of integer veld.
jelle - 30/06/2007 10:10 (laatste wijziging 30/06/2007 10:11)
PHP beginner
o.. ja ik wist niet goed hoe de while werkte
]
<?php
error_reporting(E_ALL);
$edit = mysql_query("SELECT id,user,tijd,naam, achternaam,avatar FROM leden ");
while($record = mysql_fetch_object($edit)) {
if(time() < $record->tijd)
{
echo $record->user;
}
echo "<br>".time()."<br>"; //voor debug
echo $record->tijd."<br>"; //voor debug
}
?>
]
<?php
$edit = mysql_query ( "SELECT id,user,tijd,naam, achternaam,avatar FROM leden " ) ; if ( time ( ) < $record -> tijd ) {
}
echo $record -> tijd . "<br>" ; //voor debug }
?>
zo doet hij het wel
JBke - 30/06/2007 10:36 (laatste wijziging 30/06/2007 10:41)
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.
<?php
error_reporting(E_ALL);
$edit = mysql_query("SELECT id,user,naam, achternaam,avatar FROM leden WHERE tijd > NOW ");
while($record = mysql_fetch_object($edit)) {
echo $record->user;
}
echo "<br />".time()."<br />"; //voor debug
// echo $record->tijd."<br />"; //voor debug
}
?>
<?php
$edit = mysql_query ( "SELECT id,user,naam, achternaam,avatar FROM leden WHERE tijd > NOW " ) ; }
echo "<br />" . time ( ) . "<br />" ; //voor debug // echo $record->tijd."<br />"; //voor debug
}
?>
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 .