SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



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



:: Buchempfehlung ::

TYPO3 Kochbuch

TYPO3 Kochbuch zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP für Fortgeschrittene und Experten
Hilfe Community Kalender Heutige Beiträge Suchen

PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 27.11.2004, 17:20:40
Sarah19 Sarah19 ist offline
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">&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>
<?     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.
Mit Zitat antworten
  #2  
Alt 27.11.2004, 17:48:31
dirter dirter ist offline
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 "versaNdkosten" hin ;-)
Mit Zitat antworten
  #3  
Alt 27.11.2004, 18:25:38
Sarah19 Sarah19 ist offline
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
Mit Zitat antworten
  #4  
Alt 27.11.2004, 19:43:24
Benutzerbild von xabbuh
xabbuh xabbuh ist offline
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;
?>
Mit Zitat antworten
  #5  
Alt 27.11.2004, 20:39:31
Gweilo Gweilo ist offline
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.
Mit Zitat antworten
  #6  
Alt 28.11.2004, 00:41:56
Sarah19 Sarah19 ist offline
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">&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);
?>
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)
Mit Zitat antworten
  #7  
Alt 28.11.2004, 13:55:18
Benutzerbild von xabbuh
xabbuh xabbuh ist offline
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']; 
Mit Zitat antworten
  #8  
Alt 29.11.2004, 22:00:22
Sarah19 Sarah19 ist offline
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
Mit Zitat antworten
  #9  
Alt 30.11.2004, 07:55:39
c4 c4 ist offline
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?
__________________
sic!
--> http://dbCF.de/
Mit Zitat antworten
  #10  
Alt 30.11.2004, 08:26:42
Benutzerbild von xabbuh
xabbuh xabbuh ist offline
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.
Mit Zitat antworten
Antwort


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.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 23:45:45 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt