CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken |
27.11.2004, 17:20:40
|
Junior Member
|
|
Registriert seit: Aug 2004
Beiträge: 152
|
|
If Schleife innerhalb einer Whileschleife
Hallo, habe ein Warenkorbsystem gemacht, und jetzt will ich ne Schleife einbauen, die wenn die Variable "pid" <20000000 ist 4,90 ausgibt und ansonsten 7,90. Brauche das fuer die Versandkosten, da die Artikel, mit den Nummern unter 20000000 guenstiger im Versand sind als die anderen.
Normal ware dass ja einfach nur:
PHP-Code:
<? if (pid<20000000) $versandkosten ="4,90";
else $versabdkosten ="7,90";
echo $versandkosten;
?>
Das problem ist aber, dass ich vorher ne while schleife habe, damir man eben jeden einzelnen Artikel auf der Warenkorbseite bearbeiten kann.Also so sieht die Schleife aus:
PHP-Code:
<?
$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"> </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> </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>
<? if (pid<20000000) $versandkosten ="4,90";
else $versabdkosten ="7,90";
echo $versandkosten;
?> €</b></font></td>
Mein Problem ist, dass mein Warenkorb immer 4,90 anzeigt und nie 7,90.
Aber ich will, dass sobald ein Artikel nicht <20000000 ist, sollen die Versandkosten 7,90 betragen. Und ich habe keine Ahnung, wie ich das realisieren kann.
Danke fuer eure Antworten.
|
27.11.2004, 17:48:31
|
Anfänger
|
|
Registriert seit: May 2003
Beiträge: 94
|
|
Re: If Schleife innerhalb einer Whileschleife
Zitat:
[i]Original geschrieben von Sarah19
else $versabdkosten ="7,90";
[/B]
|
hi
muss da nicht "versa Ndkosten" hin ;-)
|
27.11.2004, 18:25:38
|
Junior Member
|
|
Registriert seit: Aug 2004
Beiträge: 152
|
|
Jap muss da hin,
aendert aber trotdem nix. Es wird immer nur 4,90 angezeigt und nie 7,90. :(
Aber das war schonmal ein fehler da drin.
Danke
|
27.11.2004, 19:43:24
|
|
SELFPHP Guru
|
|
Registriert seit: May 2003
Beiträge: 7.187
|
|
Wo kommt den pid her? Bist du sicher, dass pid wirklich eine Konstante ist? Vermutlich hast du eine Spalte in der Datenbank, die so bezeichnet wird oder?
Vom Prinzip her, würde ich es so machen, dass du alle Artikelnummern in der Schleife in einem Array ablegst, anschließend das Array absteigend sortierst und dann überprüfst, ob das erste Element, welches somit auch das größte ist, größer als 20.000.000 ist:
PHP-Code:
<?php
$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;
?>
|
27.11.2004, 20:39:31
|
Member
|
|
Registriert seit: Oct 2002
Ort: ch
Beiträge: 822
|
|
Bei solchen sachen ist echo dein bester freund. gib einfach mal an, was in der pid variable drinsteht, dann siehst du schnell, wo der haken sein könnte. Vermutlich ist die $pid variable nicht korrekt belegt.
|
28.11.2004, 00:41:56
|
Junior Member
|
|
Registriert seit: Aug 2004
Beiträge: 152
|
|
@ Gweilo Habe echo $pid eingeben und bekomme keine Ausgabe. Was kann das bedeuten?
@ xabbuh jap pid kommt von der DB. Und ist belegt. Ich poste mal den gesamten Text, auch wenn dass ja eigentlich nicht so gewollt ist. Kleine Anmerkung, aus irgendeiner Laune herraus habe ich eine Variable $artikelnr benannt, ihr dann aber nicht nicht die artikelnummer des Artikels als Inhalr gegeben als weitere Textvariable definiert. Nur damit ihr euch nicht wundert. $pid ist die Nummer, die fuer jeden Artikel einzigartig ist.
PHP-Code:
<?
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"> </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> </td>
</tr>
<tr>
<td colspan="6"> </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"> </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> </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> </td>
</tr>
<tr>
<td align="right" colspan="6"> </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> </td>
</tr>
<tr>
<td align="right" colspan="6"> </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> </td>
</tr>
<?
}
?>
<tr>
<td colspan="6" height="100%"> </td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>
<?
}
?>
<?
@MYSQL_CLOSE($db);
?>
Hoffe ihr koennt den Fehler finden, denn ich finde ihn nicht.*schaem*
Danke
Geändert von Sarah19 (30.11.2004 um 22:57:51 Uhr)
|
28.11.2004, 13:55:18
|
|
SELFPHP Guru
|
|
Registriert seit: May 2003
Beiträge: 7.187
|
|
Die Änderungen, die ich dir geschrieben habe, kannst du wohl weglassen, da $pid ja aus dem Formular kommen soll. Du kannst zur Überprüfung also ruhig wieder auf die ursprüngliche Abfrage zurückgreifen:
PHP-Code:
<?php
if($pid<20000000)
$versandkosten ="4,90";
else
$versabdkosten ="7,90";
echo $versandkosten;
?>
Du musst dem Script nur noch sagen, dass $pid dem Element pid aus dem $_POST-Array entspricht. Dazu kannst du einfach hinter die Zeile
PHP-Code:
if ($_GET["action"] == ""){
einfach noch diese Zeile einfügen, die du auch schon in einer anderen Abfrage nutzt:
PHP-Code:
$pid = $_POST['pid'];
|
29.11.2004, 22:00:22
|
Junior Member
|
|
Registriert seit: Aug 2004
Beiträge: 152
|
|
Hallo,
es klappt immernoch nicht.
Ich weiss nicht wieso, aber wenn ich
PHP-Code:
<? echo $pid ?>
irgendwo eingebe, also anstatt des Textes Versandkosten: gibt mir mein Programm nix aus. Ich habe die Zeile
PHP-Code:
$pid = $_POST['pid'];
schon gleich nach include gesetzt und es haut trotzdem nicht hin.
Sorry wegen all dieser Probleme ich weiss eure hilfe/Bemuehungen, vor allem deine xabbuh zu schaetzen.
Gruezi
|
30.11.2004, 07:55:39
|
SELFPHP Guru
|
|
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 54
Beiträge: 4.748
|
|
Ich weiß, trägt nicht zum Thema bei:
--> Was sind eigentlich if-Schleifen?
|
30.11.2004, 08:26:42
|
|
SELFPHP Guru
|
|
Registriert seit: May 2003
Beiträge: 7.187
|
|
Schreibe deinen Code, so wie du ihn jetzt hast (auch ruhig mit echo $pid) in ein Nopaste und setzt den Link hier rein. Die Zeilen mit reinem HTML kannst du ruhig weglassen.
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 23:45:45 Uhr.
|