Page 1 sur 2
envoyer donner POST de boutons radio
Posté : 06 juin 2007, 11:32
par celerite34
Bonjour bonjour!
Toujours aussi débutante en php j'ai un petit problème lors de l'envoie d'un formulaire. Je veux envoyer les données POST d'un formulaire avec présence de boutons de type radio, lorsque telle case est cochée faire tel truc...
<body>
<form>
<input type="radio" name="choix" value="all" value CHECKED>all*
<input type="radio" name="choix" value="trois">1/3
<input type="radio" name="choix" value="cinq">1/5
<input type="radio" name="choix" value="huit">1/8
<input type="radio" name="choix" value="dix">1/10
<input type="radio" name="choix" value="treize">1/13
<input type="radio" name="choix" value="quinze">1/15
<input type="radio" name="choix" value="dix_huit">1/18
<input type="radio" name="choix" value="vingt">1/20
<br><br>
<input type="submit" name="valider" value="valider">
<br>
</form>
</body>
Mais bon comme ce sont des boutons de type radio, ils ont tous le même name! Alors j'ai eu dans l'idée d'essayer ça:
if (isset($_POST['valider'])){
if($_POST['choix']=="all"){
Mais apparemment sans grand succès.... Si quelqu'un à la gentillesse de bien vouloir m'aider, qu'il le fasse!!! lol
Posté : 06 juin 2007, 11:56
par titerm
dans <form> il faut indiquer la methode , <form method="post">
En regle generatl, on met aussi un action... sinon, ca post sur lui meme.
sinon, le reste de la syntaxe semble correct
Essai de faire un print_r($_POST) pour voir ce que tu recuperes
Posté : 06 juin 2007, 14:43
par Invité
En fait le souci c'est que j'ai deux formulaires dans la même page php, je fais tout mon code sur la même page car en fait, impossible de trouver comment passer des variables qui se trouvent en plein dans un script (donc irrécupérable par un $_GET, $_POST ou $_FILES) sur une autre page php.
Si quelqu'un sait faire ça ça me simplifierait la vie!!
Du coup quand là j'ai fait le print_r($_POST) ça m'affiche les $_POST du formulaire qui se trouve tout en haut sur ma page....
En plus j'aimerai que quand je valide le deuxième formulaire le reste qui se trouve sur la page plus haut ne s'affiche pas....(pour ça je pense qu'il faut que je mette le bloc d'instruction que je veux cacher par la suite dans une balise <div> avec un id, puis que plus bas je fasse du javascript qui récupère l'id et qu'il le cache...(merci TiPunk

) Mais bon là aussi rien de sur...je me suis pas encore penchée sur le problème...)
Donc comme tu vois pas mal de problème....titerm au secours!!!!! lol
Posté : 06 juin 2007, 14:51
par celerite34
Autant pour moi, si je met le print_r($_POST) au bon endroit (et oui je m'étais trompée! lol) il affiche les bonnes valeurs $_POST renvoyer par le second formulaire, soit ( [choix] => all [valider] => ok )
Donc bon je dois pas être trop loin....
Surement encore une erreur d'inatention, je regarde ça et je reviens si je suis vraiment paumée, mais toutes vos propositions ou solutions sont les bienvenues!
Et toutes aides aux autres problèmes que je rencontre également

Posté : 06 juin 2007, 14:56
par titerm
Faire un formulaire et sa gestion sur la meme page, c'est source de problème,
Faire n formulaires et leurs gestions sur la meme page, c'est faisable, mais rapidement non maintenable...
pour passer des variables d'un script a l'autre il y a plusieurs solution
- Soit, tu la serialize et tu la passe via un post dans un input hidden (bof)
- Soit tu la serialize et tu la passe sur l'url en GET (re bof)
- Soit tu serialize, tu stocks dans un cookie (mouais)
- Soit tu créer une session et tu stocks tes variables dedans (Yes ! )
Pour gérer plusieurs formulaires dans la meme page, il faut donner un nom identique a chaque bouton submit, mais une valeur differente, ensuite, tu aiguilles en fonction de la valeurs
Posté : 06 juin 2007, 15:18
par celerite34
En fait je viens de trouver quel était le problème, les chemins!!!! (qui justement une fois que je valide le formulaire (avec un name différent de celui plus haut) deviennent inexistant, dc je perd mes variables qui se trouvaient plus haut...)
On m'a déjà parlé des sessions, j'ai déjà jeté un oeil mais à vrai dire je ne comprend pas trop leur fonctionnement....
Donc bon, prochaine étape: Comprendre les sessions! Parce que apparemment c'est important!!
Genre j'ai ce bout de code:
$images="$nom%d.jpg";
shell_exec(`ffmpeg -i $newfile $images`);
$dir="Images_$realname";
// Création d'un nouveau dossier
shell_exec(`mkdi
/var/www/web/html/upload/$dir`);
$ext="*.jpg";
shell_exec(` mv /var/www/web/html/upload/$ext /var/www/web/html/upload/$dir/`);
Avec $newfile une variable déclarer plus haut dans la page, Je fais dessous un nouveau formulaire et là impossible de récupèrer $dir par contre si je crée un dossier en dur ("/var/www/web/html/upload/mesImages") ça roule sans problème! Le fait est que je veux créer un dossier différent pour chaque bloc d'images.... D'où le fait que je veuille récupèrer $dir!
Comment faire??

Posté : 06 juin 2007, 16:08
par celerite34
wouhouuuuuuu

j'ai réussi! lol
Merci titerm pour ton orientation! En effet j'ai regardé les sessions et c'est niquel chrome!
Alors en fait j'ai fait:
$images="$nom%d.jpg";
shell_exec(`ffmpeg -i $newfile $images`);
$dir="Images_$realname";
$_SESSION['dossier'] = $dir ;
if(isset($_SESSION['dossier']))
echo "La variable dossier existe et vaut: " . $_SESSION['dossier'];
// Création d'un nouveau dossier
shell_exec(`mkdir /var/www/web/html/upload/$dir`);
$ext="*.jpg";
shell_exec(` mv /var/www/web/html/upload/$ext /var/www/web/html/upload/$dir`);
et plus bas j'ai fait:
// Url du fichier qui contient les images
$urlphoto = "http://localhost/web/html/upload/".$_SESSION['dossier'];
// Nom du répertoire qui contient les images
$nomRepertoire = "/var/www/web/html/upload/".$_SESSION['dossier'];
ect etc... et ça me parait bon! Jusqu'au prochain problème que je ne vais pas tarder à rencontrer merci du tuyau!
Posté : 06 juin 2007, 16:55
par titerm
le shell_exec pour un mv et un mkdir, c'est abusé...
mkdir(), et rename() sont tes amis
Posté : 06 juin 2007, 17:10
par celerite34
Euh c'est peut être abusé pour le mv mais en fait à l'origine il se trouve pas là où je veux, donc bon!!
Mais pour le mkdir carrément pas, parce que je dois créer un dossier différent pour chaque groupe d'images, d'où la necessité de mettre une variable $dir pour le faire.....à moins que je me trompe....
Mais bon l'erreur est humaine!

Et je débute vraiment mais alors vraiment en php et en informatique en général alors je fais ce que je peux hein....

Posté : 06 juin 2007, 17:14
par celerite34
J'avais pas vu la fin de ton post, lol, désolée!!!
Je ne connaissais pas les fonctions mkdir() et rename() pour php, franchement je met à peine les pieds dans le php alors je fais avec les moyens du bord,lol mais ravie d'en apprendre un peu plus tous les jours, alors n'hesite pas!!

Posté : 06 juin 2007, 17:15
par titerm
bah je suis désolé de te te dire que tu te trompe...
2 fois meme ...
Por info, un rename et un move, c'est la meme chose
au lieu de
shell_exec(` mv /var/www/web/html/upload/$ext /var/www/web/html/upload/$dir`);
tu fais
rename("/var/www/web/html/upload/$ext", "/var/www/web/html/upload/$dir");
et au lieu de
shell_exec(`mkdir /var/www/web/html/upload/$dir`);
tu fais
mkdir("/var/www/web/html/upload/$dir");
Posté : 06 juin 2007, 17:35
par celerite34
J'avais compris et je venais de le faire en regardant les fonctions, donc pas de souci,mais je ne me trompe pas, enfin disons que les deux méthodes marchent, sauf que je n'étais pas au courant de l'existence de ces fonctions en php, je connaissais que le shell_exec que j'utilise très souvent pour exécuter les lignes de commandes de ffmpeg par exemple donc j'ai fait avec.
Mais comme je te dis, je suis ravie d'apprendre d'autres méthodes moins débutantes que ce que je fais!
le mkdir() marche parfaitement, par contre, en faisant exactement:
rename("/var/www/web/html/upload/$ext", "/var/www/web/html/upload/$dir");
ça me dit:
Warning: rename(/var/www/web/html/upload/*.jpg,/var/www/web/html/upload/Images_cellules) [function.rename]: No such file or directory in /var/www/web/html/convert.php on line 251
Posté : 06 juin 2007, 18:05
par titerm
bah oui, le *.jpg ca le fait pas, faut donner le nom exacte du fichier.
les shell_exec c'est pas très propre, et ca fork un process a chaque fois... Ca consomme beaucoup de ressources coté serveur. Si tu peux trouver une methode qui les evites, faut toujours le faire
Posté : 06 juin 2007, 20:50
par Invité
En fait dans le *.jpg l'étoile sert à récupérer TOUS les fichiers présent dans le dossier dont l'extension est .jpg, c'est pour ça que j'utilise le shell_exec!!

Posté : 06 juin 2007, 22:28
par titerm
oui, je sais a quoi correspond l'étoile
mais je maintiens que c'est pas propre
dans ce cas, si y a plusieurs fichier, c'est peut etre plus long en php, mais c'est beaucoup plus propre, en plus, les shell_exec sont souvent interdit, donc autant prendre de bonne habitudes dès a présent.
foreach(glob("/var/www/web/html/upload/$ext") as $file) {
rename($file, "/var/www/web/html/upload/$dir");
}