Hallo, ich habe von einem Bekannten einen Teil eines Kleinen E shops programmiert
bekommen. Der ist aber seit vorgestern im Urlaub und ich weiss nicht wo der Fehler hängt.
folgendes soll im Script geschehen: Die Produkte sollen aus der DB gelesen werden
und dann gleich eine Session registriert werden. Es soll möglich sein, die Produkte
gleich zu bestellen. Ohne Cookies und ohne Javascript. Alles passiert auf dem Server.
Das Funktioniert auch soweit, doch die einzelnen Produkte, die man kaufen will,
werden nicht in der session registriert und ich kann den fehler nicht sehen.
<?php
session_start();
$db=mysql_connect(\\"localhost\\",\\"\\",\\"\\");
mysql_select_db(\\"shop\\");
$result=mysql_query(\\"select * from produkte order by id desc\\",$db);
while($zeile=mysql_fetch_object($result))
{
$produktnameregister=$zeile->produktname;
session_register(\\"$produktnameregister\\");
}
$result=mysql_query(\\"select * from produkte order by id desc\\",$db);
echo\\"<table style=\'border:1px solid #000000\' align=\'center\' width=\'90%\'>\\";
echo\\"<tr><td>Produkt</td><td>Beschreibung</td><td>Preis</td><td>Bestellen</td></tr>\\";
while($zeile=mysql_fetch_object($result)){
$produktnamesender=$zeile->produktname;
echo\\"<tr><td>$zeile->produktname</td>\\";
echo\\"<td>$zeile->beschreibung</td>\\";
echo\\"<td>$zeile->preis</td>\\";
echo\\"<td>
<form action=\'$PHP_SELF\'>
<input type=\'text\' name=\'wertsender\' value=\'1\' size=\'5\'>
<input type=\'text\' name=\'produktnamesender\' value=\'$zeile->produktname\' size=\'5\'>
<input type=\'submit\' name=\'bestellen\' value=\'bestellen\'>
</form>
</td>\\";
echo\\"</tr>\\";
}
echo\\"</table>\\";
?>
Homepage selbermachen 7.852 Themen, 35.619 Beiträge
Warum willst Du alle Produktnamen in der Session ablegen, die hast Du doch schon in der DB?
Mal abgesehen davon, kann das so sowieso nicht funktionieren da die Variable $produktnameregister bei jedem Schleifendurchlauf überschrieben wird. Willst Du ein Array haben, müssen eckige Klammern dahinter $produktnameregister[]. Sinnvoll wirds daudurch immer noch nicht...
Die Produkte müssen erst in die Session eingtragen werden, wenn sie auch bestellt werden.
Das Funktioniert auch soweit, doch die einzelnen Produkte, die man kaufen will, werden nicht in der session registriert und ich kann den fehler nicht sehen.
Dafür musst Du die Formulareingaben auch entdprechend weiterverarbeiten, beim erneuten Aufruf der Seite.
Mit
if(isset($wertsender)&&isset($produktnamesender))
kannst Du prüfen ob die Seite mit den Formulareingaben aufgerufen wurde.
CU Borlander
Hallo, erstmal finde ich die vielen Variablenübergaben wie $xx = $zz; relativ unnötig, sie verwirren eher und ich weiss eigentlich nciht wozu sie dienen. hier mal mein vorschlag
<?php
session_start();
$db=mysql_connect("localhost","","");
mysql_select_db("shop");
<b>
if(isset($bestellen)) {
session_register("$register");</b>
$register[]=$wertsender;
}
$result=mysql_query("select * from produkte order by id desc",$db);
echo"<table style='border:1px solid #000000' align='center' width='90%'>";
echo"<tr><td>Produkt</td><td>Beschreibung</td><td>Preis</td><td>Bestellen</td></tr>";
while($zeile=mysql_fetch_object($result)){
echo"<tr><td>$zeile->produktname</td>";
echo"<td>$zeile->beschreibung</td>";
echo"<td>$zeile->preis</td>";
echo"<td>
<form action='$PHP_SELF'>
<input type='text' name='wertsender' value='1' size='5'>
<input type='text' name='register' value='$zeile->produktname' size='5'>
<input type='submit' name='bestellen' value='bestellen'>
</form>
</td>";
echo"</tr>";
}
echo"</table>";
?>?>
der fehle rist ganz einfach..bei session_register darf nur der NAME der variable angegeben werden, nicht die variable selbst. es müsste also heißen
session_register("produktnameregister");
statt
session_register("$produktnameregister");