Pb de switch case !

Répondre
Lefounard
le 18/02/2005 à 18:47
Lefounard
Bonjour,
Voila je rencontre un probleme avec un switch case, j'ai fait une messagerie interne et j'ai mis dans mon switch a la case "new" : un formulaire pour entrer un message a envoyer ! Or le formulaire est de method POST et que je l'envoi le switch ne risque pas de reconnaitre $_POST , vu que la condition du switch est $_GET['do'] , et j'ai essayer de mettre $_GET || $_POST mais ca marchais plus aprés !
Voila mon code :
http://www.lephpfacile.com/wall/wall.php?id=2031

En gros je voudrais qu'aprés avec valider le formulaire , le switch case rentre dans la case ='envoyer' pour executer l'envoi !
Merci de vos conseils,
Ciao,
I am singing in the rain , I am happy again !!
XTremTourist
le 18/02/2005 à 20:57
XTremTourist
fait comme sa

<?php
if(isset($_GET[do]))
{
$var = $_GET[do];
}
else
{
$var = $_POST[do];
}

switch($var)
{
case 'xx':
break;
default:
break;
}
?>
keitarosan
le 18/02/2005 à 22:14
keitarosan
xtreme, faut inversé le isset($_POST["do"]) et du $_GET.

Parce que meme si tu post, dans l'url, tu veras toujours le "url/page.php?param1=valeur1&do=valeur2"...

Donc c'est mieux de vérifier avant, le $_POST, plutot que le $_GET, sachant que le post n'existe que s'il a bien cliquer sur le bouton.
(ou alors forcer l'action vers la meme page, sans parametre dans l'url, via un 'action="pageencour.php"' dans la balise form ^^)
>> http://projectopensource.free.fr/index.php?m=2&m2=5&s=8 <<
keitarosan
le 18/02/2005 à 22:20
keitarosan
il te manque une accolade, probablement a la fin...


Et je serait toi, j'indenterais mon code proprement, parce que meme en copiant/collant le code dans mon editeur, et bien c'est pas encore joli joli a voir ^^

Si j'avais pas le surlignage des (), [] et {}, je pense que j'aurais pas trop vu d'ou ca vient.

Et meme la, c'est assez illisible pour te dire précisément ou ca manque ^^
>> http://projectopensource.free.fr/index.php?m=2&m2=5&s=8 <<
XTremTourist
le 18/02/2005 à 22:38
XTremTourist
citation:
sachant que le post n'existe que s'il a bien cliquer sur le bouton


heu si c un formulaire pour valider fo bien cliker sur le bouton
apret dans la majoriter des personne ki font de formulaire specifie la method.
alor smiley
keitarosan
le 18/02/2005 à 22:49
keitarosan
euh, je me suis peut etre mal exprimé ^^

En fait, si tu fais

si $_GET existe, je prend $_GET
sinon je prend $_POST

hors, si tu ne force pas l'action dans la balise form (via action="currentpage.php"), et que le gars a mise un parametre $_GET identique a celui d'un $_POST, comme il commence par vérifié la presence du parametre dans l'url, et que celui ci exite, alors il ne prends pas le $_POST, quand bien meme il aurait cliquer sur le bouton ^^

T'as qu'a faire le test tout simple.

<?php

if (TRUE == isset($_GET["test"]))
{
echo ("\$_GET[test] vaut: ".$_GET["test"]);
}
else
{
echo ("\$_POST[test] vaut: ".$_POST["test"]);
}
?>

<html>
<head>
<title>Test</title>
</head>

<body>

<form method="post">
<input type="submit" name="test" value="Je poste !">
</form>

</body>
</html>


voila, tu copie ca dans un fichier, tu le teste avec l'url:
http://(nomdedomaine)/tonfichier.php?test=variable_du_get

et tu me dis ce que tu vois d'affiché ^^

Logiquement, tu n'aurais toujours que:
$_GET[test] vaut: variable_de_get
>> http://projectopensource.free.fr/index.php?m=2&m2=5&s=8 <<
zebden
le 18/02/2005 à 23:32
zebden
Il a raison , logiquement tu aura toujours la var $_GET dans ta variable $var.
Mieux vaut faire le contraire.

Ensuite ne pas oublier les quotes ou guillements dans une var tableau
Pourquoi ? Simplement parce que si il n'y pas de quote alors do (ici en l'occurence) sera considéré comme une constante si non defini sera egale a do (forcement) mais si il y a define('do','toto') alors $_GET[do] sera equivalent a $_GET['toto'].
Donc toujours mettre des quotes.
zebdinou pour les intimes / Blog : http://www.zebden.fr
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours