Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 31/08/2011, 16h34   #1
Invité de passage
 
Inscription : novembre 2008
Messages : 35
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 35
Points : 4
Points : 4
Par défaut Validation de données avec fenêtre popup

Bonjour à tous,

Voilà un moment que je cherche à faire une simple redirection de page en php.

Mon problème est (me semble...) simple : je valide un formulaire de la page modifier_enfant.php qui se redirige vers une page avec la requête SQL qui va bien qui se nomme modifier_enfant_cible.php. Jusque là tout va bien.

Mais... : je souhaite ouvrir une fenêtre avec deux boutons oui / non ou valider / annuler, récupérer la valeur du bouton cliqué et dans ma page modifier_enfant_cible.php faire une instruction conditionnelle if then else qui m'exécuterait le code SQL en fonction de la réponse de l'utilisateur.

Malgré mes recherches sur internet, je n'ai toujours rien trouvé, et c'est pourquoi je me retourne vers vous. Merci par avance pour votre aide et votre temps passé sur ce problème...

Voilà mon code modifier_enfant.php :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
 
<?php
include('../param_conn.php');
$req = $bdd->prepare('SELECT * FROM ime_enfant WHERE num_enfant = ?');
$req->execute(array($_GET['num_enfant']));
while ($donnees = $req->fetch())
    {
 
?>
<body>
<form method="post" action="modifier_enfant_cible.php">
<h1>Modifier les données concernant l'enfant :</h1>
 
<p>
    <table align=center>
	<tr><td><h2><em><font color="red">Données administratives :</font></em></h2></td></tr>
	<input name="num_enfant" value="<?php echo $donnees['num_enfant']; ?>" type="hidden">
	<tr><td>Nom de l'enfant :</td><td><input type="text" name="nom_enfant" value="<?php echo $donnees['nom_enfant']; ?>"/></td></tr>
	<tr><td>Prénom de l'enfant :</td><td><input type="text" name="prenom_enfant" value="<?php echo $donnees['prenom_enfant']; ?>"/></td></tr>
	<tr><td>Date de naissance de l'enfant :</td><td><input type="text" class="w5em dateformat-d-sl-m-sl-Y" id="dp-1" name="ddn_enfant" value="<?php echo $donnees['DDN_enfant']; ?>" /></td></tr>
	<tr><td>Situation familiale de l'enfant :</td><td><textarea rows="2" cols="20" name="sf_enfant" value=""><?php echo $donnees['SF_enfant']; ?></textarea></td></tr>
	<tr><td>Date d'entrée de l'enfant :</td><td><input type="text" class="w5em dateformat-d-sl-m-sl-Y" id="dp-2" name="date_entree_enfant" value="<?php echo $donnees['Date_entree_enfant']; ?>" /></td></tr>
	<tr><td>Date début séjour de l'enfant :</td><td><input type="text" class="w5em dateformat-d-sl-m-sl-Y" id="dp-3" name="date_debut_sejour_enfant" value="<?php echo $donnees['Date_debut_contrat_sejour_enfant']; ?>" /></td></tr>
	<tr><td>Date fin séjour de l'enfant :</td><td><input type="text" class="w5em dateformat-d-sl-m-sl-Y" id="dp-4" name="date_fin_sejour_enfant" value="<?php echo $donnees['Date_fin_contrat_sejour_enfant']; ?>" /></td></tr>
	<tr><td>Date début MDPH de l'enfant :</td><td><input type="text" class="w5em dateformat-d-sl-m-sl-Y" id="dp-5" name="mdph_date_debut_enfant" value="<?php echo $donnees['MDPH_date_debut_enfant']; ?>" /></td></tr>
	<tr><td>Date fin MDPH de l'enfant :</td><td><input type="text" class="w5em dateformat-d-sl-m-sl-Y" id="dp-6" name="mdph_date_fin_enfant" value="<?php echo $donnees['MDPH_date_fin_enfant']; ?>" /></td></tr>
	<tr><td><h2><em><font color="red">Données spécifiques :</font></em></h2></td></tr>
	<tr><td>Diagnostic psy. de l'enfant :</td><td><textarea rows="2" cols="20" name="diag_psy_enfant" value=""><?php echo $donnees['Diagnostic_psy_enfant']; ?></textarea></td></tr>
	<tr><td>Diagnostic cria de l'enfant :</td><td><textarea rows="2" cols="20" name="diag_cria_enfant" value=""><?php echo $donnees['Diagnostic_cria_enfant']; ?></textarea></td></tr>
	<tr><td>Informations médicales enfant :</td><td><textarea rows="2" cols="20" name="infos_medicales_enfant" value=""><?php echo $donnees['Infos_medicales_enfant']; ?></textarea></td></tr>
	<tr><td>Suivi externe enfant :</td><td><textarea rows="2" cols="20" name="suivi_externe_enfant" value=""><?php echo $donnees['Suivi_externe_enfant']; ?></textarea></td></tr>
	<tr><td><h2><em><font color="red">Données internes :</font></em></h2></td></tr>
	<tr><td>Suivi interne enfant :</td><td><textarea rows="2" cols="20" name="suivi_interne_enfant"><?php echo $donnees['Suivi_interne_enfant']; ?></textarea></td></tr>
	<tr><td><input type="button" value="RETOUR" align=right onClick="javascript:document.location.href='index.php'" /></td><td><input type="submit" value="INSCRIRE EN BASE DE DONNEES" /></td></tr>
	</table>
</p>
<?php
	}
