Problem mit Onlineshop

free123

Mitglied
Hallo alle zusammen. Nach längerem Warten bin ich wieder mal hier gelandet.
Ich habe da mal eine Frage an euch bezüglich eines Onlineshops undzwar habe ich da etwas
im Net gefunden und würde es gerne auf die aktuelle Version schreiben. Vorgänger Version war php 4.2.0 . Die Register Globals müssen auf On sein, damit das Script funktioniert
es soll aber auch Off fähig gemacht werden. Die Variabelen müssen also angepasst werden. Wer hat Interesse mir dabei behilflich zu sein da ich selber noch etwas unerfahren bin.

Der Shop funktioniert soweit. Gebe ich jedoch
PHP:
error_reporting(E_ALL);
direkt am Anfang aus geht es schon los
PHP:
Notice: Undefined variable: type in C:\Programme\xampp\htdocs\shoptest\index.php on line 37

Hier mal der Ausschnitt aus der Datei
PHP:
// Je nach Type und Aktion verschiedene Funktionen aufrufen
switch($type)
{
 case "warenkorb": switch($action)

Also ergänze ich das ganze so ?
PHP:
switch($_REQUEST['type'])

Hier mal die komplette index.php
PHP:
<?php    error_reporting(E_ALL);

// Klassen einbinden
require("inc/mysql.inc.php");
require("inc/shop.inc.php");
require("inc/template.inc.php");
require("inc/warenkorb.inc.php");

// MySQL Konfiguration einbinden
include("config/mysql.conf.php");

// Session starten und Session-Id speichern
session_start();
$uin = session_id();

// Klassen zuordnen und festlegen
$datenbank = new datenbank();
$shop = new shop();
$template = new template();
$warenkorb = new warenkorb();

// Verbindung herstellen und Datenbank auswählen
$datenbank->mysql_verbindung = $datenbank->connectServer($dbhost,$dbuser,$dbpwd);
$datenbank->mysql_datenbank = $datenbank->selectDatabase($dbname);

// Template aus Datei einlesen
$template->template = file_get_contents("templates/standart.tpl");

// MySQL-Verbindung in den Klassen einbinden
$shop->mysql_verbindung = $datenbank->mysql_verbindung;
$template->mysql_verbindung = $datenbank->mysql_verbindung;
$warenkorb->mysql_verbindung = $datenbank->mysql_verbindung;

// Je nach Type und Aktion verschiedene Funktionen aufrufen
switch($type)
{
 case "warenkorb": switch($action)
                   {
                    // Artikel in Warenkorb legen
                    case "add":   $content_temp = $template->parseContent($warenkorb->addItem($uin,$id,$anz));
                                  break;
                    // Warenkorb anzeigen
                    case "show":  $content_temp = $template->parseContent($warenkorb->showItems($uin));
                                  break;
                    // Warenkorb leeren
                    case "empty": $content_temp = $template->parseContent($warenkorb->flushItems($uin));
                                  break;
                    // Warenkorb bestellen
                    case "order": $content_temp = $template->parseContent($warenkorb->orderItems($step,$uin,$name,$strasse,$plzort,$email,$agbs));
                                  break;
                   }
                   break;
 default:          switch($action)
                   {
                    // Such-Routine aufrufen
                    case "suche":   $content_temp = $template->parseContent($shop->search_article($step,$name));
                                    break;
                    // Angebot anzeigen
                    case "special": $content_temp = $template->parseContent($shop->show_specials());
                                    break;
                    // Startseite anzeigen
                    default:        $content_temp = $template->parseContent($shop->createPage($action,$id));
                                    break;
                   }
}
// Template erzeugen und ausgeben
$content = $template->parseNavigation($content_temp);
echo $content;
?>

Wer kann hier weiterhelfen bsw hat Lust und Interesse daran?

Wäre echt Klasse wenn jemand helfen könnte

Vielen Dank gruss tobi
 
Wo definierst du $type
type benötigt einen wert.

Die Fehlermeldung sagt eh schon das $type nicht definiert ist/wurde.

Also ergänze ich das ganze so ?
PHP:
switch($_REQUEST['type'])
Nicht ergänzen sondern ersetzen.

Oder:
$type = $_REQUEST['type'];

Ist auch eine möglichkeit.
mfg
 
Zuletzt bearbeitet:
Hallo vielen Dank für die Antwort.

Wollte bereits gestern schon Antworten jedoch war die Seite nicht erreichbar.

Wie aber kann ich das ganze im Code realiesieren? Kann jemand ein Beispiel dazu geben?

Ich habs mal so probiert?
PHP:
<?php          error_reporting(E_ALL);

// Klassen einbinden
require("inc/mysql.inc.php");
require("inc/shop.inc.php");
require("inc/template.inc.php");
require("inc/warenkorb.inc.php");

// MySQL Konfiguration einbinden
include("config/mysql.conf.php");

// Session starten und Session-Id speichern
session_start();
$uin = session_id();

// Klassen zuordnen und festlegen
$datenbank = new datenbank();
$shop = new shop();
$template = new template();
$warenkorb = new warenkorb();

// Verbindung herstellen und Datenbank auswählen
$datenbank->mysql_verbindung = $datenbank->connectServer($dbhost,$dbuser,$dbpwd);
$datenbank->mysql_datenbank = $datenbank->selectDatabase($dbname);

// Template aus Datei einlesen
$template->template = file_get_contents("templates/standart.tpl");

// MySQL-Verbindung in den Klassen einbinden
$shop->mysql_verbindung = $datenbank->mysql_verbindung;
$template->mysql_verbindung = $datenbank->mysql_verbindung;
$warenkorb->mysql_verbindung = $datenbank->mysql_verbindung;

// Je nach Type und Aktion verschiedene Funktionen aufrufen
if (isset($_REQUEST['type']) && ($_REQUEST['action'])){
switch($_POST['type'])
{
 case "warenkorb": switch($_POST['action'])
                   {
                    // Artikel in Warenkorb legen
                    case "add":   $content_temp = $template->parseContent($warenkorb->addItem($uin,$id,$anz));
                                  break;
                    // Warenkorb anzeigen
                    case "show":  $content_temp = $template->parseContent($warenkorb->showItems($uin));
                                  break;
                    // Warenkorb leeren
                    case "empty": $content_temp = $template->parseContent($warenkorb->flushItems($uin));
                                  break;
                    // Warenkorb bestellen
                    case "order": $content_temp = $template->parseContent($warenkorb->orderItems($step,$uin,$name,$strasse,$plzort,$email,$agbs));
                                  break;
                   }
                   break;
 default:          switch($_POST['action'])
                   {
                    // Such-Routine aufrufen
                    case "suche":   $content_temp = $template->parseContent($shop->search_article($step,$name));
                                    break;
                    // Angebot anzeigen
                    case "special": $content_temp = $template->parseContent($shop->show_specials());
                                    break;
                    // Startseite anzeigen
                    default:        $content_temp = $template->parseContent($shop->createPage($action,$id));
                                    break;
                   } }
}
// Template erzeugen und ausgeben
$content = $template->parseNavigation($content_temp);
echo $content;
?>

Vielen Dank für die mithilfe
 
Nein er meinte es so:

PHP:
<?php
error_reporting(E_ALL);

// Klassen einbinden
require("inc/mysql.inc.php");
require("inc/shop.inc.php");
require("inc/template.inc.php");
require("inc/warenkorb.inc.php");

// MySQL Konfiguration einbinden
include("config/mysql.conf.php");

// Session starten und Session-Id speichern
session_start();
$uin = session_id();

// Klassen zuordnen und festlegen
$datenbank = new datenbank();
$shop = new shop();
$template = new template();
$warenkorb = new warenkorb();

// Verbindung herstellen und Datenbank auswählen
$datenbank->mysql_verbindung = $datenbank->connectServer($dbhost,$dbuser,$dbpwd);
$datenbank->mysql_datenbank = $datenbank->selectDatabase($dbname);

// Template aus Datei einlesen
$template->template = file_get_contents("templates/standart.tpl");

// MySQL-Verbindung in den Klassen einbinden
$shop->mysql_verbindung = $datenbank->mysql_verbindung;
$template->mysql_verbindung = $datenbank->mysql_verbindung;
$warenkorb->mysql_verbindung = $datenbank->mysql_verbindung;

// Je nach Type und Aktion verschiedene Funktionen aufrufen
$type = $_REQUEST['type'];

switch($type)
{
 case "warenkorb": switch($action)
                   {
                    // Artikel in Warenkorb legen
                    case "add":   $content_temp = $template->parseContent($warenkorb->addItem($uin,$id,$anz));
                                  break;
                    // Warenkorb anzeigen
                    case "show":  $content_temp = $template->parseContent($warenkorb->showItems($uin));
                                  break;
                    // Warenkorb leeren
                    case "empty": $content_temp = $template->parseContent($warenkorb->flushItems($uin));
                                  break;
                    // Warenkorb bestellen
                    case "order": $content_temp = $template->parseContent($warenkorb->orderItems($step,$uin,$name,$strasse,$plzort,$email,$agbs));
                                  break;
                   }
                   break;
 default:          switch($action)
                   {
                    // Such-Routine aufrufen
                    case "suche":   $content_temp = $template->parseContent($shop->search_article($step,$name));
                                    break;
                    // Angebot anzeigen
                    case "special": $content_temp = $template->parseContent($shop->show_specials());
                                    break;
                    // Startseite anzeigen
                    default:        $content_temp = $template->parseContent($shop->createPage($action,$id));
                                    break;
                   }
}
// Template erzeugen und ausgeben
$content = $template->parseNavigation($content_temp);
echo $content;
?>
 
So könntest du $type auch so abfragen:
PHP:
$type = ( !empty($_REQUEST['type']) AND isset ($_REQUEST['type']) ) ? $_REQUEST['type'] : "";
 
Vielen dank für die schnelle Antwort.

Führe ich dieses Verfahren so aus wie beschrieben erscheinen
folgende Fehlermeldungen

PHP:
Notice: Undefined index: type in C:\Programme\xampp\htdocs\\shop\index.php on line 36

Notice: Undefined variable: action in C:\Programme\xampp\htdocs\shop\index.php on line 59

Notice: Undefined variable: action in C:\Programme\xampp\htdocs\shop\index.php on line 62

Notice: Undefined variable: action in C:\Programme\xampp\htdocs\shop\index.php on line 65

Notice: Undefined variable: id in C:\Programme\xampp\htdocs\shop\index.php on line 65
 
Und so:
PHP:
$type = ( !empty($_REQUEST['type']) AND isset ($_REQUEST['type']) ) ? $_REQUEST['type'] : ""; 
$action = ( !empty($_REQUEST['action']) AND isset ($_REQUEST['action']) ) ? $_REQUEST['type'] : ""; 
$id = ( !empty($_REQUEST['id']) AND isset ($_REQUEST['id']) ) ? $_REQUEST['id'] : "";
?
 
Besten Dank euch allen zusammen das hat geklappt.
Die Fehlermeldungen in der index.php datei sind behoben.
Kann das Script nur mit Reg=On starten auf Off funktioniert das irgentwie noch nicht so ganz.

Starte ich die index.php zeigt er mir an das noch fehler vorhanden sind.
PHP:
Notice: Use of undefined constant is_sub - assumed 'is_sub' in C:\Programme\xampp\htdocs\shop\inc\template.inc.php on line 21

Notice: Use of undefined constant id - assumed 'id' in C:\Programme\xampp\htdocs\shop\inc\template.inc.php on line 27

Notice: Use of undefined constant titel - assumed 'titel' in C:\Programme\xampp\htdocs\shop\inc\template.inc.php on line 27

Notice: Undefined variable: kategorien in C:\Programme\xampp\htdocs\shop\inc\template.inc.php on line 27

Hier die datei template.inc.php

PHP:
<?php

// Template Klasse
 class template
 {
  var $template;
  var $mysql_verbindung;

  // Inhalt eingeben
  function parseContent($content)
  {
   return str_replace("[#infotext#]",$content,$this->template);
  }

  // Navigation erzeugen und eingeben
  function parseNavigation($content)
  {
    $mysql_query = mysql_query("SELECT * FROM pwh_categories", $this->mysql_verbindung);
    while($row=mysql_fetch_array($mysql_query))
    {
     if($row[is_sub] == 1)
     {
      $pre = "&nbsp;";
     } else {
      $pre = "&nbsp;";
     }
     $kategorien .= $pre . "<a href=\"index.php?id=" . $row[id] . "&type=shop&action=browse_cat\">" . $row[titel] . "</a><br>";
    }

    return str_replace("[#kategorien#]",$kategorien,$content);
  }
 }

?>
 
Schreib mal anstatt
PHP:
$row[is_sub]
PHP:
$row['is_sub']
PHP denkt is_sub ist eine Konstante. Aber kann sie nicht finden.
 
Zurück