Shop-Hilfe.com
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 29.05.2008, 15:02   #1
TP-Senior
 
Benutzerbild von emiglio
 
Registriert seit: Sep 2002
Ort: Schaffhausen/Schweiz
emiglio ist auf einem guten Weg

Warenkorb


Bin fleissig am Lernen mit Kevin Yank. Ich habe mir aus seinem PHP-Buch einen Warenkorb "gebastelt".
Klappt auch alles mit session und Warenkorb. Die (Beispiel)-Produkte befinden sich in einem Array:
PHP-Code:
 <?php
    $items 
= array( "DVD Standard""DVD Premium""DVD Deluxe");
    
$Prices = array( 24.9049.9079.90 );
?>
Diese Produkte werden nun alle aufgelistet:
PHP-Code:
<?php
       
for($i 0$i count($items); $i++) {
       echo(
"<tr>");
       echo(
"<td>".$items[$i]."</td>");
       echo(
"<td>Euro ".number_format($Prices[$i],2,",",".")."</td>");
       echo(
"<td><a href='$PHP_SELF?buy=$i'>Kaufen</a></td>");
       echo(
"</tr>");
       }
?>
Und genau hier stolpere ich; Wie kann ich nur einen Artikel ausgeben, also zum Beispiel nur "DVD Standard",
damit dieser dann über "Kaufen" auch im Warenkorb landet ?
emiglio ist offline   Mit Zitat antworten


Alt 29.05.2008, 15:09   #2
TP-Veteran
 
Registriert seit: May 2006
marc22 bringt sich richtig ein
Bei DVD-Standard wäre es

PHP-Code:
echo $items[0].'<br>'
echo $prices[0
Allerdings ist das ja ein sehr komisches Beispiel...
__________________
...Meine Meinung

1984
marc22 ist offline   Mit Zitat antworten
Alt 30.05.2008, 15:43   #3
TP-Senior
 
Benutzerbild von emiglio
 
Registriert seit: Sep 2002
Ort: Schaffhausen/Schweiz
emiglio ist auf einem guten Weg

Warenkorb


Dachte schon es wird einfach, aber es klappt leider nicht nach Wunsch.
Wenn ich deinen Vorschlag folgendermassen anwende:
PHP-Code:
<?php
    
for($i 0$i count($items); $i++) {
    echo 
$items[0];
    echo 
$prices[0];
    echo(
"<a href='$PHP_SELF?buy=$i'>Kaufen</a>");
    }
?>
werden mir (logischerweise) alle items des arrays mit dem Wert von [0] ausgegeben.
Wenn ich folgendes anwende:
PHP-Code:
<?php
    
echo $items[0];
    echo 
$prices[0];
    echo(
"<a href='$PHP_SELF?buy=$i'>Kaufen</a>");
?>
wird nichts in den Warenkorb geschrieben. Was muss ich an Stelle von
PHP-Code:
'$PHP_SELF?buy=$i' 
angeben?
emiglio ist offline   Mit Zitat antworten
Alt 30.05.2008, 17:28   #4
TP-Moderator
 
Benutzerbild von Adromir
 
Registriert seit: Jun 2004
Ort: Hannover
Adromir ist ein richtiges Arbeitstier - DANKEAdromir ist ein richtiges Arbeitstier - DANKEAdromir ist ein richtiges Arbeitstier - DANKEAdromir ist ein richtiges Arbeitstier - DANKEAdromir ist ein richtiges Arbeitstier - DANKEAdromir ist ein richtiges Arbeitstier - DANKE
$_server['php_self']...

Edit:
Blöde Anti- Schreien Funktion.. Muss natürlich groß geschrieben werden.
__________________
Je größer der Deppenfaktor, desto gigantischer das Bescheidwissergefühl
-Dieter Nuhr
Adromir ist offline   Mit Zitat antworten
Alt 30.05.2008, 19:17   #5
TP-Senior
 
Benutzerbild von emiglio
 
Registriert seit: Sep 2002
Ort: Schaffhausen/Schweiz
emiglio ist auf einem guten Weg
Nun, es muss auch Schwachsinnige geben, denn ich schaffs nicht.
Ich poste mal die funktionierenden beiden Scripts Produkte & Warenkorb:
PHP-Code:
<?php
$shoppingcart 
= array();
session_start();
session_register('shoppingcart');
if (
$buy != "") {
// Artikel am Ende des Arrays $shoppingcart einfügen
$shoppingcart[] = $buy;
header("Location: $PHP_SELF?".SID);
exit();
}
?>
<html>
<head>
<title>Produkte</title>
</head>
<body>
    <?php
    $items 
= array( "Standard""Premium""Deluxe");
    
$Prices = array( 25.0045.0075.00 );
    
?>
   <table border="1">
   <tr>
    <th>Artikelbeschrieb</th>
    <th>Preis</th>
   </tr>
    <?php
     
for($i 0$i count($items); $i++) {
       echo(
"<tr>");
       echo(
"<td>".$items[$i]."</td>");
       echo(
"<td>Euro ".number_format($Prices[$i],2,",",".")."</td>");
       echo(
"<td><a href='$PHP_SELF?buy=$i'>Kaufen</a></td>");
       echo(
"</tr>");
       }
    
?>
    </table>
</body>
</html>

PHP-Code:
<?php
$shoppingcart 
= array();
session_start();
session_register('shoppingcart');
if (
$empty != "") {
// Array $shoppingcart leeren
    
session_unregister("shoppingcart");
    
header("Location: $PHP_SELF?".SID);
    exit();
    }
?>
<html>
<head>
<title>Warenkorb</title>
</head>
<body>
<h1>Ihr Warenkorb</h1>
    <?php
    $items 
= array( "Standard""Premium""Deluxe");
    
$Prices = array( 25.0045.0075.00 );
    
?>
   <table border="1">
   <tr>
      <th>Artikelbeschrieb</th>
      <th>Preis</th>
   </tr>
   <?php
   
for($i 0$i count($shoppingcart); $i++) {
       echo(
"<tr>");
       echo(
"<td>".$items[$shoppingcart[$i]]."</td>");
       echo(
"<td align=\"right\">"); 
       echo(
number_format($Prices[$shoppingcart[$i]],2,",","."));
       echo(
" Euro</td>");
       echo(
"</tr>");
       
$total $total $Prices[$shoppingcart[$i]];
       }
   
?>
   <tr>
   <th align="right">Gesamtpreis:</th><br />
   <th align="right"><?=number_format($total,2,",",".")?> Euro</th>
   </tr>
   </table>
   <p><a href="<?=$PHP_SELF?>?empty=1">Warenkorb leeren</a></p>
</body>
</html>
....und die Frage lautet weiterhin: wie kriege ich es hin, dass nur ein Produkt angezeigt wird (das schaffe ich ja mittlerweile)
und dieses Produkt auch in den Warenkorb gelangt.
Wenn ich nun
PHP-Code:
<?php
     
for($i 0$i count($items); $i++) {
       echo(
"<tr>");
       echo(
"<td>".$items[$i]."</td>");
       echo(
"<td>Euro ".number_format($Prices[$i],2,",",".")."</td>");
       echo(
"<td><a href='$PHP_SELF?buy=$i'>Kaufen</a></td>");
       echo(
"</tr>");
       }
    
?>
durch
PHP-Code:
<?php
    
echo $items[0];
    echo 
$prices[0];
    echo(
"<a href='$PHP_SELF?buy=$i'>Kaufen</a>");
?>
ersetze klappt das ja nicht. Wie erwähnt bin ich der (hoffentlich richtigen) Meinung dass es "nur" an der letzten Zeile liegt:
PHP-Code:
echo("<a href='$PHP_SELF?buy=$i'>Kaufen</a>"); 
Habe es nun mit allen Variationen des Vorschlags von Adromir versucht und scheitere kläglich.
emiglio ist offline   Mit Zitat antworten
Alt 31.05.2008, 10:43   #6
TP-Urgestein
 
Benutzerbild von webcreate
 
Registriert seit: Nov 2003
Ort: NRW
webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts
Probleme
a) Dein Script läuft nur, wenn register_globals on sind, was nicht sein sollte.
b) Du legst bei jedem Aufruf die Session Var neu an, so ist der Warenkorb immer leer.

PHP-Code:
<?php
session_start
();

if (
$_GET['buy'] != "") {
    
// SESSION Var nur dann anlegen, wenn sie nicht schon existiert
    
if(!isset($_SESSION['shoppingcart']))
    {
        
$_SESSION['shoppingcart'] = array();
    }
    
// Artikel am Ende des Arrays $shoppingcart einfügen
    
$_SESSION['shoppingcart'][] = $_GET['buy'];
    
header("Location: {$_SERVER['PHP_SELF']}?".session_id());
    exit();
}
?>
<html>
<head>
<title>Produkte</title>
</head>
<body>
    <?php
    $items 
= array( "Standard""Premium""Deluxe");
    
$Prices = array( 25.0045.0075.00 );
    
?>
   <table border="1">
   <tr>
    <th>Artikelbeschrieb</th>
    <th>Preis</th>
   </tr>
    <?php
     
//for($i = 0; $i < count($items); $i++) {
     
$i 0;  // Wertebereich 0 - 2  
       
echo("<tr>");
       echo(
"<td>".$items[$i]."</td>");
       echo(
"<td>Euro ".number_format($Prices[$i],2,",",".")."</td>");
       echo(
"<td><a href='{$_SERVER['PHP_SELF']}?buy=$i'>Kaufen</a></td>");
       echo(
"</tr>");
       
//}
    
?>
    </table>
</body>
</html>

<?php 
// Testausgabe
echo '<pre>';
print_r($_SESSION['shoppingcart']);
echo 
'</pre>';
Vergleiche das mal mit Deinem zweiten Script ...
Zur Ausgabe von nur einem Produkt habe ich die Schleifenzeilen mal auskommentiert und eine Zähler-Var angelegt ($i), die dann das entsprechende Produkt wählt.
__________________
Gruß Mark
Mein Blog zum TP || XING Profil || grafiker.de Profil || How to use GOOGLE || PS Kniffe
emCalculator 1.0



