Variable wird nicht ausgegeben,

Alles, was PHP betrifft, kann hier besprochen werden.

Variable wird nicht ausgegeben,

Postby Sarah19 » 02. December 2004 23:07

und deshalb funktioniert die Schleife am Ende wohl nicht( glaube ich).

Hallo erstmal,
habe ein Warenkorb System geschrieben in dem ich erst die Artikel aussuche und sie dann in den warenkorb packe, also in eine 2. Tabelle( natuerlich mysql) in dieser sind alle Variablen drin und werden mir, wenn ich die Tabelle betrachte auch angezeigt. Nur die Variable $pid, welche ich zum anfang holen will wird mir nicht angezeigt. Weiss jemand wieso? Hatte zu erst die 6. Zeile nicht( $pid = $_POST["pid"];) worauf mit jemand gesagt hat, dass ich eine Solche anfrage besser ausserhalb einer jeden Schleife nehme, denn sie kommt spaeter nochmal. Und ziehmlich zum ende hin will ich die Varuable ausgeben, nur es wird nichts anusgegeben und ich bekomme auch keine Fehlermeldung.

Code: Select all
<?


include("config.php");
$pid = $_POST["pid"];

if(!isset($_GET["action"])) $_GET["action"] = "";

/*
* Hole Session aus der Datei session.php
* und speichern diese in die Variabel '$sid'
*/

$sid = $_SESSION["sid"];

/*
* Wenn $_GET["action"] gleich insert ist
* Dann wird der Artikel aus dem Shop in die
* Datenbank Tabelle 'warenkorb' eingefügt.
* Am Ende wird man auf 'warenkorb.php' weitergeleitet
*/

if ($_GET["action"] == "insert"){

$pid = $_POST["pid"];
$menge = $_POST["menge"];

/*
* Wenn der User keine Menge oder Menge 0 eingegeben hat
* passier nichts. Man wird gleich in den Warenkorb weitergeleitet
*/

if ($menge == "0") header("Location: warenkorb.php");
else {

/*
* Wenn die Menge was anderes ist als 0 dann wird
* zuerst abgefragt, ob es diesen Artikel in der DB mit
* der Session des Users schon gibt
*
* Wenn ja, dann wird nur ein UPDATE gemacht, d.h. die
* Menge des Artikels Wird verändert, sonst nichts
*
* Wenn nein, dann wird der Artikel MIT der Session des
* Users gespeichert.
*/

$result = mysql_query("SELECT artikelbez, artikelnr, preis  FROM produkt WHERE pid = '$pid'");
$show = mysql_fetch_array($result);

$artikelbez = $show["artikelbez"];
$artikelnr = $show["artikelnr"];
$preis = $show["preis"];

$result = mysql_query("SELECT wkid FROM warenkorb WHERE sid = '$sid' AND pid = '$pid'");
$num = mysql_num_rows($result);
   

if ($num == "0") mysql_query("INSERT INTO warenkorb  VALUES('','$sid','$pid','$artikelbez','$artikelnr','$menge','$preis')");
else mysql_query("UPDATE warenkorb SET menge=menge+$menge WHERE sid = '$sid' AND pid = '$pid'");

header("Location: warenkorb.php");
}
}

/*
* Wenn 'action' gleich 'edit' ist,
* wird abgefragt, was der User eingegeben hat.
*
* Wenn er bei Menge 0 eingegeben hat, so wird der Artikel
* aus dem Warenkorb gelöscht.
*
* Wenn er was anderes eingegeben hat, so wird ein UPDATE
* gemacht, d.h. die Menge wird des Artikels wird geändert
* sonst nichts :D
*/

if ($_GET["action"] == "edit"){

$wkid = $_GET["wkid"];
$menge = $_POST["menge"];

if ($menge == "0"){
mysql_query("DELETE FROM warenkorb WHERE wkid = '$wkid'");
header("Location: warenkorb.php");
}else{
mysql_query("UPDATE warenkorb SET menge = '$menge' WHERE wkid = '$wkid'");
header("Location: warenkorb.php");
}
}

/*
* Wenn 'action' gleich 'delete' ist,
* dann wird nach der Wkid gefrage, die ich
* in der Linkleiste mitgegeben habe
*
* Dann wird der Artikel aus dem Warenkorb gelöscht
*/

if ($_GET["action"] == "delete"){

$wkid = $_GET["wkid"];

mysql_query("DELETE FROM warenkorb WHERE wkid = '$wkid'");
header("Location: warenkorb.php");
}