$req->closeCursor();
?>
</form>
Et le code SQL qui met à jour les données où j'ai l'intention de récupérer la valeur du bouton cliqué :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
 
<?php
 
/** ICI LE CODE JAVASCRIPT OU AUTRE POUR EXECUTER OU NON LA REQUETE **/
 
include('../param_conn.php');
$num_enfant = $_POST['num_enfant'];
$nom_enfant = $_POST['nom_enfant'];
$prenom_enfant = $_POST['prenom_enfant'];
$DDN_enfant = $_POST['ddn_enfant'];
		$annee = substr($DDN_enfant, 6, 4);
		$mois = substr($DDN_enfant, 3, 2);
		$jour = substr($DDN_enfant, 0, 2);
		$DDN_enfant =  $annee.'-'.$mois.'-'.$jour;
$SF_enfant = $_POST['sf_enfant'];
$Date_entree_enfant = $_POST['date_entree_enfant'];
		$annee = substr($Date_entree_enfant, 6, 4);
		$mois = substr($Date_entree_enfant, 3, 2);
		$jour = substr($Date_entree_enfant, 0, 2);
		$Date_entree_enfant =  $annee.'-'.$mois.'-'.$jour;
$Date_debut_contrat_sejour_enfant = $_POST['date_debut_sejour_enfant'];
		$annee = substr($Date_debut_contrat_sejour_enfant, 6, 4);
		$mois = substr($Date_debut_contrat_sejour_enfant, 3, 2);
		$jour = substr($Date_debut_contrat_sejour_enfant, 0, 2);
		$Date_debut_contrat_sejour_enfant =  $annee.'-'.$mois.'-'.$jour;
$Date_fin_contrat_sejour_enfant = $_POST['date_fin_sejour_enfant'];
		$annee = substr($Date_fin_contrat_sejour_enfant, 6, 4);
		$mois = substr($Date_fin_contrat_sejour_enfant, 3, 2);
		$jour = substr($Date_fin_contrat_sejour_enfant, 0, 2);
		$Date_fin_contrat_sejour_enfant =  $annee.'-'.$mois.'-'.$jour;
$MDPH_date_debut_enfant = $_POST['mdph_date_debut_enfant'];
		$annee = substr($MDPH_date_debut_enfant, 6, 4);
		$mois = substr($MDPH_date_debut_enfant, 3, 2);
		$jour = substr($MDPH_date_debut_enfant, 0, 2);
		$MDPH_date_debut_enfant =  $annee.'-'.$mois.'-'.$jour;
