Renvoie à une page différente en fonction d'un bouton radio

Eléphanteau du PHP | 30 Messages

08 févr. 2006, 12:50

Bonjour,

J'aimerais, suivant que je coche l'un ou l'autre de deux boutons radio, être conduit à une page différente..

Par exemple :

Première page -->

Code : Tout sélectionner

<body> <form id="form1" name="form1" method="post" action="index_modif.php"> <p> <input type="radio" name="choix" value="modif.php" /> Modifier</p> <p> <input type="radio" name="choix" value="suppr.php" /> Supprimer</p> <p> <input type="submit" name="Submit" value="Envoyer" /> </p> </form> </body>
Deuxième page -->

Code : Tout sélectionner

... <form id="form1" name="form1" method="post" action="<?php echo $_POST["choix"]; ?>"> ... </form> ...
De cette manière, en deux pages, pas de soucis... Par contre, le but serait d'avoir les boutons radio sur la deuxième page, en gros, de fusionner les deux... Est-ce possible de récupérer des valeurs de formulaire qui sont sur la page courante :?:

Merci de votre aide !

Avatar du membre
ViPHP
ViPHP | 3008 Messages

08 févr. 2006, 12:58

Hello !

Bé dans ton code de la deuxième page tu as très bien récupéré la valeur de la première avec
<?php echo $_POST["choix"]; ?>
non ?

Donc il te suffira de mettre :
si $_POST["choix"] == "modif.php"
alors dans le bouton radio tu affiches "checked"
Modifié en dernier par charabia le 08 févr. 2006, 13:00, modifié 1 fois.

HD
Mammouth du PHP | 1181 Messages

08 févr. 2006, 12:59

si tu sais programmer en php voici le principe :
<?php
//si $radio = $radio1 alors $page = "page1.htm"
//sinon $page = "page2.htm"
?>
puis remplace
action="index_modif.php"> 
par
action="<?php echo $page ; ?>"> 
je suppose que ca va marche
si t as pas compris n'hesite pas à poser tes questions !
"Si Dieu descendait sur la Terre, tous les peuples se mettraient a genoux, excepte les Français qui diraient : " Ah ! Vous êtes la ! C'est pas trop tôt ! On va pouvoir discuter un peu !" [Michel Balfour]

Eléphanteau du PHP | 30 Messages

08 févr. 2006, 14:43

Salut charabia,

je me suis peut-être mal exprimé... le but est d'avoir une page unique dans laquelle se trouvent les boutons radio et que quand tu clic le bouton submit, il t'envoie à la page choisie par le bouton... donc il faudrait que la valeur soit récupérée directement dans la même page plutôt que dans une autre...

Et salut HD,

hum... pour commencer je débute en prog... mais je crois comprendre ce que tu veux dire...

Tu pensais à quelque chose dans ce genre là ? ->
	<?php
	if ($choix /*nom du bouton radio et...*/= $choix1 /*...value du bouton, c'est bien ça le but ?*/) {
	$page = "modif.php"
	}
	else {
	$page = "suppr.php"
	}
	?>

HD
Mammouth du PHP | 1181 Messages

08 févr. 2006, 14:53

non et d'ailleurs en relisant le topic ce n'etait pas la bonne solution
proposition :
le formulaire envoie tout vers default.php
tu y met, au debut une condition :
s'il recoit le bouton radio1 alors include("pageradio1.php")
sinon (donc il a recu radio2) alors include("pageradio2.php")
tu as compris cette nouvelle proposition ?
"Si Dieu descendait sur la Terre, tous les peuples se mettraient a genoux, excepte les Français qui diraient : " Ah ! Vous êtes la ! C'est pas trop tôt ! On va pouvoir discuter un peu !" [Michel Balfour]

Eléphanteau du PHP | 30 Messages

08 févr. 2006, 15:03

pas tout à fait compris non... mais je ne sais pas si c'est une bonne solution de mettre une page default.php entre les deux pages puisqu'il y a aussi tout un tas de variables qui passent.. je ne sais donc pas si elles seront acheminées vers par ex pageradio1.php...

Sinon, autre idée mais je ne sais pas si c'est faisable (c'est d'ailleurs pour cela que j'ai voulu faire avec des boutons...) : Est-ce possible de faire deux boutons submit différents ? de sorte à ce qu'un bouton envoie à une page et l autre à une autre page... aucune idée :?

HD
Mammouth du PHP | 1181 Messages

08 févr. 2006, 15:07

moi en tous cas j'aurai utilisé ma 2eme proposition
en voila une 3eme :
une page.php recoit les resultats du formulaire
si recoit radio1 alors passer à la fonction radio1() -- dont le contenu est le meme que celui de la page radio1.php
sinon executer la fonction radio2()

pour ce qui est de deux submit... tres mauvaise idee à mon avis :?
mais je persiste et signe pour ma 2eme proposition :D
"Si Dieu descendait sur la Terre, tous les peuples se mettraient a genoux, excepte les Français qui diraient : " Ah ! Vous êtes la ! C'est pas trop tôt ! On va pouvoir discuter un peu !" [Michel Balfour]

Eléphanteau du PHP | 30 Messages

08 févr. 2006, 15:30

Ok alors voilà ce que j'ai fais pour ta solution 2 :
  <?php
  if ($_POST["radio"] == "choix1") {
  include("modif.php");
  }
  else {
  include("suppr.php");
  }
  ?>
Et ça fonctionne, bien joué !

Mais... (ettt oui, toujours un mais :wink: ) les erreurs viennent une fois que je fais ce que j'ai à faire dans modif.php ou suppr.php...

Y a-t-il une fonction dans le style d'include mais qui envoie à la page souhaitée plutôt que de l'inclure dans la page courante ?

Avatar du membre
ViPHP
ViPHP | 3008 Messages

08 févr. 2006, 15:34

pas tout à fait compris non... mais je ne sais pas si c'est une bonne solution de mettre une page default.php entre les deux pages puisqu'il y a aussi tout un tas de variables qui passent.. je ne sais donc pas si elles seront acheminées vers par ex pageradio1.php...

Sinon, autre idée mais je ne sais pas si c'est faisable (c'est d'ailleurs pour cela que j'ai voulu faire avec des boutons...) : Est-ce possible de faire deux boutons submit différents ? de sorte à ce qu'un bouton envoie à une page et l autre à une autre page... aucune idée :?
Oki je vois mieux ce que tu veux faire, j'avais en effet pas très bien saisis :)

Alors voici ce que je te propose :
Tu peux faire deux boutons avec un nom différent chacun. Lorsque tu envois le formulaire, tu récupères la valeur des boutons grâce à $_POST.

Code : Tout sélectionner

<input type="submit" value="Modifier" name="modif" /> <input type="submit" value="Supprimer" name="supp" />
Dans ta page de récupération tu fais un test :
if(isset($_POST['modif']) && $_POST['modif'] == "Modifier") 
{ inclusion de ta page modif }
elseif(isset($_POST['supp']) && $_POST['supp'] == "Supprimer")
{ inclusion de ta page supp }
else
{blabla}

Eléphanteau du PHP | 30 Messages

08 févr. 2006, 15:52

Re, alors voilà ce que j'ai fais avec ta proposition -->
  <?php
  if (isset($_POST['modif']) && $_POST['modif'] == "Modif") {
  include("modif.php");
  }
  elseif (isset($_POST['suppr']) && $_POST['suppr'] == "Suppr") {
  include("suppr.php");
  }
  else {}
  ?>
Ca me plait bien aussi, et ça fonctionne plus ou moins la même chose que la solution de HD, càd : La page s'affiche correctement avec ce que je veux dedans (des enregistrements de bd qu'ensuite ou bien je supprime ou bien je modifie, d'où le nom des pages..) mais des erreurs s'affichent quand j'effectue ces opérations...

C'est certainement aussi dû à l'include qui gère mal les opérations se trouvant dans les pages suppr.php et modif.php...

Avatar du membre
ViPHP
ViPHP | 3008 Messages

08 févr. 2006, 15:55

Oui si tu as des erreurs ça se trouvent dans tes includes. Donnes nous le code et l'erreur que tu as.

Sinon oui le fonctionnement est le même que HD ;) Tu choisis celle que tu veux, soit par les boutons submit soit par les boutons radio :)
regardes par contre que j'ai rajouté le "isset" qui permet de tester si la variable existe.

Eléphanteau du PHP | 30 Messages

08 févr. 2006, 16:10

Je vais directement poster tout ce qui peut être utile.

D'abord, quelques erreurs -->
  • Warning: Invalid argument supplied for foreach() in c:\program files\easyphp1-8\www\tests bd\tests3\suppr.php on line 13

    Warning: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-8\www\tests bd\tests3\default2.php:10) in c:\program files\easyphp1-8\www\tests bd\tests3\suppr.php on line 17
N'y a-t-il pas une formule qui permet de faire une redirection au lieu d'un include ? Ce serait le top !

Sinon, si cela peut aider, voici le code des pages utiles à la modification -->

index_modif.php -->
<?php require_once('Connections/tests_bd.php'); ?>
<?php
mysql_select_db($database_tests_bd, $tests_bd);
$query_Recordset1 = "SELECT eleves.numero, eleves.nom, eleves.prenom FROM eleves ORDER BY eleves.nom, eleves.prenom";
$Recordset1 = mysql_query($query_Recordset1, $tests_bd) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
</head>

<body>
<a href="index.html">Retour 
</a>
<form id="form1" name="form1" method="post" action="default2.php">
  <table width="100%" border="0" cellspacing="0" cellpadding="0">
    <tr>
      <td><em><strong>N&deg;</strong></em></td>
      <td><em><strong>Nom</strong></em></td>
      <td><em><strong>Pr&eacute;nom</strong></em></td>
      <td><p><!-- 
        <input name="radio" type="radio" value="choix1" checked="checked" />
      modif</p>
        <p>
          <input type="radio" name="radio" value="choix2" /> 
          suppr-->
</p>
        <p>
          <input type="submit" name="modif" value="Modif" />
          <input type="submit" name="suppr" value="Suppr" />
        </p></td>
    </tr>

<?php

while ($row_Recordset1 = mysql_fetch_assoc($Recordset1)) {
?> 
      <tr>
        <td><?php echo $row_Recordset1['numero']; ?></td>
        <td><?php echo $row_Recordset1['nom']; ?></td>
        <td><?php echo $row_Recordset1['prenom']; ?></td>
        <td><input type="checkbox" name="checkbox[]" value="<?php echo $row_Recordset1['numero']; ?>"/></td>
      </tr>
<?php 
}
?>
    <tr>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td><input type="submit" name="Submit" value="Afficher" /></td>
    </tr>
  </table>
</form>
</body>
</html>
<?php
mysql_free_result($Recordset1);
?>
default2.php -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
</head>

<body>
<form id="form1" name="form1" method="post" action="">
  <?php
  if (isset($_POST['modif']) && $_POST['modif'] == "Modif") {
  include("modif.php");
  }
  elseif (isset($_POST['suppr']) && $_POST['suppr'] == "Suppr") {
  include("suppr.php");
  }
  else {}
  ?>
</form>
</body>
</html>
et modif.php qui est incluse dans default2.php -->
<?php require_once('Connections/tests_bd.php'); ?>
<?php
mysql_select_db($database_tests_bd, $tests_bd);
$query_Recordset1 = "SELECT eleves.numero, eleves.nom, eleves.prenom FROM eleves";
$Recordset1 = mysql_query($query_Recordset1, $tests_bd) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);

?>
<?php
require_once('Connections/tests_bd.php');
mysql_select_db($database_tests_bd, $tests_bd);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
</head>

<body>
<form id="form1" name="form1" method="post" action="modifOK.php">
  <table width="100%" border="0" cellspacing="0" cellpadding="0">
    <tr>
      <td><em><strong>N&deg;</strong></em></td>
      <td><em><strong>Nom</strong></em></td>
      <td colspan="2"><em><strong>Pr&eacute;nom</strong></em></td>
    </tr>
