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 26/02/2011, 17h11   #1
Invité régulier
 
Inscription : juin 2010
Messages : 61
Détails du profil
Informations personnelles :
Âge : 23

Informations forums :
Inscription : juin 2010
Messages : 61
Points : 7
Points : 7
Envoyer un message via MSN à andaman
Par défaut Update et bouton radio

Bonjour à tous,

Je suis confronté à un problème d' UPDATE en boucle.
Dans l'update simple (voir ci-dessous) tout fonctionne.

Dans l'update multiple, il fonctionne sauf les boutons radios...

Dans l'update en boucle, je n'arrive pas à récupérer la valeur du bouton radio et je désire qu'un seul couple de bouton radio par groupe d'update. Pas moyen d'y arriver.

Si je mets mes boutons radios en dehors de ma boucle cela fonctionne visuellement mais c'est tout ...
Je vous laisse mon code php d'update multiple en bas de post
Est-ce que quelqu'un peut m'aider?

Merci d'avance,
David

L'update simple fonctionne et voici mon code:
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
 
<?php
include './views/menu.inc.php';
context_title(TXT_UPDATE_COUNTRY);
print_r($_POST);
$id_country = $_POST['id_country'];
$name_country = $_POST['name_country'];
$lang = $_POST['lang'];
$active = $_POST['active'];
$sql="SELECT * FROM country WHERE id_country='".$_GET['id_country']."'";
$result=mysql_query($sql);
$count=mysql_num_rows($result);
 
echo "<form name=\"update_country\" method=\"post\" action=\"\">\n";
 
while($rows=mysql_fetch_array($result)){
	echo "\t<input name=\"id_country\" type=\"hidden\" value=\"".$rows['id_country']."\"/>\n";
	echo "\t<input name=\"name_country\" type=\"text\" value=\"".$rows['name_country']."\"/>\n";
	echo " ".TXT_LANGUAGE." ".$rows['lang'].'<br />';
    echo "<input type=\"radio\" name=\"active\" value=\"1\"";
		if($rows['active'] == 1){
			echo "checked='checked'";
		} 
		echo"/>".TXT_YES;
		echo "<input type=\"radio\" name=\"active\" value=\"0\"";
			if($rows['active'] == 0){
				echo "checked='checked'";
			}
			echo "/>".TXT_NO;
}
echo "<input type=\"Submit\" name=\"button\" value=\"".TXT_SAVE."\"/>\n";
echo "</form>";
echo $update;
if(isset($_POST['button'])){
	for($i = 0;$i < $count;$i++){
		$update = "UPDATE country SET name_country='".$name_country."',active='".$active."' WHERE id_country='".$id_country."'";
		$result_update=mysql_query($update);
	}
}
if($result_update){
	echo TXT_UPDATE_OK;
	echo $update;
	echo "<meta http-equiv=\"refresh\" content=\"1;URL=?section=update_country&id_country=".$_GET['id_country']."&lang=".$_SESSION['lang']."\">";
}
?>
Update multiple:

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
 
<?php
include './views/menu.inc.php';
context_title(TXT_UPDATE_COUNTRY);
print_r($_POST);
$id_country=$_POST['id_country'];
$name_country=$_POST['name_country'];
$lang=$_POST['lang'];
$active = $_POST['active'];
$sql="SELECT * FROM country WHERE id_group='".$_GET['id_group']."'";
$result=mysql_query($sql);
$count=mysql_num_rows($result);
 
echo '<form name="update_country_group" method="post" action="">';
 
while($rows=mysql_fetch_array($result)){
	echo '<input name="id_country[]" type="hidden" value="'.$id_country[]=$rows['id_country'].'"/>';
	echo '<input name="name_country[]" type="text" value="'.$name_country[]=$rows['name_country'].'"';
	echo "/>";
	echo '<input name="id_group[]" type="hidden" value="'.$id_group[]=$rows['id_group'].'"/>';
	echo " ".TXT_LANGUAGE." ".$lang[]=$rows['lang']."\n"; 
 
echo "<input type=\"radio\" name=\"active[]\" value=\"1\"";
	if($active[] = $rows['active'] == 1){
		echo "checked='checked'";
	} 
	echo"/>".TXT_YES;
	echo "<input type=\"radio\" name=\"active[]\" value=\"0\"";
		if($active[] = $rows['active'] == 0){
			echo "checked='checked'";
		}
		echo "/>".TXT_NO;
 }