webcreate IT SOLUTIONS
www.webcreate-nrw.de
webcreate ist offline   Mit Zitat antworten
Alt 31.05.2008, 11:14   #7
TP-Senior
 
Benutzerbild von emiglio
 
Registriert seit: Sep 2002
Ort: Schaffhausen/Schweiz
emiglio ist auf einem guten Weg

Warenkorb


Es funktioniert so tadellos. Im Nachhinein erscheint alles logisch wenn es gut erklärt ist.
Thanks a lot.
emiglio ist offline   Mit Zitat antworten
Alt 31.05.2008, 11:22   #8
TP-Urgestein
 
Benutzerbild von webcreate
 
Registriert seit: Nov 2003
Ort: NRW
webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts
Hier dann nochmal eine kleine Anpassung vom Warenkorb.
Hier sinnig mit foreach zu arbeiten, da man ja nicht nur den ganzen Korb leeren will, sondern auch einzelne Artikel und wenn man dann das erste ([0]) löscht, kommt man mit der for-Schleife nicht mehr weit.

shopping.php
PHP-Code:
<?php
session_start
();

if (
$_GET['buy'] != "") {
    
// SESSION Var nur dann anlegen, wenn sie nicht schon existiert
    
if(!isset($_SESSION['shoppingcart']))
    {
        
$_SESSION['shoppingcart'] = array();
    }
    
// Artikel am Ende des Arrays $shoppingcart einfügen
    
$_SESSION['shoppingcart'][] = $_GET['buy'];
    
header("Location: {$_SERVER['PHP_SELF']}?".session_id());
    exit();
}
?>
<html>
<head>
<title>Produkte</title>
</head>
<body>
    <?php
    $items 
= array( "Standard""Premium""Deluxe");
    
$Prices = array( 25.0045.0075.00 );
    
?>
   <table border="1">
   <tr>
    <th>Artikelbeschrieb</th>
    <th>Preis</th>
   </tr>
    <?php
     
for($i 0$i count($items); $i++) {
     
//$i = 0;  // Wertebereich 0 - 2  
       
echo("<tr>");
       echo(
"<td>".$items[$i]."</td>");
       echo(
"<td>Euro ".number_format($Prices[$i],2,",",".")."</td>");
       echo(
"<td><a href='{$_SERVER['PHP_SELF']}?buy=$i'>Kaufen</a></td>");
       echo(
"</tr>");
     }
    
?>
    </table>
    <a href="warenkorb.php">zum Warenkorb</a>
</body>
</html>
warenkorb.php
PHP-Code:
<?php
session_start
();
if (
$_GET['empty'] != "") {
// Array $shoppingcart leeren
    
unset($_SESSION['shoppingcart']);
    
header("Location: {$_SERVER['PHP_SELF']}?".session_id());
    exit();
}
if (
$_GET['del'] != "") {
    
// Artikel löschen
    
unset($_SESSION['shoppingcart'][$_GET['del']]);
}    
?>
<html>
<head>
<title>Warenkorb</title>
</head>
<body>
<h1>Ihr Warenkorb</h1>
    <?php
    $items 
= array( "Standard""Premium""Deluxe");
    
$Prices = array( 25.0045.0075.00 );
    
$total 0;
    if(!empty(
$_SESSION['shoppingcart']))
    {
    
?>
        <table border="1">
        <tr>
          <th>Artikelbeschrieb</th>
          <th>Preis</th>
          <th>L&ouml;schen</th>
        </tr>
        <?php
        
foreach($_SESSION['shoppingcart'] as $key => $value)
        {
            echo(
"<tr>");
            echo(
"<td>".$items[$value]."</td>");
            echo(
"<td align=\"right\">"); 
            echo(
number_format($Prices[$value],2,",","."));
            echo(
" Euro</td>");
            echo(
"<td align=\"right\">"); 
            echo(
'<a href="'.$_SERVER['PHP_SELF'].'?del='.$key.'">l&ouml;schen</a>');
            echo(
"</td>");
            echo(
"</tr>");
            
$total $total $Prices[$value];
        }
        
?>
       <tr>
       <th align="right">Gesamtpreis:</th><br />
       <th align="right"><?=number_format($total,2,",",".")?> Euro</th>
       </tr>
       </table>
       <p><a href="<?php echo $_SERVER['PHP_SELF']?>?empty=1">Warenkorb leeren</a></p>
       <?php
    
}
       else {
       echo 
'Ihr Warenkorb ist leer.';
   }
   
?>
   <a href="shopping.php">zum Shop</a>
</body>
</html>
__________________
Gruß Mark
Mein Blog zum TP || XING Profil || grafiker.de Profil || How to use GOOGLE || PS Kniffe
emCalculator 1.0



webcreate IT SOLUTIONS
www.webcreate-nrw.de
webcreate ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik
Warenkorb Warenkorb
« Herkunft anhand der IP-Adresse ermitteln | RegExp/Replace Kram »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 19:59 Uhr.

Powered by: vBulletin Version 3.7 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. / Search Engine Friendly URLs by vBSEO 3.2.0 ©2008, Crawlability, Inc.