-
-
-
21.10.11 12:45 #33
- Registriert seit
- May 2006
- Ort
- There is no place like 127.0.0.1
- Beiträge
- 3.521
Hi, les mal diesen Post von mir: http://www.tutorials.de/php/380620-h...ml#post1972809
Grüße
--
Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)
-
-
21.10.11 14:08 #35
- Registriert seit
- May 2006
- Ort
- There is no place like 127.0.0.1
- Beiträge
- 3.521
Das Problem besteht darin, das nirgendwo sonst die Anmelde-Funktion aufgerufen werden kann. Theoretisch wäre es noch im Konstruktor von class_kunde möglich. Da in class_webshop im Konstruktor das Kunden-Objekt erzeugt wird, wird implizit der Konstruktor von class_kunde aufgerufen. Du könntest die Prüfung, ob $_POST die Anmelde-Daten enthält also auch in der __construct()-Funktion von class_kunde einbauen. Das ist zwar keine schöne aber eine funktionierende Lösung. Es müsste ungefähr so aussehen:
Code php:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
class kunde { private $KndNr; private $bn = "Admin"; private $pw = "Hallo"; public function __construct() { //session_start(); $this->KndNr = (isset($_SESSION['id'])) ? $_SESSION['id'] : time(); if( isset($_POST['bn']) && isset($_POST['pw']) ) { $this->anmelden($_POST['bn'], $_POST['pw']); } } public function anmelden($bn, $pw) { if($bn == 'Admin' && $pw == 'Hallo') { $this->KndNr = 1; } $_SESSION['id'] = $this->KndNr; }
Grüße
--
Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)
-
Hi Saftmeister,
hab gerade versucht die Änderungen einzutragen funktioniert aber nicht
Nicht zuletzt gibt es mir aber ein Gefühl von Beruhigung nicht der Einzige zu sein, der diesen Schnipsel nicht verpflanzen kann.
Bei der Eingabe von Name und Passwort bleibt die Eingabemaske auf dem Bildschirm.
Sooooo einfach ist es nicht
Ich würde mich freuen, wenn du dich nochmal mit einer Idee melden könntest
Gruß,
Xrzepetelda
-
23.10.11 09:48 #37
- Registriert seit
- May 2006
- Ort
- There is no place like 127.0.0.1
- Beiträge
- 3.521
Hi,
ich hab es gerade noch mal getestet: Es funktioniert prima! Im Anhang findest du meine Version, in der im Konstruktor der Klasse kunde die anmelden-Funktion aufgerufen wird.Grüße
--
Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)
-
24.12.11 15:34 #38
- Registriert seit
- Dec 2011
- Beiträge
- 4
Hallo,
sitze gerade am gleichen Script fest und komme nicht weiter. Wenn ich einen Artikel in den Warenkorb legen möchte erhalte ich folgenden Fehler.
Notice: Undefined index: 2002 in C:\xampp\htdocs\ea\class_artikel01.php on line 41
Hier der Code dazu
public function waehlen($artikelnummer)
{
$this->korb[$artikelnummer]++;
}
Wo liegt der Fehler? Ich hoffe ihr könnt mir weiterhelfen
Vielen Dank
Gruß
Coconut-Pete
-
24.12.11 16:06 #39
- Registriert seit
- May 2006
- Ort
- There is no place like 127.0.0.1
- Beiträge
- 3.521
Naja, in der Member-Variablen korb, was du offensichtlich als Array verwenden willst, existiert noch kein Index mit der Nummer 2002. Du kannst das "Problem" relativ leicht umgehen:
Code php:1 2 3 4 5 6 7
public function waehlen($artikelnummer) { if(isset($this->korb[$artikelnummer])) $this->korb[$artikelnummer]++; else $this->korb[$artikelnummer] = 1; }
Grüße
--
Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)
-
26.12.11 14:26 #40
- Registriert seit
- Dec 2011
- Beiträge
- 4
Hallo,
vielen Dank für die schnelle Hilfe. Nun bekomme ich zwar keine Fehlermeldung mehr, allerdings kann ich keinen Artikel in den Warenkorb einfügen. Dieser ist immer leer. Wo könnte der Fehler liegen?
Danke
Gruß
Coconut-Pete
-
26.12.11 15:06 #41
- Registriert seit
- May 2006
- Ort
- There is no place like 127.0.0.1
- Beiträge
- 3.521
Die Frage ist eine Meta-Frage, auf die man so gut wie jede Antwort geben könnte

Kannst du evtl. mal ein bisschen mehr Code posten oder zumindest beschreiben, wie den Warenkorb programmiert hast? Arbeitest du mit Sessions? Mit Cookies? Komplett andere Technik?Grüße
--
Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)
-
26.12.11 15:31 #42
- Registriert seit
- Dec 2011
- Beiträge
- 4
Hi,
im Prinzip geht es immernoch um das gleiche Script, siehe deine ea.zip. Hier der Code von class_artikel
Vielen Dank
PHP-Code:<?php
require_once ("class_sitzungsSeite.php");
class artikel extends sitzungsSeite
{
protected $artikelArray = array();
public function __construct($dateiname)
{
parent::__construct();
$data = simplexml_load_file($dateiname);
foreach($data as $k => $v)
{
$artNr = intval($v->attributes());
foreach($v as $k1 => $v2)
{
$this->artikelArray[$artNr][$k1] = (string)$v2;
}
}
}
public function anzeigen()
{
foreach($this->artikelArray as $key => $value)
{
foreach($value as $subKey => $subVal)
{
if ($subKey == "name")
{
print "<a href=\"".$_SERVER['PHP_SELF']."?id=".$key."\">".$subVal."</a>\n";
}
else
print $subVal." Euro\n";
}
print "<br />\n";
}
}
public function waehlen($artikelnummer)
{
if(isset($this->korb[$artikelnummer]))
$this->korb[$artikelnummer]++;
else
$this->korb[$artikelnummer] = 1;
}
public function bestellen($kunde, $datei = "bestellung.xml")
{
if(!is_integer($kunde)) # Gültigen Kundennummer?
throw new Exception('Keine Kundennummer'); # Fehler ausgeben
else
{
if(count($this->korb) > 0)
{
$xml = new SimpleXMLElement("<bestellung></bestellung>");
# Attribut "kunde" schreiben
$xml->addAttribute("kunde", $kunde);
foreach($this->korb as $key => $value) # Artikel bearbeiten
{
$art = $xml->addChild("artikel"); # Neues <artikel>-Element
$art->addAttribute("name", $key);
$art->addAttribute("anzahl", $value);
}
$error = $xml->asXML($datei); # Datei schreiben.
$this->korb = array(); # Auswahl löschen.
return $error;
}
return false; # keine Artikel ausgewählt
}
}
}
?>Geändert von sheel (27.12.11 um 22:38 Uhr) Grund: Codetags
-
27.12.11 12:42 #43
- Registriert seit
- May 2006
- Ort
- There is no place like 127.0.0.1
- Beiträge
- 3.521
Habe den Fehler gefunden. Er befindet sich im Konstruktor der sitzungsSeite-Klasse:
Hier erstmal das Original:
Code php:1 2 3 4 5 6 7 8 9 10
public function __construct() { session_start(); if (!is_array(isset($_SESSION['korb']))) // Hier ist der Bug! { $_SESSION['korb'] = array(); } $this->korb = $_SESSION['korb']; }
Das Problem ist, das die if-Prüfung immer wahr zurück liefern wird, denn
- is_array() prüft, ob eine Variable bzw. ein Wert ein Array ist
- isset() gibt ein "true" zurück, wenn eine Variable nicht leer bzw. gesetzt ist, oder "false" wenn die Variable nicht exisiert oder leer ist
- demzufolge prüft laut dem Code, die is_array-Funktion, ob entweder true oder false ein Array ist, was beides mal falsch ist.
- Dadurch, das für dem is_array() ein Ausrufe-Zeichen steht, wird die Prüfung negiert, sprich man geht vom Gegenteil aus.
Wir schreiben jetzt mal in unserer Sprache, was da geprüft würde:
"Prüfe, ob der Wert von $_SESSION['korb'] nicht leer ist. Übergib das Ergebnis an 'Prüfe, ob der Wert kein Array ist'" => Das ist immer wahr!
Folglich wird der Code im Anweisungsblock immer ausgeführt, die Session-Variable wird also immer überschrieben, und damit das, was eine Seite zuvor in die Session geschrieben wurde, wieder gelöscht. Daher ist dein Warenkorb immer leer.
Die korrekte Prüfung dürfte lauten:
Code php:1 2 3 4 5 6 7 8 9 10
public function __construct() { session_start(); if (!is_array($_SESSION['korb'])) { $_SESSION['korb'] = array(); } $this->korb = $_SESSION['korb']; }
Grüße
--
Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)
-
27.12.11 20:50 #44
- Registriert seit
- Dec 2011
- Beiträge
- 4
Super - Vielen Dank
hat Prima geklappt
Gruß
Coconut-Pete
Ähnliche Themen
-
Csharp Session Management
Von StefanR im Forum .NET Web und KommunikationAntworten: 1Letzter Beitrag: 14.09.09, 11:01 -
Komplexes Session/Cookie Management
Von nullpunkt im Forum PHPAntworten: 6Letzter Beitrag: 23.04.05, 20:23 -
Problem mit Session-Management
Von Moritz123 im Forum PHPAntworten: 2Letzter Beitrag: 01.12.04, 12:57 -
tutorial workaholic session-management
Von fragemann im Forum PHPAntworten: 10Letzter Beitrag: 02.06.03, 12:56



4Danke



Zitieren

Login






[PHP][Snippet] Array zu XML konvertieren