echo '<input type="Submit" name="button" value="Enregister"/>';
echo '</form>';
 
if(isset($_POST['button'])){
	for($i=0;$i<$count;$i++){
		$update ="UPDATE country SET name_country='".$name_country[$i]."',id_group='".$id_group[$i]."',lang='".$lang[$i]."',active='".$active[$i]."' WHERE id_country='".$id_country[$i]."'";
		$result_update=mysql_query($update);
		echo $update."<br>";
	}
}
if($result_update){
	echo TXT_UPDATE_OK;
	echo $update;
	echo "<meta http-equiv=\"refresh\" content=\"1;URL=?section=update_country_group&id_group=".$_GET['id_group']."&lang=".$_SESSION['lang']."\">";
}
?>
andaman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/02/2011, 08h51   #2
Invité régulier
 
Inscription : juin 2010
Messages : 61
Détails du profil
Informations personnelles :
Âge : 23

Informations forums :
Inscription : juin 2010
Messages : 61
Points : 7
Points : 7
Envoyer un message via MSN à andaman
Solution trouvée.
Je clôture et mets celle-ci:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
if(isset($_POST['button']) && $_POST['active'] == 1){
	for($i=0;$i<$count;$i++){
		$update ="UPDATE country SET name_country='".$name_country[$i]."',lang='".$lang[$i]."',active='1' WHERE id_country='".$id_country[$i]."'";
		$result_update=mysql_query($update);
		echo $update."<br>";
	}
}elseif(isset($_POST['button']) && $_POST['active'] == 0){
	for($i=0;$i<$count;$i++){
		$update ="UPDATE country SET name_country='".$name_country[$i]."',id_group='".$id_group[$i]."',lang='".$lang[$i]."',active='0' WHERE id_country='".$id_country[$i]."'";
		$result_update=mysql_query($update);
		echo $update."<br>";
	}
}
if($result_update){
	echo TXT_UPDATE_OK;
	echo $update;
	//echo "<meta http-equiv=\"refresh\" content=\"1;URL=?section=update_country_group&id_group=".$_GET['id_group']."&lang=".$_SESSION['lang']."\">";
}
andaman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/02/2011, 08h55   #3
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 708
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 708
Points : 3 278
Points : 3 278
Salut

Même si le formulaire d'update simple fonction, il y a une petite erreur, un petit détail qui n'est pas correcte.
Tu fais une boucle while, or, logiquement un country_id est unique, donc il ne peu avoir que 2 alternatives :
- soit la requête renvoie rien car le $_GET['id_country'] est incorecte, donc 0 ligne.
- soit le $_GET['id_country'] est correcte alors on obtiendra qu'une seule et unique ligne.

Dans les 2 cas une boucle est inutile.
Code :
$rows=mysql_fetch_array($result);
Ceci suffit.
Je rajouterais qu'utiliser $row comme nom est franchement pas intuitif du tout.
Vu que ce sont des "country", $country aurait largement mieux.
Rend ton code plus compréhensible, tu te remercieras lors des débogages.


Mise à part ces petites parenthèses, essai dans ce sens là pour le formulaire multiple :
Code :
1
2
3
4
 
echo '<input name="country['.$country['id_country'].'][name_country]" type="text" value="'.$country['name_country'].'" />';
echo '<input name="country['.$country['id_country'].'][id_group]" type="text" value="'.$country['id_group'].'" />';
... etc ...
Du coup, tu n'as pas besoin de champ caché, l'Identifiant fait parti du nom, c'est ça qui va permettre de retrouver ces petits.
Au bout, on devrait obtenir un dans $_POST un tableau "country".
Exploite une boucle foreach() sur $_POST['country'] et tu devrais obtenir les valeur comme name_country, id_group, etc ... pour chaque id_country.