$MDPH_date_fin_enfant = $_POST['mdph_date_fin_enfant'];
		$annee = substr($MDPH_date_fin_enfant, 6, 4);
		$mois = substr($MDPH_date_fin_enfant, 3, 2);
		$jour = substr($MDPH_date_fin_enfant, 0, 2);
		$MDPH_date_fin_enfant =  $annee.'-'.$mois.'-'.$jour;
$Diagnostic_psy_enfant = $_POST['diag_psy_enfant'];
$Diagnostic_cria_enfant = $_POST['diag_cria_enfant'];
$Infos_medicales_enfant = $_POST['infos_medicales_enfant'];
$Suivi_externe_enfant = $_POST['suivi_externe_enfant'];
$Suivi_interne_enfant = $_POST['suivi_interne_enfant'];
 
$req = $bdd->prepare('UPDATE ime_enfant SET
nom_enfant = :nom_enfant,
prenom_enfant = :prenom_enfant,
DDN_enfant = :DDN_enfant,
SF_enfant = :SF_enfant,
Date_entree_enfant = :Date_entree_enfant,
Date_debut_contrat_sejour_enfant = :Date_debut_contrat_sejour_enfant,
Date_fin_contrat_sejour_enfant = :Date_fin_contrat_sejour_enfant,
MDPH_date_debut_enfant = :MDPH_date_debut_enfant,
MDPH_date_fin_enfant = :MDPH_date_fin_enfant,
Diagnostic_psy_enfant = :Diagnostic_psy_enfant,
Diagnostic_cria_enfant = :Diagnostic_cria_enfant,
Infos_medicales_enfant = :Infos_medicales_enfant,
Suivi_externe_enfant = :Suivi_externe_enfant,
Suivi_interne_enfant = :Suivi_interne_enfant WHERE num_enfant = :num_enfant');
 
$req->execute(array(
	'nom_enfant' => $nom_enfant,
	'prenom_enfant' => $prenom_enfant,
	'num_enfant' => $num_enfant,
	'DDN_enfant' => $DDN_enfant,
	'SF_enfant' => $SF_enfant,
	'Date_entree_enfant' => $Date_entree_enfant,
	'Date_debut_contrat_sejour_enfant' => $Date_debut_contrat_sejour_enfant,
	'Date_fin_contrat_sejour_enfant' => $Date_fin_contrat_sejour_enfant,
	'MDPH_date_debut_enfant' => $MDPH_date_debut_enfant,
	'MDPH_date_fin_enfant' => $MDPH_date_fin_enfant,
	'Diagnostic_psy_enfant' => $Diagnostic_psy_enfant,
	'Diagnostic_cria_enfant' => $Diagnostic_cria_enfant,
	'Infos_medicales_enfant' => $Infos_medicales_enfant,
	'Suivi_externe_enfant' => $Suivi_externe_enfant,
	'Suivi_interne_enfant' => $Suivi_interne_enfant	
	));
 
?>
jeje_974 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2011, 11h58   #2
Membre confirmé
 
Homme Arnaud
Inscription : décembre 2004
Messages : 167
Détails du profil
Informations personnelles :
Nom : Homme Arnaud
Âge : 40
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : décembre 2004
Messages : 167
Points : 238
Points : 238
Bonjour,

Sur la dernière ligne de ton formulaire, tu as :
Code :
...<tr><td><input type="button" value="RETOUR" align=right onClick="javascript:document.location.href='index.php'" /></td><td><input type="submit" value="INSCRIRE EN BASE DE DONNEES" /></td></tr>...
Tu as une méthode POST, alors mets un name sur ton submit, et teste la valeur de la value dans la page réceptionnant les variables :

Code :
...<tr><td><input type="button" value="RETOUR" align=right onClick="javascript:document.location.href='index.php'" /></td><td><input type="submit"  name="MonSubmit" value="INSCRIRE EN BASE DE DONNEES" /></td></tr>...
et à la réception :
Code :
1
2
3
4
5
6
 
if(isset($_POST['MonSubmit'])&&strtoupper($_POST['MonSubmit']=='INSCRIRE EN BASE DE DONNEES')){
  // Ben tu fais ce que tu as à faire, ex : passer ta requête
} else {
  // sinon tu faits autre chose 
}
En gros, c'est ce que je ferais...
lenono est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2011, 12h23   #3
Membre régulier
 
Étudiant
Inscription : octobre 2010
Messages : 92
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : octobre 2010
Messages : 92
Points : 78
Points : 78
Bonjour,

Tu peux le faire en AJAX (donc avec du JS) :

A la place du submit de ton formulaire tu mets un <button></button> avec un onClick="maFonctionJS()"

Ta fonction maFonctionJS() :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
if (confirm("Etes-vous sur de vouloir modifier ?" ))
{
	var xmlhttp;
	if (window.XMLHttpRequest)
	{
		// code for IE7+, Firefox, Chrome, Opera, Safari
		xmlhttp = new XMLHttpRequest();
	}
	else
	{
		// code for IE6, IE5
		xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	}
 
	xmlhttp.onreadystatechange=function()
	{
		if (xmlhttp.readyState==4 && xmlhttp.status==200)
		{
			// Action
		}
	}
	// On envoie au script
	xmlhttp.open("GET",modifier_enfant_cible.php?param1=value1&param2=value2,true);
	xmlhttp.send();
}
Attention le code "xmlhttp.open" est différent si tu envoies en POST.

Deuxième façon passé par un script intermédiaire comme te l'as proposé lenono.

modifier_enfant.php (formulaire) > validation_modifier_enfant_cible.php (bouton Oui/Non) > modifier_enfant_cible.php (script avec requête SQL)
zeclad01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2011, 13h31   #4
Invité de passage
 
Inscription : novembre 2008
Messages : 35
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 35
Points : 4
Points : 4
Bonjour à vous deux et à tous ceux qui suivent le cours de ce problème...
Voilà j'ai essayé la technique de lenono mais je ne me suis pas bien expliqué :

1) l'utilisateur clique sur le bouton INSRIRE EN BD
2) je souhaite ouvrir une fenêtre popup oui / non du genre êtes vous sûr de bien vouloir sauvegarder ces infos.
3) récupérer la valeur du bouton cliqué oui ou non et faire comme lenono me l'a montré un if then else
4) c'est gagné

Donc là où cela bloque c'est dans l'affichage de cette boite de dialogue oui / non...et je suis une vraie mule car je n'arrive pas à trouver cela sur le net et pourtant je suis sûr que cela existe ! ! !

En tous cas merci pour votre aide ! ! !
@+
Jérôme
jeje_974 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2011, 13h37   #5
Membre régulier
 
Étudiant
Inscription : octobre 2010
Messages : 92
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : octobre 2010
Messages : 92
Points : 78
Points : 78
Citation:
Envoyé par jeje_974 Voir le message
Donc là où cela bloque c'est dans l'affichage de cette boite de dialogue oui / non...et je suis une vraie mule car je n'arrive pas à trouver cela sur le net et pourtant je suis sûr que cela existe ! ! !
Tu n'as pas lu mon code.
Essaye de mettre ceci dans un .html et affiche le dans ton browser.

Code :
<script type="text/javascript">confirm("Etes-vous sur de vouloir modifier ?")</script>
zeclad01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2011, 13h50   #6
Invité de passage
 
Inscription : novembre 2008
Messages : 35
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 35
Points : 4
Points : 4
Super c'est exactement ce que je souhaite.
Mais comment tu récupères le oui ou le non...par le biais du :

Code :
1
2
3
 
if (confirm("Etes-vous sur de vouloir modifier ?" ))
{
Mais attend...là j'ai un problème : je le place où ce code :

Code :
1
2
 
<script type="text/javascript">confirm("Etes-vous sur de vouloir modifier ?")</script>
...dans modifer_enfant.php ?

Merci pour ton aide ! ! !
jeje_974 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2011, 14h15   #7
Membre régulier
 
Étudiant
Inscription : octobre 2010
Messages : 92
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : octobre 2010
Messages : 92
Points : 78
Points : 78
Pense à relire plusieurs fois les réponses. Je t'ai déjà tout expliqué en haut mais je reprends.

Dans ton fichier "modifer_enfant.php", tu ajoutes ce bout de code dans le "<head></head>" de préférence :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
function maFonction()
{
	if (confirm("Etes-vous sur de vouloir modifier ?" ))
	{
		var http;
		if (window.httpRequest)
		{
			// code for IE7+, Firefox, Chrome, Opera, Safari
			http = new httpRequest();
		}
		else
		{
			// code for IE6, IE5
			http = new ActiveXObject("Microsoft.http");
		}
 
		http.onreadystatechange=function()
		{
			if (http.readyState==4 && http.status==200)
			{
				// Action
			}
		}
		// On envoie au script
		http.open("POST","modifier_enfant_cible.php",true);
		http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
		// Là tu récupères le contenu de tes champs.
		value1 = "";
		value2 = "";
		http.send("var1=value1&var2=value2");
	}
}
Pense à modifier les lignes 28,29,30 et les adapter à ce que tu envoies en POST au script.

Puis tu modifies cette ligne :

Code :
<input type="submit" value="INSCRIRE EN BASE DE DONNEES" />
en

Code :
<button onClick="maFonction()">INSCRIRE EN BASE DE DONNEES</button>
zeclad01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2011, 14h38   #8
Invité de passage
 
Inscription : novembre 2008
Messages : 35
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 35
Points : 4
Points : 4
Pourquoi on ne met rien dans le http.readyState==4 etc... //Action ?

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
if (http.readyState==4 && http.status==200)
			{
				// Action
			}
		}
		// On envoie au script
		http.open("POST","modifier_enfant_cible.php",true);
		http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
		// Là tu récupères le contenu de tes champs.
		value1 = "";
		value2 = "";
		http.send("var1=value1&var2=value2");
	}
