Page 1 sur 4

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

Posté : 08 févr. 2006, 12:50
par Guiglette
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 !

Posté : 08 févr. 2006, 12:58
par charabia
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"

Posté : 08 févr. 2006, 12:59
par HD
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 !

Posté : 08 févr. 2006, 14:43
par Guiglette
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"
	}
	?>

Posté : 08 févr. 2006, 14:53
par HD
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 ?

Posté : 08 févr. 2006, 15:03
par Guiglette
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 :?

Posté : 08 févr. 2006, 15:07
par HD
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

Posté : 08 févr. 2006, 15:30
par Guiglette
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 ?

Posté : 08 févr. 2006, 15:34
par charabia
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}

Posté : 08 févr. 2006, 15:52
par Guiglette
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...

Posté : 08 févr. 2006, 15:55
par charabia
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.

Posté : 08 févr. 2006, 16:10
par Guiglette
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);
?>
:? :? :?

Posté : 09 févr. 2006, 09:59
par charabia
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 ;)

Posté : 09 févr. 2006, 10:29
par Guiglette
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 !

Posté : 09 févr. 2006, 10:53
par charabia
Ton header te permet de rediriger après les requêtes SQL non ? C'est cette redirection qu pose souci avec l'erreur header ?