En tout cas, il ne faut pas faire comme ceci : "country[]" car dans la même boucle le navigateur va incrémenter les autres éléments automatiquement, ce qui devient quasi impossible de les retrouver après validation.
Il faut donc soit même indiquer un identifiant, et le même pour tous les éléments, le changer uniquement à la boucle suivante (à tour de boucle).
Il est là le principe.


Autre point.
Tu prévois dans le déroulement de ton code de faire l'UPDATE à la fin, en dernier.
Tu fais un amalgame entre le déroulement du code HTML et celui de Php.
Il est largement mieux de faire l'UPDATE avant tout éléments HTML, par conséquent avant d'afficher le formulaire.
Par la même occasion, ça t'évitera de faire un "meta/refresh" qui franchement, est loin d'être très ergonomique.
Faut exploiter la fonction Php header(), elle est faite pour ça.
D'ailleurs, le fait d'afficher le contenu du formulaire avant de faire la mise à jour, ça veut dire que ce que l'on voit ne sera pas synchro, les valeurs affchées sont toujours les ancienne.
A l'inverse, faire l'UPDATE en 1er fera qu'après, les valeurs récupérées/affichées auront les même valeurs que celle mise à jour juste avant.

Toujours est il que lors de la validation du formulaire, le contenu de $_POST ser disponible dès la toute 1ère ligne de code de cette page, donc on peu l'exploiter dès cet instant.
Donc coté déroulement / chronologie, il serait mieux de faire :
1/ SI $_POST['button'] (donc SI faut faire un UPDATE) -> alors on le fait de suite.
D'ailleurs, ça laissera tout le loisir de détecter une erreur, et éventuellement stcker le message dans une variable ou tableau Php pour l'exploiter plus tard.
Ou inversement, avertir que la mise à jour a bien été effectuée.
Et dernièrement, on pourra faire une redirection (header) sans aucun problème si nécessaire.

2/ On récupère les données (SELECT). Les données seront alors synchro (qu'il y ait eu ou pas d'UPDATE précédemment).

3/ On génère la page HTML (doctype/formulaire).
Ici, s'il y a eu un message, on peu l'afficher là où on veut, et de la mise en forme qu'on veut.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/02/2011, 09h10   #4
Invité régulier
 
Inscription : juin 2010
Messages : 61
Détails du profil
Informations personnelles :
Âge : 23

Informations forums :
Inscription : juin 2010
Messages : 61
Points : 7
Points : 7
Envoyer un message via MSN à andaman
Merci de ta réponse.

Cependant je n'arrive pas à garder la valeur du bouton radio dans l'update multiple. Hors je le fais de la même façon que dans l'update simple.
As tu une idée?

Merci d'avance,

David
andaman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/02/2011, 09h32   #5
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 708
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 708
Points : 3 278
Points : 3 278
Citation:
Cependant je n'arrive pas à garder la valeur du bouton radio dans l'update multiple. Hors je le fais de la même façon que dans l'update simple.
Il faut justement pas faire de le même manière, car il y a une boucle, et du coup le navigateur lui même est déboussolé.

D'ailleurs, tu ne le fais pas de la même manière, dans le multiple, tu fais ceci pour les 2 boutons :
active[]

Reprends les explications que j'ai mis, et la façon de procéder (qui demandera de remanier un peu tout ça).

Faut comprendre qu'en faisant 2 fois ça : active[] ... active[] on dit explicitement au navigateur d'incrémenter automatiquement le futur tableau qui sera renvoyé.
Donc ça revient au même de faire ça pour les 2 premiers :
active[0] ... active[1] -> donc avoir 2 noms différents.
Or, un groupe de bouton radio DOIT avoir le même nom, c'est justement leur nom unique qui permettra d'avoir un groupe, donc 1 choix entre 2 (ou plusieurs) propositions.

Donc en faisant :
Code :
1
2
3
4
5
6
 
// Bouton 1
echo '<input type="radio" name="country['.$country['id_country'].'][active]" value="0" />';
 
// Bouton 2
echo '<input type="radio" name="country['.$country['id_country'].'][active]" value="1" />';
Ici, leur nom est unique, leur valeur : 0 et 1. Il y a juste à se préoccuper de checker le bon bouton selon la valeur dans la BDD.


