Problem mit foreach-Anweisung

jdgf

Mitglied
Hallo,
ich bin in PHP noch nicht so fit. In meinem Script lese ich aus einer Datenbank fünf Witze aus und will im zweiten Scriptteil bei jedem Witz das Tagesdatum eintragen. Ist der Code so richtig? Die Variable $datum2 ist das Tagesdatum.

PHP:
<?php
	$test1="SELECT * FROM witz WHERE datumpage=0 AND datum<>$datum2 ORDER BY RAND() LIMIT 5";
	$res=mysql_query($test1);
	while ($dsatz = mysql_fetch_assoc($res)){
	echo "<h5 style=\"font-size:1.7em; margin-bottom:7px; margin-top:-13px; color:#FF0000\">.....</h5>";
		echo "<p>".$dsatz["witz"]."</p>";
		if (!("" == $autor)) 
		{
		echo "<p class=\"kursiv\">".$dsatz["autor"] ."</p>";
		}
	$var = $dsatz["id"];
	}
}
?>

<?php
//Witz mit Datum markieren
foreach($var as $wert)
{
    $sql = "UPDATE witz SET datumpage=$datum2 WHERE ID=$wert";  
$ende = mysql_query($sql);
} 
php>

Danke für die Hilfe!
Gruss DIetmar
 
Hi,

Ist der Code so richtig?

da er laut Deinem Threadtitel offensichtlich nicht wie gewünscht läuft, anscheinend nicht. Dazu solltest Du dann aber auch eine Problembeschreibung inklusive eventueller Fehlermeldungen liefern, damit man Dir helfen kann.

Auf den ersten Blick ist zu sehen, dass $var kein Array ist und deshalb auch nicht mit foreach durchlaufen werden kann.

LG
 
Hi,

du könntest ja versuchen es ohne ForEach zu machen, da wie oben schon genannt kein array erstellt wird ;)

Ich hab hier mal was gebastelt:

PHP:
<?php
    $test1="SELECT * FROM witz WHERE datumpage=0 AND datum<>$datum2 ORDER BY RAND() LIMIT 5";
    $res=mysql_query($test1);
    while ($dsatz = mysql_fetch_assoc($res)){
    echo "<h5 style=\"font-size:1.7em; margin-bottom:7px; margin-top:-13px; color:#FF0000\">.....</h5>";
        echo "<p>".$dsatz["witz"]."</p>";
        if (!("" == $autor)) 
        {
        echo "<p class=\"kursiv\">".$dsatz["autor"] ."</p>";
        }
    $sql = mysql_query("UPDATE witz SET datumpage=$datum2 WHERE ID=$dsatz['id']");  
	}
?>

Hoffe es funktioniert habe es nämlich nicht getestet!
 
Hi,

ich würde vorschlagen, in der Schleife das Array aufzubauen und danach alle 5 Datensätze mit einer Abfrage zu ändern:

PHP:
mysql_query('UPDATE witz SET datumpage=' . $datum2 . ' WHERE ID IN (' implode(',', $var) . ')';

LG
 
Hallo,

danke für eure Lösungsvorschläge. Ich habe mich für die Lösung von redheador entschieden und sie so modifiziert:
PHP:
	$var = $dsatz["id"];
	$sql = mysql_query("UPDATE witz SET datumpage=$datum2 WHERE ID=$var");

Auf deine Frage, kuddeldaddeldu, wie ich darauf gekommen bin, ursächlich war eine Fehlermeldung auf dem lokalen PC, auf dem ich XAMPP installiert habe. Ich erhielt als Fehlermeldung "invalid argument supplied for foreach()". Auf der Website selbst gab es keine Fehlermeldung. Daher war ich mir auch nicht sicher.

Gruss Dietmar
 
Zurück