Tu me dis de mettre
value1 = "";
value2 = "";
mais je mets quoi entre les "" ? Un truc du genre : <?php echo $donnees['nom_enfant']; ?>

et à quoi correspond le var1 ?

J'suis un peu perdu là
jeje_974 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2011, 09h55   #9
Invité de passage
 
Inscription : novembre 2008
Messages : 35
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 35
Points : 4
Points : 4
Bonjour à tous,
Bon ben en fait c'était très simple, mais parfois on cherche vraiment des choses compliquées...voilà le code qui m'a permis de valider mes infos :

Code :
1
2
 
<button onClick="return confirm('Confirmer votre modification');">
Il y a deux boutons, un "OK" pour aller sur la page visée par le formulaire qui traite la requête et qui redirige vers la page qu'on veut,
ET
Un bouton Annuler qui nous permet de rester sur la page en cours...

C'est pas plus compliqué, même pas besoin d'écrire une fonction...d'ailleurs elle est déjà toute prête puisque c'est la fonction confirm() en javascript.

En espérant que cela puisse en aider parmi vous.
@+
Jérôme
jeje_974 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2011, 11h28   #10
Membre confirmé
 
Homme Arnaud
Inscription : décembre 2004
Messages : 167
Détails du profil
Informations personnelles :
Nom : Homme Arnaud
Âge : 40
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : décembre 2004
Messages : 167
Points : 238
Points : 238
Toute petite amélioration : RETURN FALSE

Code :
1
2
 
<button onClick="return confirm('Confirmer votre modification'); return false;">
Je te laisse cherche sur GooGle & Co...

Bonne journée,

lenono
lenono est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h46.


 
 
 
 
Partenaires

Hébergement Web