En tout cas, la façon ici de structurer le formulaire est largement plus ergonomique.
Une simple boucle foeach() suffira pour mettre à jour tous les éléments, sans compter qu'on n'a pas besoin de champ caché.
Le champ caché est justement une astuce pour combler ce manque de structure.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/02/2011, 09h46   #6
Invité régulier
 
Inscription : juin 2010
Messages : 61
Détails du profil
Informations personnelles :
Âge : 23

Informations forums :
Inscription : juin 2010
Messages : 61
Points : 7
Points : 7
Envoyer un message via MSN à andaman
Encore un tout grand merci ;-)

Là je suis entrain de refaire l'update simple en suivant tes conseils.
Il fonctionne mais je n'arrive pas à récupérer la valeur du bouton radio. Hors il s'enregistre bien dans la bdd.
Voici mon code:

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
 
<?php
include './views/menu.inc.php';
context_title(TXT_UPDATE_COUNTRY);
$id_country = $_POST['id_country'];
$name_country = $_POST['name_country'];
$lang = $_POST['lang'];
$active = $_POST['active'];
$sql="SELECT * FROM country WHERE id_country='".$_GET['id_country']."'";
$result=mysql_query($sql);
$count=mysql_num_rows($result);
 
$country = mysql_fetch_array($result);
 
if(isset($_POST['button'])){
		$update = "UPDATE country SET name_country='".$name_country."',active='".$active."' WHERE id_country='".$id_country."'";
		$result_update=mysql_query($update);
}
if($result_update){
	echo TXT_UPDATE_OK;
	echo $update;
	header("Location: ".$_SERVER['REQUEST_URI']."");
}
?>
<form name="update_country" method="post" action="">
	<input name="id_country" type="hidden" value="<?php echo $country['id_country'];?>"/>
	<input name="name_country" type="text" value="<?php echo $country['name_country'];?>"/>
	<?php echo TXT_LANGUAGE.$country['lang'];?>
	<input type="radio" name="active" value="1"/>
	<?php echo TXT_YES;
	if($country['active'] == 1){
		echo "checked='checked'";
	}
	?>
	<input type="radio" name="active" value="0"/>
	<?php echo TXT_NO;
	if($country['active'] == 0){
		echo "checked='checked'";
	}
	?>
	<input type="submit" name="button" value="<?php echo TXT_SAVE;?>"/>		
</form>
andaman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/02/2011, 11h22   #7
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 708
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 708
Points : 3 278
Points : 3 278
Salut

Bien que tu ais remonté certains codes, tu effectue toujours la récupération des données (SELECT) avant de mettre à jour la Bdd.

Il est pourtant plus logique de faire l'UPDATE avant, pour la simple raison que l'affichage qui suit coté formulaire doit tenir compte de la mise à jours.
C'est entre autre pour ça à mon avis que tu faisais un refresh.

C'est à mon sens ça qui te cause problème.
Lors du SELECT, qui se fait en 1er récupère la valeur actuelle, donc pas encore celle mise à jour, il y a alors incohérence.


Mais ton code concernant ces boutons radios comportent des erreurs.
Les checked='checked' se trouvent en-dehors des balises <input ...etc ... />.
Essai dans ce genre là :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
$check0 = '';
$check1 = '';
if ((int)$country['active'] === 1)  {
    $check1 = 'checked="checked"';
}
else {
    $check0 = 'checked="checked"';
}
//
echo '<input type="radio" name="active" value="1" '.$check1.' />'.TXT_YES;
echo '<input type="radio" name="active" value="0" '.$check0.' />'.TXT_NO;
?>

