[MySQL] Update Problem

traffic

Well-known member
5 Mai 2006
675
25
Hallo,

habe ein Mysql-Problem. Laße eine Mysqlspalte so Updaten:

PHP:
if($menu!="" AND $menu2!="" AND $menu3==""){
echo"hallo3 $menu $menu2 $menu3";
mysql_query("UPDATE user SET haupt='$menu', k2='$menu2', k3='$menu3' WHERE zahl=$zahl");
}

geupdatet wird aber:
Haupt: 0
k2:
k3:

obwol er bei oben ausgibt:
"hallo3 49 17 ";


Die Seitenadresse ist: ?main=artikelliste&menu=49&menu2=17&menu3=
wenn ich ?main=kategorie&etc. mache dann gehts...warum auch immer...

Hat jemand eine Idee?

Danke
 
Habe nun diesen Code eingebaut zur Überprüfung:

PHP:
        if (empty($menu)) {
        echo '$menu ist 0, nicht mit einem Wert belegt, oder nicht gesetzt';
        }
        if (isset($menu)) {
        echo '$menu ist gesetzt, enthält aber keinen Wert';
        }

Ausgabe:
$menu ist gesetzt, enthält aber keinen Wert

aber bei echo"$menu"; gibt er einen Wert aus. Wie weiße ich denn nun der variablen $menu einen "richtigen" Wert zu?
 
ist $zahl überhaupt gesetzt?

ja!

habe nun das Problem bisschen verändert!
$menu wird nun gar nicht mehr gesetzt

PHP:
if($menu!="" AND $menu2=="" AND $menu3==""){

      $menuzahl= mysql_query("SELECT count(id) FROM auto_user WHERE zahl=$zahl");
      $menuzahl1= mysql_fetch_array($menuzahl);
      if($menuzahl1[0]>=1){

      mysql_query("UPDATE auto_user SET haupt='$menu', k2='$menu2', k3='$menu3' WHERE zahl=$zahl");
      }}

da updatet er! Obwohl alle menu-variablen nicht gesetzt sind
wenn ich in diesem bereich ein echo einsetze wird dieses auch nciht ausgeben,
aber geupdatet wird.... :(
 
PHP:
$zahl = $_COOKIE["warenkorb"];

      if($menu2=="0"){

      mysql_query("UPDATE auto_user SET k2='0' WHERE zahl=$zahl");
      }

      if($menu!="" AND $menu2=="" AND $menu3==""){

      $menuzahl= mysql_query("SELECT count(id) FROM auto_user WHERE zahl=$zahl");
      $menuzahl1= mysql_fetch_array($menuzahl);
      if(($menuzahl1[0]>=1) AND ($menu!="" AND $menu2=="" AND $menu3=="")){

      mysql_query("UPDATE auto_user SET haupt='$menu', k2='$menu2', k3='$menu3' WHERE zahl=$zahl");
      }else{
      $datum = time();
      mysql_query("INSERT INTO auto_user (zahl, haupt, datum) VALUES ($zahl, '$menu', '$datum')");
      }

      }elseif($menu!="" AND $menu2!="" AND $menu3==""){
      echo"hallo3 $menu $menu2 $menu3";

      mysql_query("UPDATE auto_user SET haupt='$menu', k2='$menu2', k3='$menu3' WHERE zahl=$zahl");
      }elseif($menu!="" AND $menu2!="" AND $menu3!=""){

      mysql_query("UPDATE auto_user SET haupt='$menu', k2='$menu2', k3='$menu3' WHERE zahl=$zahl");
      }elseif($menu=="0" AND $menu!="" AND $menu2==""){

      $menuzahl= mysql_query("SELECT count(id) FROM auto_user WHERE zahl=$zahl");
      $menuzahl1= mysql_fetch_array($menuzahl);
      if($menuzahl1[0]>=1){

      mysql_query("UPDATE auto_user SET haupt='$menu', k2='$menu2', k3='$menu3' WHERE zahl=$zahl");
      }

      if($menu2=="0"){

      mysql_query("UPDATE auto_user SET k2='$menu2' WHERE zahl=$zahl");
      }else{

      $datum = time();
      mysql_query("INSERT INTO auto_user (zahl, haupt, datum) VALUES ($zahl, '$menu', '$datum')");
      }
      }

dort wird das menü geregelt, also auf oder zu...

und so kommt der User da hin:
index.php?main=artikelliste&typ=1341&kat=24&hersteller=13

die ganze Seite index.php
besteht aus include-dateien....was ich hier auf gelistet habe ist menu.php
nirgendwo anders wird sonst $menu benutzt
 
Check nochmal dir einzelnen Bedinungungen kann sein das ich bei denen was verwechselt habe.
PHP:
$zahl = $_COOKIE["warenkorb"];		//sollte escapet und verifiziert werden
extract($_GET, EXTR_PREFIX_SAME, 'foo');		//register_globals wie schon so oft geschrieben unsicher

		if(isset($menu2) && $menu2== 0)
			mysql_query("UPDATE auto_user SET k2=0 WHERE zahl=".$zahl);

		if(isset($menu) && !empty($menu)
			&& isset($menu2) && empty($menu2)
			&& isset($menu3) && empty($menu3))
		{

			$menuzahl= mysql_query("SELECT count(id) FROM auto_user WHERE zahl=".$zahl);
			$menuzahl1= mysql_fetch_array($menuzahl);
			if($menuzahl1[0] >= 1)
				mysql_query("UPDATE auto_user SET haupt='".$menu."', k2='".$menu2."', k3='".$menu3."' WHERE zahl=".$zahl);
			else
				mysql_query("INSERT INTO auto_user (zahl, haupt, datum) VALUES (".$zahl.", '".$menu."', ".time().")");

		}
		elseif(isset($menu) && !empty($menu)
				&& isset($menu2) && !empty($menu2)
				&& isset($menu3) && empty($menu3))
		{
			echo"hallo3 ".$menu." ".$menu2." ".$menu3;

			mysql_query("UPDATE auto_user SET haupt='$menu', k2='$menu2', k3='$menu3' WHERE zahl=$zahl");
		}
		elseif(isset($menu) && !empty($menu)
				&& isset($menu2) && !empty($menu2)
				&& isset($menu3) && !empty($menu3))
		{
			mysql_query("UPDATE auto_user SET haupt='$menu', k2='$menu2', k3='$menu3' WHERE zahl=$zahl");
		}
		elseif(isset($menu) && $menu == 0
				&& isset($menu2) && empty($menu2))
		{
			$menuzahl= mysql_query("SELECT count(id) FROM auto_user WHERE zahl=".$zahl);
			$menuzahl1= mysql_fetch_array($menuzahl);
			if($menuzahl1[0] >= 1)
				mysql_query("UPDATE auto_user SET haupt='".$menu."', k2='".$menu2."', k3='".$menu3."' WHERE zahl=".$zahl);

			if(isset($menu2) $$ $menu2 == 0)
				mysql_query("UPDATE auto_user SET k2='$menu2' WHERE zahl=".$zahl);
			else
				mysql_query("INSERT INTO auto_user (zahl, haupt, datum) VALUES (".$zahl.", '".$menu."', ".time().")");
		}
 
Zuletzt bearbeitet:
probier mal den und schick die Ausgaben
PHP:
<?php
if(isset($_COOKIE['warenkorb']) && !empty($_COOKIE['warenkorb']))
	$zahl = $_COOKIE["warenkorb"];        //sollte escapet und verifiziert werden

#### debugg ###### SPÄTER WIEDER LÖSCHEN
var_dump($_COOKIE['warenkorb']);
echo "<br /><br /><pre>";
print_r($_COOKIE);
echo "</pre>";
#### debugg end ####

extract($_GET, EXTR_PREFIX_SAME, 'foo');        //register_globals wie schon so oft geschrieben unsicher

        if(isset($_GET['menu2']) && $_GET['menu2']== 0)
            mysql_query("UPDATE auto_user SET k2=0 WHERE zahl=".$zahl);

        if(isset($_GET['menu']) && !empty($_GET['menu'])
            && isset($_GET['menu2']) && empty($_GET['menu2'])
            && isset($_GET['menu3']) && empty($_GET['menu3']))
        {

            $menuzahl= mysql_query("SELECT count(id) FROM auto_user WHERE zahl=".$zahl);
            $menuzahl1= mysql_fetch_array($menuzahl);
            if($menuzahl1[0] >= 1)
                mysql_query("UPDATE auto_user SET haupt='".$_GET['menu']."', k2='".$_GET['menu2']."', k3='".$_GET['menu3']."' WHERE zahl=".$zahl);
            else
                mysql_query("INSERT INTO auto_user (zahl, haupt, datum) VALUES (".$zahl.", '".$_GET['menu']."', ".time().")");

        }
        elseif(isset($_GET['menu']) && !empty($_GET['menu'])
                && isset($_GET['menu2']) && !empty($_GET['menu2'])
                && isset($_GET['menu3']) && empty($_GET['menu3']))
        {
            echo"hallo3 ".$_GET['menu']." ".$_GET['menu2']." ".$_GET['menu3'];

            mysql_query("UPDATE auto_user SET haupt='$_GET['menu']', k2='$_GET['menu2']', k3='$_GET['menu3']' WHERE zahl=$zahl");
				echo mysql_error();		//später wieder löschen
        }
        elseif(isset($_GET['menu']) && !empty($_GET['menu'])
                && isset($_GET['menu2']) && !empty($_GET['menu2'])
                && isset($_GET['menu3']) && !empty($_GET['menu3']))
        {
            mysql_query("UPDATE auto_user SET haupt='$_GET['menu']', k2='$_GET['menu2']', k3='$_GET['menu3']' WHERE zahl=$zahl");
        }
        elseif(isset($_GET['menu']) && $_GET['menu'] == 0
                && isset($_GET['menu2']) && empty($_GET['menu2']))
        {
            $menuzahl= mysql_query("SELECT count(id) FROM auto_user WHERE zahl=".$zahl);
            $menuzahl1= mysql_fetch_array($menuzahl);
            if($menuzahl1[0] >= 1)
                mysql_query("UPDATE auto_user SET haupt='".$_GET['menu']."', k2='".$_GET['menu2']."', k3='".$_GET['menu3']."' WHERE zahl=".$zahl);

            if(isset($_GET['menu2']) $$ $_GET['menu2'] == 0)
                mysql_query("UPDATE auto_user SET k2='$_GET['menu2']' WHERE zahl=".$zahl);
            else
                mysql_query("INSERT INTO auto_user (zahl, haupt, datum) VALUES (".$zahl.", '".$_GET['menu']."', ".time().")");
        }
?>
 
PHP:
 mysql_query("UPDATE auto_user SET haupt='$_GET['menu']', k2='$_GET['menu2']', k3='$_GET['menu3']' WHERE zahl=$zahl");
Fehler in der Zeile

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /is/htdocs/wp1019591_H488WBOVLP/www/autolager/test/include/menu.php on line 61