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

Avatar du membre
ViPHP
ViPHP | 3008 Messages

10 févr. 2006, 12:35

Je dis ça comme ça sans savoir du tout si ça fonctionne...ne sait-on jamais lol.

Si tu inversais les fonctions dans le onclick ? Faire celle de supp avant l'autre ?

Eléphanteau du PHP | 30 Messages

10 févr. 2006, 12:49

J'avais déjà essayé... ça ne change rien en fait...

Si ça peut aider, voilà les choses qui peuvent à mon avis poser problème -->

D'abord, les fonctions javascript... la première envoie à la page modif.php ou suppr.php suivant le submit que l'on clique... Et tu devrais vaguement reconnaîte la deuxième ;)

Code : Tout sélectionner

<script language="JavaScript"> function Choixpage(numpage){ if(numpage==1){document.form1.action="modif.php";} if(numpage==2){document.form1.action="suppr.php";} document.form1.submit(); } function supprime(isup) { if (confirm('Souhaitez vous supprimer cet enregistrement n° '+ isup +' ?')) { document.location="supp.php?id="+ isup } } </script>
(là j'ai mis ta fonction comme tu l'as postée.. de mon côté je l'ai un peu simplifié mais il n'y a pas de changement...)

Et là, les deux submit -->

Code : Tout sélectionner

<input type="submit" name="modif" onClick ="javascript:Choixpage(1)" value="modif" /> <input type="submit" name="suppr" onClick ="javascript:supprime(); Choixpage(2);" value="suppr" />
Le problème vient sûrement de la première fonction et du submit... puisque dans tous les cas la fonction est exécutée... comme je disais, si c'est possible, le mieux serait de pouvoir annuler la première fonction si on clique sur Annuler...

Avatar du membre
ViPHP
ViPHP | 3008 Messages

10 févr. 2006, 13:03

C'est normal que ça te submit le form quand même :)

Ce que tu dois faire :

Code : Tout sélectionner

<input type="submit" name="modif" onClick ="javascript:Choixpage(1)" value="modif" /> <input type="submit" name="suppr" onClick ="javascript:supprime(<?php echo $_GET['id']; ?>);" value="suppr" />
$_GET étant l'ID de ton entrée ;)

Donc en gros mettre la valeur de l'ID en dynamique en le récupérant grâce à GET et enlever la deuxième fonction qui fait redondance :)

Pour ta fonction, n'oublies pas de mettre un "R" au nom de ta page qui est suppr et non supp :

Code : Tout sélectionner

function supprime(isup) { if (confirm('Souhaitez vous supprimer cet enregistrement n° '+ isup +' ?')) { document.location="suppr.php?id="+ isup } }

Eléphanteau du PHP | 30 Messages

10 févr. 2006, 14:41

Oui le "r" n'y était pas car j'avais copié ta source depuis le post d'au-dessus ;) mais je l avais mis dans mon code ça joue ;)

Par contre là plus rien ne fonctionne, ni la boîte de dialogue pour la confirmation, ni l'exécution de suppr.php :?

Avatar du membre
ViPHP
ViPHP | 3008 Messages

10 févr. 2006, 14:46

Le passage de l'ID que tu fais est dynamque ou statique ? Dans ton code c'est statique apparemment puisque tu mets Choixpage(1) ou Choixpage(2).

Dans ce cas, si c'est statique, met le input suivant :

Code : Tout sélectionner

<input type="submit" name="suppr" onClick ="javascript:supprime(num_de_ton_entrée)" value="suppr" />

Eléphanteau du PHP | 30 Messages

10 févr. 2006, 15:14

Non non c'est quand meme un peu plus compliqué que ca...

En gros c'est une bd avec une liste de personnes (donc num, nom, prénom, etc..) qui a chacun une checkbox à côté...

Ensuite tu coches les checkbox que tu veux et c'est là qu'après tu vas sur modif.php ou suppr.php... donc la valeur récupérée est dynamique..

Tout le reste fonctionne.. mais avec ces javascript là j'ai bcp de peine... déjà que je suis pas un phoenix en php ;)

Avatar du membre
ViPHP
ViPHP | 3008 Messages

10 févr. 2006, 15:17

Oki donc c'est bien ça. Tes ID sont dynamiques. Donc tu dois récupérer la valeur du checkbox en question (je suppose que c'est un chiffre).

C'est cette valeur qui sera reconnu comme le isup de la fonction javascript. Donc là où tu fais l'appel dans le bouton, tu dois mettre entre les parenthèses de supprime, la valeur récupéré du checkbox.

Je ne sais pas si c'est assez clair :roll:

Eléphanteau du PHP | 30 Messages

10 févr. 2006, 15:33

Moui je comprends ce que tu penses.. mais dans la page suppr.php, tout est déjà récupéré et supprimé et ça fonctionne assez bien.. alors ce serait été pas mal de pouvoir faire le minimum au niveau de ce submit.. mais je vais essayer de faire cette technique quand même !

Avatar du membre
ViPHP
ViPHP | 3008 Messages

10 févr. 2006, 15:35

Tu ne fait pas grand chose en plus en fait lol. Tu affiches juste la valeur de l'entrée à supprimer tout simplement :)

Mais maintenant si tu me dit que supprime() fonctionne et supprime la bonne entrée (ce qui est bizarre parce que je vois pas comment il reconnait ce qu'il faut supprimer), tentes juste de mettre :

Code : Tout sélectionner

<input type="submit" name="suppr" onClick ="javascript:supprime();" value="suppr" />
Mais bon fait d'abord ce que je t'ai indiqué c'est mieux normalement ;)

Eléphanteau du PHP | 30 Messages

10 févr. 2006, 15:47

Hehe non ce n'est pas supprime() qui fait le boulot, c'est justement suppr.php ! C'est pour ça que tu ce qu'il faudrait réussir à faire avec ce submit, c'est que si on presse Ok dans la boîte de dialogue, suppr.php s'exécute et si on presse Annuler bah rien ne se passe...

On y était presque il me semble ce matin... la boîte de dialogue venait normalement et quand Ok, exécution de suppr.php... le problème c'était qu'avec Annuler aussi ça éxecutait la page :shock:

J'avais peut-être mal expliqué sur le moment excuse-moi :?

Avatar du membre
ViPHP
ViPHP | 3008 Messages

10 févr. 2006, 15:54

looooooool tu n'as pas compris :lol:

La fonction javascript que je t'ai donné ne supprime rien du tout. Tout ce qu'elle fait c'est la boîte de dialogue avec passage en paramètre de l'ID. Donc c'est bien ta page suppr.php qui fait le travail.

Regardes la redirection et tu verras que ça pointe bien sur cette page.

Le problème que tu as eu ce matin du fait que si tu fait annuler ça submit quand même c'est tout à fait normal étant donné que tu as laissé la deuxième fonction qui elle submit.

Maintenant si tu l'enlèves du bouton et que tu ne laisses plus que supprime(), ça va agir comme ça :

Tu cliques sur supprimer. Le javascript agit : demande sûr ou pas sûr ?
--> si sûr alors il pointe vers la page supprimer
--> si pas sûr donc annuler, il ne fait rien du tout.

j'espère avoir été un peu plus clair :langue:

Eléphanteau du PHP | 30 Messages

10 févr. 2006, 15:58

Si si j'avais compris ;) mais je me demandais pourquoi passer les variables par la fonction alors qu'elles sont de toute manière récupérées dans la page d'après...

Mais bref, j'essaie ça et jte redis si j'y arrive pas ;)

Avatar du membre
ViPHP
ViPHP | 3008 Messages

10 févr. 2006, 16:00

Ce passage de paramètres dans supprime(var) sert à identifier quelle est l'entrée que tu dois supprimer. Si tu ne spécifies pas, quand tu vas dans ton fichier suppr.php, ta requête doit avoir un WHERE id=$_GET['var'] non ?

Eléphanteau du PHP | 30 Messages

10 févr. 2006, 16:06

Heu non ça ressemble plutôt à ça la page (ça peut parraître bizare, mais ça fonctionne ;))

-->
<?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['checkbox'])) {
		foreach ($_POST['checkbox'] as $cle) {
			$Requete = "DELETE FROM eleves WHERE numero = '$cle'";
			$resRequete = mysql_query($Requete, $tests_bd) or die(mysql_error());
		}
		header("Location:index_modif.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);
?>

Avatar du membre
ViPHP
ViPHP | 3008 Messages

10 févr. 2006, 16:35

loooool tu as répondu !! :) La variable correspond à ton $cle ;)

Supprimes comme je t'ai dit la deuxième fonction de l'input. ça devrait marcher :)