[RESOLU] alternative à un ELSE seul?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] alternative à un ELSE seul?

Re: alternative à un ELSE seul?

par nestor94 » 29 avr. 2021, 09:16

Ah oui ! C'est OK. Sinon, il y avait aussi la possibilité de remplacer par un switch.

Re: alternative à un ELSE seul?

par Shadowwera » 29 avr. 2021, 08:36

Salut !

C'est normal tu doit mettre une condition dans le else if() comme je le l'es indiqué en commentaire "//Quel condition pour que ceci s'éxecute ?"

Car dans ton code initial, tu avais quelque chose qui s'exécute dans ton if, puis quelque chose qui s'exécute sans condition, puis ton else

Donc pense a mettre une condition de cette manière :
if ($contenu_contenant !== '/objets/rien.gif') { // Si ta condition est respecté alors ça te redirige vers erreur_contenu.html
header('Location:erreur_contenu.html');
} elseif($autreCondition) {  // Sinon si cette condition est respecté alors le code ce-dessous s'éxécute et te redirige vers page_membre.php
$sql = "SELECT HAB FROM membres WHERE id=:id";
$pdostat = $bdd->prepare($sql);
$pdostat->bindvalue(':id',$id ,PDO::PARAM_INT);
$pdostat->execute();
$resultat = $pdostat->fetch();    
$HAB = $resultat['HAB'];
$pdostat = $bdd->prepare("UPDATE membres SET  bla bla bla  WHERE id =:id");
$pdostat->bindvalue(':id',$id ,PDO::PARAM_INT);
$pdostat->execute();
$pdostat =  $bdd->prepare("UPDATE map INNER JOIN membres ON membres.pos_x = map.pos_x AND membres.pos_y = map.pos_y SET bla bla bla WHERE membres.id= $id");
$pdostat->execute();
header ('Location:page_membre.php');
} else { // Sinon c'est ceci qui s'éxécute
header('Location:blablacar.php');
}

Re: alternative à un ELSE seul?

par nestor94 » 28 avr. 2021, 18:22

Il n'apprécie pas la parenthèse ouvrante et fermante du elseif?
Parse error: syntax error, unexpected ')' in C:\wamp64\w..
Si je la vire, il rale sur l'accolade au meme endroit :?
$sql = "SELECT contenu_contenant FROM membres WHERE id=:id";
$pdostat = $bdd->prepare($sql);
$pdostat->bindvalue(':id',$id ,PDO::PARAM_INT);
$pdostat->execute();
$resultat = $pdostat->fetch(); 
$contenu_contenant = $resultat['contenu_contenant'];
if ($contenu_contenant !== '/objets/rien.gif')
	{
header('Location:erreur_contenu.html');
} 
elseif() { 
$sql = "SELECT HAB FROM membres WHERE id=:id";
$pdostat = $bdd->prepare($sql);
$pdostat->bindvalue(':id',$id ,PDO::PARAM_INT);
$pdostat->execute();
$resultat = $pdostat->fetch();    
$HAB = $resultat['HAB'];
$pdostat = $bdd->prepare("UPDATE membres SET  contenu_contenant = '/objets/herbe.gif', qte_contenant= qte_contenant+5+$HAB,
info= 'VOUS AVEZ RÉCOLTÉ HERBE', usure_objet1= usure_objet1+1, PA= PA-1, HAB= HAB+1, EXP= EXP+1 WHERE id =:id");
$pdostat->bindvalue(':id',$id ,PDO::PARAM_INT);
$pdostat->execute();
$pdostat =  $bdd->prepare("UPDATE map INNER JOIN membres ON membres.pos_x = map.pos_x AND membres.pos_y = map.pos_y
SET map.qte_ressource = map.qte_ressource-5 WHERE membres.id= $id");
$pdostat->execute();
header ('Location:page_membre.php');
} else {
header('Location:recolter_herbe2.php');
}
?>


Re: alternative à un ELSE seul?

par Shadowwera » 28 avr. 2021, 17:01

Salut !

Il y a un soucis avec ton else car il doit suivre directement un if ou else if, comme ceci :
if($contenu_contenant !== '/objets/rien.gif') {
  //Do-something
} else {
  //Do-something
}
Modifie donc ton code en quelque chose dans ce genre la :
if ($contenu_contenant !== '/objets/rien.gif') {
header('Location:erreur_contenu.html');
} elseif() { //Quel condition pour que ceci s'éxecute ?
$sql = "SELECT HAB FROM membres WHERE id=:id";
$pdostat = $bdd->prepare($sql);
$pdostat->bindvalue(':id',$id ,PDO::PARAM_INT);
$pdostat->execute();
$resultat = $pdostat->fetch();    
$HAB = $resultat['HAB'];
$pdostat = $bdd->prepare("UPDATE membres SET  bla bla bla  WHERE id =:id");
$pdostat->bindvalue(':id',$id ,PDO::PARAM_INT);
$pdostat->execute();
$pdostat =  $bdd->prepare("UPDATE map INNER JOIN membres ON membres.pos_x = map.pos_x AND membres.pos_y = map.pos_y SET bla bla bla WHERE membres.id= $id");
$pdostat->execute();
header ('Location:page_membre.php');
} else {
header('Location:blablacar.php');
}

alternative à un ELSE seul?

par nestor94 » 28 avr. 2021, 16:53

Bonjour,
Le bout de script suivant fonctionne que si les conditions sont respectées. Mais si elles ne sont pas OK, , la dernière redirection ne se fait pas..
(Parse error: syntax error, unexpected 'else' (T_ELSE), expecting end of file in C...)
Y -aurait-il un moyen de contourner cela ou de penser le script autrement?
<?php
session_start();
require_once 'config.php';
$id = !empty($_SESSION['id']) ? $_SESSION['id'] : NULL;
$sql = "SELECT contenu_contenant FROM membres WHERE id=:id";
$pdostat = $bdd->prepare($sql);
$pdostat->bindvalue(':id',$id ,PDO::PARAM_INT);
$pdostat->execute();
$resultat = $pdostat->fetch(); 
$contenu_contenant = $resultat['contenu_contenant'];
if ($contenu_contenant !== '/objets/rien.gif')
{
header('Location:erreur_contenu.html');
}
$sql = "SELECT HAB FROM membres WHERE id=:id";
$pdostat = $bdd->prepare($sql);
$pdostat->bindvalue(':id',$id ,PDO::PARAM_INT);
$pdostat->execute();
$resultat = $pdostat->fetch();    
$HAB = $resultat['HAB'];
$pdostat = $bdd->prepare("UPDATE membres SET  bla bla bla  WHERE id =:id");
$pdostat->bindvalue(':id',$id ,PDO::PARAM_INT);
$pdostat->execute();
$pdostat =  $bdd->prepare("UPDATE map INNER JOIN membres ON membres.pos_x = map.pos_x AND membres.pos_y = map.pos_y SET bla bla bla WHERE membres.id= $id");
$pdostat->execute();
header ('Location:page_membre.php');
else {
header('Location:blablacar.php');
}
?>