Problem mit PHP Shop

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

Das deutet meistens darauf hin, daß du irgendwo ein { hast, aber das } fehlt. Der Parser trifft dann irgendwann auf das Ende der Datei ($) und das ist dann natürlich unerwartet.
KB:knigge
Wolfpack
Mitglied
Beiträge: 7
Registriert: 16.07.2005 16:47

Beitrag von Wolfpack »

Ich finde das fehlende } nicht.

Hier mal der Code vielleicht findet das jemand, Hoffentlich.

Code: Alles auswählen

<? 

// Includes

include ("config.php");
include ("templates.php");


// Variablen Deklaration

if (!isset($_GET['id'])) 			$_GET['id'] = "";
if (!isset($_GET['search'])) 		$_GET['search'] = "";
if (!isset($_GET['typ_d'])) 		$_GET['typ_d'] = "";
if (!isset($_POST['variante1'])) 	$_POST['variante1'] = "";
if (!isset($_POST['variante2'])) 	$_POST['variante2'] = "";
if (!isset($_POST['menge'])) 		$_POST['menge'] = "";
if (!isset($LINK)) 					$LINK = "";

$get_vars['id']						= htmlentities($_GET['id']);
$get_vars['search']					= htmlentities($_GET['search']);
$get_vars['typ_d']					= htmlentities($_GET['typ_d']);
$post_vars['variante1']				= htmlentities($_POST['variante1']);
$post_vars['variante2']				= htmlentities($_POST['variante2']);
$post_vars['menge']					= htmlentities($_POST['menge']);


// Programm-Code
			if ($get_vars['typ_d'] == "details"): header("Location: index.php?site=details&id={$get_vars['id']}&kategorie={$get_vars['kategorie']}&search={$get_vars['search']}&main_kat={$get_vars['main_kat']}&start={$get_vars['start']}&action=erfolg&nr={$get_vars['nr']}");
			elseif (!$get_vars['search']): header("Location: index.php?site=show&kategorie={$get_vars['kategorie']}&main_kat={$get_vars['main_kat']}&start={$get_vars['start']}&action=erfolg&nr={$get_vars['nr']}");
			else: header("Location: index.php?site=suche_details&search={$get_vars['search']}&start={$get_vars['start']}&action=erfolg&nr={$get_vars['nr']}");


if ($shop == "enable"){

	if ($get_vars['typ_d'] == "details"): $LINK = "index.php?site=details&id={$get_vars['id']}&kategorie={$get_vars['kategorie']}&search={$get_vars['search']}&main_kat={$get_vars['main_kat']}&start={$get_vars['start']}&action=error&nr={$get_vars['nr']}";
	elseif (!$get_vars['search']): $LINK = "index.php?site=show&kategorie={$get_vars['kategorie']}&main_kat={$get_vars['main_kat']}&start={$get_vars['start']}&action=error&menge={$post_vars['menge']}&nr={$get_vars['nr']}";
	else: $LINK = "index.php?site=suche_details&search={$get_vars['search']}&start={$get_vars['start']}&action=error&menge={$post_vars['menge']}&nr={$get_vars['nr']}";
	endif;

	if ($post_vars['menge'] == 0): header("Location: $LINK");
	elseif ($get_vars['typ_d'] != "details" AND $post_vars['variante1']): header("Location: $LINK");
	elseif ($get_vars['typ_d'] != "details" AND $post_vars['variante2']): header("Location: $LINK");

	else: 
		{

			if (!$get_vars['nr']) $get_vars['nr'] = md5(uniqid(rand()));
				
			$datum = time();
		
			$conn_id = mysql_connect($HOST,$ID,$PW);
			mysql_select_db($DB,$conn_id);
			
			$result = mysql_query("select id from ".$PREFIX."_Session where id = '{$get_vars['nr']}'");
			$check_nr = mysql_numrows($result);
			
			if ($check_nr == 0) mysql_query("insert into ".$PREFIX."_Session (id,datum) VALUES ('{$get_vars['nr']}','$datum')");
			else mysql_query("update ".$PREFIX."_Session set datum ='$datum' where id = '{$get_vars['nr']}'");
			 
			$result = mysql_query("select artikelnummer , name , preis from ".$PREFIX."_Artikel where id = '{$get_vars['id']}'"); 
			while ($row = mysql_fetch_object($result))
{


					$artikelnummer = $row->artikelnummer;
					$name  	       = $row->name;
					$preis	       = $row->preis;
					
				}
				
			$result = mysql_query("select artikelnummer from ".$PREFIX."_Warenkorb where artikelnummer = '$artikelnummer' AND nr = '{$get_vars['nr']}'");
			$check_artikel  = mysql_numrows($result);
							
			if ($check_artikel == 0) mysql_query("insert into ".$PREFIX."_Warenkorb (nr,artikelnummer,name,menge,preis,variante1,variante2) VALUES ('{$get_vars['nr']}','$artikelnummer','$name','{$post_vars['menge']}','$preis','{$post_vars['variante1']}','{$post_vars['variante2']}')"); 
			else 
				{

					$result = mysql_query("select id, menge , variante1 , variante2 from ".$PREFIX."_Warenkorb where artikelnummer = '$artikelnummer' AND nr = '{$get_vars['nr']}'");
					
					$anzahl_artikel = "";
					
					while ($row = mysql_fetch_object($result))
						{
							$variante1_wk = $row->variante1; 
							$variante2_wk = $row->variante2; 
							$menge1       = $row->menge;
							$id_artikel   = $row->id;
							
							if ($variante1_wk == $post_vars['variante1'] AND $variante2_wk == $post_vars['variante2'])
								{
								
									$menge2 = $post_vars['menge'] + $menge1;
									mysql_query("update ".$PREFIX."_Warenkorb set menge ='$menge2' where id = '$id_artikel' AND nr = '{$get_vars['nr']}'");
									$anzahl_artikel++;
									
								}	
						}

						if (!$anzahl_artikel) mysql_query("insert into ".$PREFIX."_Warenkorb (nr,artikelnummer,name,menge,preis,variante1,variante2) VALUES ('{$get_vars['nr']}','$artikelnummer','$name','{$post_vars['menge']}','$preis','{$post_vars['variante1']}','{$post_vars['variante2']}')"); 
				}
		
			$datum1 = time();
			$datum1 = $datum1 - 3600;
			
			$result = mysql_query("select id from ".$PREFIX."_Session where datum < '$datum1' order by datum");
			
			while ($row = mysql_fetch_object($result))
				{
		
					$id1    = $row->id;
					
					mysql_query("delete from ".$PREFIX."_Session where id = '$id1'");
					mysql_query("delete from ".$PREFIX."_Warenkorb where nr = '$id1'");
					
				}
				
				
			mysql_close($conn_id);
			
		}
		endif;
	}

	