/*
* Wenn 'action' gleich 'delete_all' ist,
* dann wird der ganze Warenkorb des Users gelöscht
*/

if ($_GET["action"] == "delete_all"){
mysql_query("DELETE FROM warenkorb WHERE sid = '$sid'");
header("Location: warenkorb.php");
}

/*
* Wenn es 'action' nicht gibt, dann wird das hier
* angezeigt:
*
* Gleich am Anfang wird abgefragt, ob es was in der
* DB gibt mit der Session.
*
* Falls ja, dann ist die Variable $warenkorb = voll
* Falls nein, dann ist die Variable $warenkorb = leer
*/

if ($_GET["action"] == ""){

$result = mysql_query("SELECT wkid FROM warenkorb WHERE sid = '$sid'");
$num = mysql_num_rows($result);

if ($num == "0") $warenkorb = "leer";
else $warenkorb = "voll";
?>

<html>
<head>
    <title>Online CD - Shop Warenkorb</title>
</head>
<body>

<table border="0" cellpadding="0" cellspacing="0" height="100%" width="100%">
<tr>
<td align="center">
<table border="1" bordercolor="#000000" cellpadding="5" cellspacing="1" height="100%" width="800" rules="groups">
<tr>
<td align="center" colspan="6" valign="top">
<font color="#000000" face="verdana,arial" size="-1"><b>Warenkorb</b></font>
</td>
</tr>
<tr>
<td colspan="6">&nbsp;</td>
</tr>
<tr>
<td align="center"><font color="#000000" face="verdana,arial" size="-1"><b>Artikelbezeichnung</b></font></td>
<td align="center"><font color="#000000" face="verdana,arial" size="-1"><b>Artikelnummer</b></font></td>
<td align="center"><font color="#000000" face="verdana,arial" size="-1"><b>Menge</b></font></td>
<td align="center"><font color="#000000" face="verdana,arial" size="-1"><b>E. Preis</b></font></td>
<td align="center"><font color="#000000" face="verdana,arial" size="-1"><b>Gesamt</b></font></td>
<td>&nbsp;</td>
</tr>
<tr>
<td colspan="6">&nbsp;</td>
</tr>
<?
/*
* Hier wird nach der Variable $warenkorb gefragt
* die wir weiter oben defeniert haben
*
* Wenn $warekorb gleich leer ist dann wird das hier
* angezeigt (in meinem Bsp: Ihr Warenkorb ist leer!)
*/

if ($warenkorb == "leer"){
?>
<tr>
<td align="center" colspan="6"><font color="#FF0033" face="verdana,arial" size="-1"><b>Ihr Warenkorb ist leer!</b></font></td>
</tr>
<?
/*
* Wenn $warenkorb was anderes ist als leer
* dann wird das hier angezeigt
*
* Ich frage mit SELECT in der DB nach, was der
* User für Artikel im Warenkorb hat
*
* Dann erstelle ich eine Schleife, d.h.
* Für jeden Artikel wird eine Zeile angezeigt. Es muss für jede
* Zeile ein Formular gemacht werden, damit der User
* einzelne Artikel löschen oder editieren kann
*/

}else{

$result = mysql_query("SELECT wkid, artikelbez, artikelnr, menge, stkpreis FROM warenkorb WHERE sid = '$sid'");
while($row = mysql_fetch_object($result)){

$wkid = $row -> wkid;
$artikelbez = $row -> artikelbez;
$artikelnr = $row -> artikelnr;
$menge = $row -> menge;
$stkpreis = $row -> stkpreis;

$gespreis = $menge * $stkpreis;

if(!isset($endpreis_ohne_versandkosten)) $endpreis_ohne_versandkosten = "";

$endpreis_ohne_versandkosten = $endpreis_ohne_versandkosten + $gespreis;
?>
<form action="warenkorb.php?action=edit&wkid=<? echo $wkid ?>" method="post">
<tr>
<td align="center"><font color="#000000" face="verdana,arial" size="-1"><? echo $artikelbez ?></font></td>
<td align="center"><font color="#000000" face="verdana,arial" size="-1"><? echo $artikelnr ?></font></td>
<td align="center"><input type="text" name="menge" value="<? echo $menge ?>" maxlength="3" size="2"> <input type="submit" name="aendern" value="Ändern"></td>
<td align="center"><font color="#000000" face="verdana,arial" size="-1"><b><? echo $stkpreis ?> €</b></font></td>
<td align="center"><font color="#FF0033" face="verdana,arial" size="-1"><b><? echo $gespreis ?> €</b></font></td>
<td align="center"><a href="warenkorb.php?action=delete&wkid=<? echo $wkid ?>" title="Artikel aus dem Warenkorb löschen"><font face="verdana,arial" size="-2">Löschen</font></a></td>
</tr>
</form>
<?
}
?>
<tr>
<td colspan="6">&nbsp;</td>
</tr>
<tr>
<td align="right" colspan="4"><font color="#000000" face="verdana,arial" size="-1"><b>Gesamtpreis:</b></font></td>
<td align="center"><font color="#FF0033" face="verdana,arial" size="-1"><b><? echo $endpreis_ohne_versandkosten ?> €</b></font></td>
<td>&nbsp;</td>
</tr>
<tr>
<td align="right" colspan="4"><font color="#000000" face="verdana,arial" size="-1"><b>Versandkosten:</b></font></td>
<td align="center"><font color="#FF0033" face="verdana,arial" size="-1"><b>
<?     $artikelNummern = array();
    while($row = mysql_fetch_object($result)) {
        $artikelNummern[] = $row->pid;

        //  hier alle weiteren Anweisungen in der Schleife abarbeiten
    }
    rsort($artikelNummern);
    if($artikelNummern[0] > 20000000)
        $versandkosten = '4,90';
    else
        $versandkosten = '7,90';
    print $versandkosten;
    print $pid;
?> €</b></font></td>
<td>&nbsp;</td>
</tr>
<tr>
<td align="right" colspan="6">&nbsp;</td>
</tr>
<? $endpreis = $endpreis_ohne_versandkosten + $versandkosten;
?>
<tr>
<td align="right" colspan="4"><font color="#000000" face="verdana,arial" size="-1"><b>Endpreis:</b></font></td>
<td align="center"><font color="#FF0033" face="verdana,arial" size="-1"><b><? echo $endpreis ?> €</b></font></td>
<td>&nbsp;</td>
</tr>
<tr>
<td align="right" colspan="6">&nbsp;</td>
</tr>
<tr>
<td align="right" colspan="4"><a href="warenkorb.php?action=delete_all" title="Ganzer Warenkorb löschen">Warenkorb löschen</a></td>
<td align="center"><a href="bestellformular.php" title="Zum Bestellformular">Bestellen</a></td>
<td>&nbsp;</td>
</tr>
<?
}
?>
<tr>
<td colspan="6" height="100%">&nbsp;</td>
</tr>
</table>
</td>
</tr>
</table>

</body>
</html>

<?
}
?>

