Problème script PHP /!\

Bonjour, voici mon script :
<?
if ($combat = "$_POST['Attaque']"){
$comatk = "4";
$comdef = "1";
$comvit = "1";
$comtch = "1";
}
elseif ($combat = "$_POST['Défense']"){
$comatk = "1";
$comdef = "4";
$comvit = "1";
$comtch = "1";
}
elseif ($combat = "$_POST['Vitesse']"){
$comatk = "1";
$comdef = "1";
$comvit = "4";
$comtch = "1";
}
else {
$comatk = "1";
$comdef = "1";
$comvit = "1";
$comtch = "4";
}
?>


( C'est pour un jeu en ligne )

Et ca me met :

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /mnt/140/sdc/f/4/0v5/traitement.php on line 2


Quel est le problème, svp ?
Configuration: Mac OS X
Firefox 2.0.0.11

6 réponses

  1. Salut.
    Ne met pas :
    if ($combat = "$_POST['Attaque']"){

    Préfère :
    if ($combat = $_POST['Attaque']){


    De plus pour faire un test on utilise le double égal (là tu assigne une variable)
    donc :
    if ($combat == $_POST['Attaque']){
    1. Bonjour,

      si je peux me permettre, déja à première vue des erreurs:

      <?
      if ($combat = "$_POST['Attaque']"){


      mets <?php au lieu de <?

      et ta condition if sera toujours vraie, pour comparer si égal dans un if il faut mettre ==

      et ne mets pas les " car dans ce cas, tu compares avec la chaine "$_POST['Attaque']" et pas avec la variable $_POST['Attaque']

      =>

      <?php
      if ($combat == $_POST['Attaque']){
      
      


      ensuite d'où vient $combat ?

      une autre solution mieux avec less witch case

      $combat=$_POST['action'];// si c'est le nom du champ qui t'envoi le type de combat
      switch($combat){
      	case "Attaque":
      		$comatk = "4";
      		$comdef = "1";
      		$comvit = "1";
      		$comtch = "1";
      	break;
      	case"Défense":
      		$comatk = "1";
      		$comdef = "4";
      		$comvit = "1";
      		$comtch = "1";
      	break;
      	case "Vitesse":
      		$comatk = "1";
      		$comdef = "1";
      		$comvit = "4";
      		$comtch = "1";
      	break;
      	default:
      		$comatk = "1";
      		$comdef = "1";
      		$comvit = "1";
      		$comtch = "4";
      	break;
      }
      
      1. Il a raison, les <?php et ?> sont préférables car certains serveurs ne reconaissent pas les balises rapide <? et ?> donc n'éxécutent pas le php et tout le monde voit ton code !

        c'est vrai que $combat est pas définit mais ce fichier peut être un include.
        1. Bonjour,

          essayes plutôt comme ça avec des " au debut et fin au lieu des ' (perso je préfère)

          $sql = "INSERT INTO Users 
          VALUES('".mysql_escape_string($_POST['pseudo'])."','".mysql_escape_string($_POST['pass'])."','".mysql_escape_string($_POST['email'])."','".mysql_escape_string($_POST['nom'])."','".mysql_escape_string($_POST['desc'])."','".mysql_escape_string($_POST['magie'])."','".mysql_escape_string($_POST['co
          mbat'])."','50','100','".$comatk."','".$comdef."','".$comvit."','".$comtch."')";