<?php
if ($_POST["checkbox"])
	foreach ($_POST["checkbox"] as $result_numero) {
	$query_Recordset1 = "SELECT eleves.numero, eleves.nom, eleves.prenom FROM eleves WHERE eleves.numero = '$result_numero'";
	$Recordset1 = mysql_query($query_Recordset1, $tests_bd) or die(mysql_error());
	$row_Recordset1 = mysql_fetch_assoc($Recordset1);
?>
      <?php do { ?>
        <tr>
          <td><?php echo $row_Recordset1['numero']; ?></td>
          <td><input name="nom[]" type="text" value="<?php echo $row_Recordset1['nom']; ?>" /></td>
          <td><input type="text" name="prenom[]" value="<?php echo $row_Recordset1['prenom']; ?>" /></td>
          <td><input name="numero[]" type="hidden" value="<?php echo $row_Recordset1['numero']; ?>" /></td>
        </tr>
        <?php } while ($row_Recordset1 = mysql_fetch_assoc($Recordset1)); ?>
<?php 
}
?>
    <tr>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td colspan="2"><input type="submit" name="Submit" value="Modifier" /></td>
    </tr>
  </table>
</form>
</body>
</html>
<?php
mysql_free_result($Recordset1);
?>
:? :? :?

Avatar du membre
ViPHP
ViPHP | 3008 Messages

09 févr. 2006, 09:59

N'y a-t-il pas une formule qui permet de faire une redirection au lieu d'un include ? Ce serait le top !
Tu veux dire à la place du header ? Tu peux utiliser du javascript pour cette redirection.

Sinon tes erreurs proviennent toutes de la page suppr apparemment. Tu ne nous a pas donné le code de ce dernier ;)

Eléphanteau du PHP | 30 Messages

09 févr. 2006, 10:29

Hello,

il n'y a pas d'erreurs sur la page de modification, par contre l'update ne s'effectue plus...

si tu veux jeter un coup d'oeil à la page de suppression, voici le code -->
<?php require_once('Connections/tests_bd.php'); ?>
<?php
mysql_select_db($database_tests_bd, $tests_bd);
$query_Recordset1 = "SELECT eleves.numero, eleves.nom, eleves.prenom FROM eleves";
$Recordset1 = mysql_query($query_Recordset1, $tests_bd) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);

	if (!empty($_POST['suppr'])) {
		foreach ($_POST['suppr'] as $cle) {
			$Requete = "DELETE FROM eleves WHERE numero = '$cle'";
			$resRequete = mysql_query($Requete, $tests_bd) or die(mysql_error());
		}
		header("Location:index_suppr.php");
	} 
?>
<?php
require_once('Connections/tests_bd.php');
mysql_select_db($database_tests_bd, $tests_bd);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
</head>

<body>
<form id="form1" name="form1" method="post" action="">
  <table width="100%" border="0" cellspacing="0" cellpadding="0">
    <tr>
      <td><em><strong>N&deg;</strong></em></td>
      <td><em><strong>Nom</strong></em></td>
      <td colspan="2"><em><strong>Pr&eacute;nom</strong></em></td>
    </tr>
<?php
if ($_POST["checkbox"])
	foreach ($_POST["checkbox"] as $result_numero) {
	$query_Recordset1 = "SELECT eleves.numero, eleves.nom, eleves.prenom FROM eleves WHERE eleves.numero = '$result_numero'";
	$Recordset1 = mysql_query($query_Recordset1, $tests_bd) or die(mysql_error());
	$row_Recordset1 = mysql_fetch_assoc($Recordset1);
?>
      <?php do { ?>
        <tr>
          <td><?php echo $row_Recordset1['numero']; ?></td>
          <td><?php echo $row_Recordset1['nom']; ?></td>
          <td><?php echo $row_Recordset1['prenom']; ?></td>
          <td><input name="suppr[]" type="hidden" value="<?php echo $row_Recordset1['numero']; ?>" /></td>
        </tr>
        <?php } while ($row_Recordset1 = mysql_fetch_assoc($Recordset1)); ?>
<?php 
}
?>
    <tr>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td colspan="2"><input type="submit" name="Submit" value="Effacer" /></td>
    </tr>
  </table>
</form>
</body>
</html>
<?php
mysql_free_result($Recordset1);
?>
Ben écoute, s'il y a moyen d'être envoyé à une page différente suivant le submit que l'on presse grâce à du javascript, je veux bien essayer pour voir ce que ça donne...

Tu aurais éventuellement un exemple ou une adresse ? Je vais déjà aller voir de mon côté en attendant..

Merci !

Avatar du membre
ViPHP
ViPHP | 3008 Messages

09 févr. 2006, 10:53

Ton header te permet de rediriger après les requêtes SQL non ? C'est cette redirection qu pose souci avec l'erreur header ?