else header("Location: index.php?site=shop&nr=");

?>
Benutzeravatar
D@ve
Ehemaliges Teammitglied
Beiträge: 3842
Registriert: 28.08.2002 19:33
Wohnort: Bretzfeld
Kontaktdaten:

Beitrag von D@ve »

Du erwartest doch jetzt nicht allen ernstes dass Dir hier jemand Diene Parse-Errors beseitigt.

Geheimtipp: strukturier Deinen Code anständig, dann findest Du auch Klammerfehler. Setze die Klammern vernünftig und jede in eine eigene Zeile.

Extrem Schlecht ist es überhaupt keine Klammern zu setzen

Code: Alles auswählen

if ($bla === "blubb")do_somthing($value)
Die einzeilige Variante ist aber genauso unübersichtlich:

Code: Alles auswählen

if ($bla === "blubb"){do_somthing($value)}
Auch diese unter Programmierern oft beliebte Variante ist eigentlich extrem ungünstig da man ein Klammernpaar auf den ersten Blick nicht erkennen kann:

Code: Alles auswählen

if ($bla === "blubb"){
    do_somthing($value)
}
Besser ist immer so:

Code: Alles auswählen

if ($bla === "blubb")
{
    do_somthing($value)
}
Auch wenn es sich nur um eine Zeile handelt, würde ich immer Klammern setzen. Auch solltest Du unbedingt versuchen, einheitlich einzurücken. Bei sowas, blickt nachher NIEMAND (inklusive Dir selber) mehr durch:

Code: Alles auswählen

if ($bedingung){
    .
    .
    .
    usw...
    endif;

if ($post_vars['menge'] == 0): header("Location: $LINK");
elseif ($get_vars['typ_d'] != "details" AND $post_vars['variante1']): header("Location: $LINK");
elseif ($get_vars['typ_d'] != "details" AND $post_vars['variante2']): header("Location: $LINK");

   else:
      {

         if (!$get_vars['nr']) $get_vars['nr'] = md5(uniqid(rand()));
            
         $datum = time();
      
         $conn_id = mysql_connect($HOST,$ID,$PW);
         mysql_select_db($DB,$conn_id);
         
         $result = mysql_query("select id from ".$PREFIX."_Session where id = '{$get_vars['nr']}'");
         $check_nr = mysql_numrows($result);
         
         if ($check_nr == 0) mysql_query("insert into ".$PREFIX."_Session (id,datum) VALUES ('{$get_vars['nr']}','$datum')");
         else mysql_query("update ".$PREFIX."_Session set datum ='$datum' where id = '{$get_vars['nr']}'");
         
         $result = mysql_query("select artikelnummer , name , preis from ".$PREFIX."_Artikel where id = '{$get_vars['id']}'");
         while ($row = mysql_fetch_object($result))
{


               $artikelnummer = $row->artikelnummer;
               $name            = $row->name;
               $preis          = $row->preis;
               
            }
Achja: Wenn Du schon mit "endif" arbeitest (was ich persönlich für unsinnig erachte, weil es einfach ungebräuchlich und unübersichtlich ist) dann mach es wenigstens konsequent und nicht mal so und mal so...

Geh mal den Code Zeile für Zeile durch und strukturier den nach den obigen Tipps. Ich wette wenn Du durch bist hast Du den Fehler von ganz alleine gefunden.

Gruß, Dave

PS: Bitte in Zukunft den phpBB.de Knigge beachten und keine derart langen Quelltexte posten - danke
There are only 10 types of people in the world: Those who understand binary, and those who don't
Antworten

Zurück zu „Coding & Technik“