anpera.net
https://anpera.dyndns.org/phpbb3/

foreach problem
https://anpera.dyndns.org/phpbb3/viewtopic.php?f=34&t=4485
Seite 1 von 1

Autor:  Fargo [ So 20 Apr, 2008 20:34 ]
Betreff des Beitrags:  foreach problem

ich habe ein problem der spuckt mir immer diesen fehler:

Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\php\funktion.php on line 33

bei diesem code:

PHP:
function saveuser(){
foreach($session as $key => $value){
$sql1= "UPDATE users SET $key = $value WHERE id ='". $_SESSION['id'] ."'";
$query1 = @mysql_query($sql1);
$session = @mysql_fetch_array($query1);
}
}

function checkuser(){
global $session;
$selectDB;
$sql= "SELECT * FROM users WHERE id ='". $_SESSION['id'] ."'";
$query = mysql_query($sql);
$session = mysql_fetch_assoc($query);
}


aber warum????
wenn ich:

foreach($session as $key => $value){
$sql1= "UPDATE users SET $key = $value WHERE id ='". $_SESSION['id'] ."'";
$query1 = @mysql_query($sql1);
$session = @mysql_fetch_array($query1);
}

einfach am ende meines codes setze spuckt der keine fehler aus aber als funktion (die in einer anderer datei ist)ja :bash:
hoffe mir kann jemand helfen

mfg

Autor:  Montekar [ So 20 Apr, 2008 21:04 ]
Betreff des Beitrags:  Re: foreach problem

$this->bbcode_second_pass_code('', 'global $session,$userbackup,$dbqueriesthishit,$REQUEST_URI;')

Sollte am Anfang von der saveuser-Funktion stehen.

Autor:  Fargo [ So 20 Apr, 2008 21:05 ]
Betreff des Beitrags:  Re: foreach problem

danke aber das problem ist noch immer vorhanden :(

Autor:  Nightborn [ So 20 Apr, 2008 22:23 ]
Betreff des Beitrags:  Re: foreach problem

wenn session kein array ist, kommt dieser fehler.

warum session kein array ist... nun... wenn irgendwas unset($session) macht, dann ist es aus...

$this->bbcode_second_pass_code('', 'if (!is_array($session)) $session=array();')

vor der foreach hilft, aber du solltest sehen ob es *wirklich* die session irgendwo fehlerhaft setzt.


edit: und bitte überlege, welche anderen wege es gibt, die werte upzudaten *ohne* für *jedes* feld eine query loszulassen.

es geht durchaus eine mysql query: "update accounts set field1=1, field2=2, field3='muhaha';";

du belastest massiv deine db für nix.

Autor:  -DoM [ Mo 21 Apr, 2008 08:21 ]
Betreff des Beitrags:  Re: foreach problem

Man sollte vor schon prüfen ob es ein Array ist, wenn man dies durchlaufen lassen möchte...
PHP:
if (isset($session) && is_array($session)){
foreach($session as $key => $value){
...
}
}

Autor:  Fargo [ Mo 21 Apr, 2008 16:07 ]
Betreff des Beitrags:  Re: foreach problem

Nightborn hat geschrieben:
edit: und bitte überlege, welche anderen wege es gibt, die werte upzudaten *ohne* für *jedes* feld eine query loszulassen.

es geht durchaus eine mysql query: "update accounts set field1=1, field2=2, field3='muhaha';";

du belastest massiv deine db für nix.


und wie geht das :D

mfg
Fargo

Autor:  Harthas [ Mo 21 Apr, 2008 18:50 ]
Betreff des Beitrags:  Re: foreach problem

Es funktioniert so wie es in der saveuser-Funktion von LotGD gemacht wird ;-)

Autor:  Fargo [ Mo 21 Apr, 2008 19:16 ]
Betreff des Beitrags:  Re: foreach problem

ja ich mache aber ein eigenes spiel und dann habe ich nicht son ganzes zeugs-.-

Autor:  MySql [ Mo 21 Apr, 2008 19:38 ]
Betreff des Beitrags:  Re: foreach problem

Wenn du ein eigenes Games machst, verstehe ich nicht, warum du im einem LotGD Forum postest!

Ansonsten, uebernimmst du die Funktion einfach.

Autor:  Eliwood [ Mo 21 Apr, 2008 19:50 ]
Betreff des Beitrags:  Re: foreach problem

Wie bereits erwähnt, das ist ein LoGD-Forum - kein PHP-Hilf-Forum. Wenn du Probleme mit PHP-Allgemein hast, kannst du hier im Offtopic posten - empfehlenswärt wäre allerdings ein Forum, das mehr auf normale PHP-Fragen spezialisiert ist.

Kurz zu deinem Problem: Die folgenden 2 Funktionen müssten grösstenteils funktionieren:

$this->bbcode_second_pass_code('', 'function checkuser() {
global $session;
$res = mysql_query('SELECT * FROM users WHERE id = '.intval($_SESSION['id']));
if(mysql_num_rows($res) > 0) {
# Its all right - give $session the row from database and return true
$session = mysql_fetch_assoc($res);
return True;
}
else {
# Something was wrong - give error and return False
echo "Cannot find spezified user";
return False;
}
}

function saveuser() {
global $session;
$arr = array();
foreach($session as $key => $val) {
$val = mysql_real_escape_string($val);
$key = mysql_real_escape_string($key);
$arr[] = "`$key` = '$val'";
}
$arr = implode(', ', $arr);
$query = "UPDATE users SET ".$arr." WHERE id = ".$_SESSION['id'];
$r = mysql_query($query);
if($r !== false) {
# Its all right - return true
return True;
}
else {
#Something was wrong - print error and return false
echo "MySQL-Fehler #".mysql_errno().": ".mysql_error();
return False;
}
}')

Syntax müsste stimmen, wenn nicht - das wurde nicht in nem Editor geschrieben.

Autor:  Fargo [ Mo 21 Apr, 2008 20:04 ]
Betreff des Beitrags:  Re: foreach problem

ich habe sowas auch schon in anderen forum gefragt doch die verstehen mein problem nicht deswegen habe ich hier gefragt weil ich dass von LOGD habe^^

edit:
habs gerade ausprobiert und funktioniert einwandfrei danke^^

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/