Aussi, il ne faut pas faire de echo avant le header(), ça va te provoquer des erreurs.
De plus, ce n'est pas logique.
Quand on fait un header(), une redirection, ça sous entend qu'on ne souhaite plus poursuivre les traitement à l'endroit même où ce trouve le header(), mais que Php exécute un tout autre contenu, celui de la page indiquée du Location.
Donc le echo (l'affichage) ne sera de toute manière pas affichée.

Il faut comme ceci tout simplement :
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
 
if(isset($_POST['button'])) {
	$update = "UPDATE country
SET name_country = '".$name_country."',
active = '".$active."'
WHERE id_country='".$id_country."'";
    $result_update = mysql_query($update);
    //
    header("Location: la_page_formulaire.php?maj=Ok");
    exit();
}
// On récupère les données à cet instant (après l'UPDATE)
$sql = 'SELECT ... etc ...';
... etc ...
 
// On initialise un message d'avertissement si tel est le cas.
$message = NULL;
if(isset($_GET['maj'])) {
    if ($_GET['maj'] == 'Ok') {
        $message = TXT_UPDATE_OK;
    }
    elseif ($_GET['maj'] == 'Error') {
        $message = TXT_UPDATE_ERROR;
    }
}
?>
 
 
<doctype ...>
<html>
 
... etc ...
 
// Dans la partie HTML/Formulaire
if (!empty($message)) echo $message
?>
 
</html>
Ici, on sépare un peu mieux la partie traitements et HTML, ce qui évite certaines erreurs, mais surtout ça offre bien plus de possibilités que de tout mélanger.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/02/2011, 11h44   #8
Invité régulier
 
Inscription : juin 2010
Messages : 61
Détails du profil
Informations personnelles :
Âge : 23

Informations forums :
Inscription : juin 2010
Messages : 61
Points : 7
Points : 7
Envoyer un message via MSN à andaman
autant pour moi une bête erreur de ma part ! Cependant, je ne comprends pas où mettre mon select alors

voici le code corrigé des bts radios

Merci d'avance.

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
 
<?php
include './views/menu.inc.php';
context_title(TXT_UPDATE_COUNTRY);
$id_country = $_POST['id_country'];
$name_country = $_POST['name_country'];
$lang = $_POST['lang'];
$active = $_POST['active'];
$sql="SELECT * FROM country WHERE id_country='".$_GET['id_country']."'";
$result=mysql_query($sql);
$count=mysql_num_rows($result);
 
$country = mysql_fetch_array($result);
 
if(isset($_POST['button'])){
		$update = "UPDATE country SET name_country='".$name_country."',active='".$active."' WHERE id_country='".$id_country."'";
		$result_update=mysql_query($update);
}
if($result_update){
	echo TXT_UPDATE_OK;
	echo $update;
	header("Location: ".$_SERVER['REQUEST_URI']."");
}
?>
<form name="update_country" method="post" action="<?php echo $_SERVER['REQUEST_URI'];?>">
	<input name="id_country" type="hidden" value="<?php echo $country['id_country'];?>"/>
	<input name="name_country" type="text" value="<?php echo $country['name_country'];?>"/>
	<?php echo TXT_LANGUAGE.$country['lang']."<br />";?>
	<input type="radio" name="active" id="active" value="1"
	<?php 
	if($country['active'] == 1){
		echo "checked='checked'";
	} 
	?> 
	/>
	<?php echo TXT_YES	;?>
	<input type="radio" name="active" id="active" value="0"
	<?php
	if($country['active'] == 0){
		echo "checked='checked'";
	} 
	?> 
	/>
	<?php echo TXT_NO;?>
	<input type="submit" name="button" value="<?php echo TXT_SAVE;?>"/>		
</form>
andaman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/02/2011, 11h53   #9
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 708
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 708
Points : 3 278
Points : 3 278
Citation:
Cependant, je ne comprends pas où mettre mon select alors
Suffit de déplacer le code, faire le SELECT avant l'UPDATE.
Revois mon post, car je n'avais pas fini, il y a un exemple.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2011, 10h46   #10
Invité régulier
 
Inscription : juin 2010
Messages : 61
Détails du profil
Informations personnelles :
Âge : 23

Informations forums :
Inscription : juin 2010
Messages : 61
Points : 7
Points : 7
Envoyer un message via MSN à andaman
Voilà le code corrigé ;-)
Un tout grand merci.

Cependant, je ne comprends vraiment pas comment m'y prendre pour l'update multiple avec le bouton radio...

J'aimerai vraiment que l'on m'explique.
Merci d'avance,
David

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
 
<?php
include './views/menu.inc.php';
context_title(TXT_UPDATE_COUNTRY);
$id_country = $_POST['id_country'];
$name_country = $_POST['name_country'];
$lang = $_POST['lang'];
$active = $_POST['active'];
if(isset($_POST['button'])){
		$update = "UPDATE country SET name_country='".$name_country."',active='".$active."' WHERE id_country='".$id_country."'";
		$result_update=mysql_query($update);
		if($result_update){
			echo TXT_UPDATE_OK;
			echo $update;
			header("Refresh: 2; URL=".$_SERVER['REQUEST_URI']."");			
			exit();
		}else{
			echo "<a href=\"".$_SERVER["HTTP_REFERER"]." \">".TXT_BACK."</a>";
		}
}
$sql="SELECT * FROM country WHERE id_country='".$_GET['id_country']."'";
$result=mysql_query($sql);
$count=mysql_num_rows($result);
$country = mysql_fetch_array($result);
?>
<form name="update_country" method="post" action="<?php echo $_SERVER['REQUEST_URI'];?>">
	<input name="id_country" type="hidden" value="<?php echo $country['id_country'];?>"/>
	<input name="name_country" type="text" value="<?php echo $country['name_country'];?>"/>
	<?php echo TXT_LANGUAGE.$country['lang']."<br />";?>
	<input type="radio" name="active" id="active" value="1"
	<?php 
	if($country['active'] == 1){
		echo "checked='checked'";
	} 
	?> 
	/>
	<?php echo TXT_YES	;?>
	<input type="radio" name="active" id="active" value="0"
	<?php
	if($country['active'] == 0){
		echo "checked='checked'";
	} 
	?> 
	/>
	<?php echo TXT_NO;?>
	<input type="submit" name="button" value="<?php echo TXT_SAVE;?>"/>		
</form>
andaman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2011, 11h33   #11
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 708
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 708
Points : 3 278
Points : 3 278
Code :
1
2
3
4
5
6
7
8
		if($result_update){
			echo TXT_UPDATE_OK;
			echo $update;
			header("Refresh: 2; URL=".$_SERVER['REQUEST_URI']."");			
			exit();
		}else{
			echo "<a href=\"".$_SERVER["HTTP_REFERER"]." \">".TXT_BACK."</a>";
		}
Dans un 1er temps, laisse courir cette partie de code ci-dessus, à mon avis elle te mets le souk dans le déroulement de tout ça plus qu'autre chose.
Disons qu'il est bon d'éviter des complications.
Dans l'absolu, ce n'est pas utile.
(Mets ce code en commentaire provisoirement).
Juste dire quand même qu'on effectue une redirection juste pour éviter une double insertion/update quand on actualise la page coté navigateur, donc c'est pour éviter des désagréments.

Mais il ne faut pas mettre de "Refresh", ce n'est pas conforme, faut mettre "Location : url_de_la_page.php" comme l'exemple que j'ai mis.


Autre chose, je vois que tu utilise $_GET['id_country'].
Et aussi au niveau du formulaire : $_SERVER['REQUEST_URI']

Il serait mieux de mettre dans l'attribut "action" du formulaire l'URL de la page, et rajouter en GET l'id_country.
Exemple :
Toujours à faire le plus tôt possible, juste avant la requête SELECT
-> On récupère l'id_country passé en GET :
Code :
1
2
3
4
5
6
<?php
if (!isset($id_country)) $id_country = 0;
if (isset($_GET['id_country'])) $id_country = (int)$_GET['id_country'];
// La requête
$sql = 'SELECT ... etc ... WHERE id_country = '.(int)$id_country;
?>
Partie Formulaire :
Code :
1
2
 
<form ... etc ... action="la_page.php?id_country=<?php echo $id_country; ?>" />
En somme, évite les trucs trop automatisés, ça rend les choses plus floues.
Le nom de cette page est forcément connue, et les paramètres à recevoir tout comme à transmettre doivent l'être aussi.

Aide toi aussi en faisant des echo, print_r($_GET), print_r($_POST) sur certaines données pour voir IN VISU, ça aide à comprendre.
A coté de ça, c'est pas tout de dire qu'on ne comprend pas, faut expliquer ce qui semble flou, douteux, etc ...
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h13.


 
 
 
 
Partenaires

Hébergement Web