<?
@MYSQL_CLOSE($db);
?>

Hat jemand eine Ahnung warum ich die Variable nicht angezeigt bekomme? Ich weiss naemlich nicht mehr weiter.

Danke viel mals
User avatar
Sarah19
 
Posts: 58
Joined: 23. August 2004 17:09

Postby Wiedmann » 02. December 2004 23:22

$pid = $_POST['pid']
...
Und ziehmlich zum ende hin will ich die Varuable ausgeben, nur es wird nichts anusgegeben

Wo soll der POST mit dieser Variablen herkommen?

und ich bekomme auch keine Fehlermeldung.

Dann solltest du mal dein error_reporting auf E_ALL stellen. Da hättest du dann gleich in Zeile 5 etwas.

Anstatt "<?" solltest du auch "<?php" verwenden. Sonst kanns dir passieren, dass auf manchen Servern einfach gar nichts passiert...
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby Sarah19 » 03. December 2004 00:03

Dann solltest du mal dein error_reporting auf E_ALL stellen

Wie mache ich das? Habe Xampp.

Die Variable kommt aus der Tabelle.

Gruss
User avatar
Sarah19
 
Posts: 58
Joined: 23. August 2004 17:09

Postby Wiedmann » 03. December 2004 00:09

Wie mache ich das? Habe Xampp.

In der php.ini (\xampp\apache\bin) den Wert anders einstellen.

Die Variable kommt aus der Tabelle.

Welche Tabelle?

Wenn du eine MySQL DB meinst. Hast du dir schonmal die Mühe gemacht, und den Inhalt dieser Spalte mit phpMyAdmin angeschaut?

Mal abgesehen davon, dass man mit $_POST nichts aus einer DB holt. Nur etwas was mit einem Formular abgeschickt wurde.
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany


Return to PHP

Who is online

Users browsing this forum: No registered users and 2 guests