2010-06-25 16 views
5

Ich habe ein kleines Problem. Ich greife auf die Seite durch foro.php? Id = 74 & mode = hinzufügen oder foro.php? Id = 74 & mode = bearbeiten es funktioniert gut .. Aber wenn ich einen Doppelpunkt hinzufügen, Semikolon (; oder :) foro.php ? id = 74 & modus = hinzufügen geht es zur BearbeitungsoptionProblem in einem PHP wenn Bedingung

foro.php? id = 74 & mode = add; ?
foro.php id = 74 & mode = hinzufügen:
foro.php id = 74 & mode = add‘

Unten ist mein Code

<?php 
$numb=mysql_real_escape_string($_GET['id']); 

    if ($_GET['mode']=='add') { 

    $sql1="select * from cello where number='".mysql_real_escape_string($numb)."' LIMIT 1"; 
    $result1=mysql_query($sql1) or die(mysql_error()); 
    while ($row=mysql_fetch_array($result1)) { 

     $name=$row['name']; 
     echo $name; 
    } 
    } 


elseif ($_GET['mode']='edit') { 

$sql="select * from cello account_number='".mysql_real_escape_string($numb)."' limit 1"; 
$result=mysql_query($sql) or die(mysql_error()); 

    while ($row=mysql_fetch_array($result)) { 

$acnumb=$row['number']; 
$name=$row['name']; 
$address=$row['address']; 

echo $acnumb; 
echo $name; 
echo $address; 

    } 
    } 
else {echo "error!!";} 
    ?> 

Jede Art und Weise, wie es zu verhindern ?

Antwort

8

Sie haben den Zuweisungsoperator = anstelle des Gleichheitsoperators == verwendet.

Versuchen Sie, diese:

elseif ($_GET['mode']='edit') { 

dazu:

elseif ($_GET['mode']=='edit') { 
+0

Dank .. es funktioniert gut – LiveEn

5

Das Problem ist, dass in den folgenden Zeilen in der if-Anweisung, Sie sind nicht zu vergleichen, aber Wert auf die Zuweisung von mode-Element im GET-Array:

Dieser Vorgang gibt True zurück, der erste Vergleich ist falsch, und deshalb geht es in den Schnittbereich.

5

Lösung:

Das Problem liegt auf jeden Fall mit der elseif ($_GET['mode']='edit') { Linie; der Operator = dort setzt $_GET['mode'] auf 'edit' (was immer true auswertet). Eine gute, aber lexikalisch-verwirrende Praxis in erhalten schreibt conditionals wie so:

if (5 == $some_var) 

, die sofort einen Fehler geben, wenn die zweiten = nicht enthalten war.

Vorschlag:

Sie können eine switch Steuerung zu implementieren, Ihren Code zu organisieren:

<?php 
switch ($_GET['mode']) { 
    case 'add': 

     $sql1="select * from cello where number='".mysql_real_escape_string($numb)."' LIMIT 1"; 
     $result1=mysql_query($sql1) or die(mysql_error()); 
     while ($row=mysql_fetch_array($result1)) { 

      $name=$row['name']; 
      echo $name; 
     } 

     break; 

    case 'edit': 
     $sql="select * from cello account_number='".mysql_real_escape_string($numb)."' limit 1"; 
     $result=mysql_query($sql) or die(mysql_error()); 

     while ($row=mysql_fetch_array($result)) { 

      $acnumb=$row['number']; 
      $name=$row['name']; 
      $address=$row['address']; 

      echo $acnumb; 
      echo $name; 
      echo $address; 

     } 

     break; 

    default: 
     echo "error!!"; 
} 
+0

Danke für die Anregung .. Ich hätte nicht gedacht, von es früher – LiveEn