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 15/07/2011, 15h27   #1
Invité régulier
 
Homme
Développeur Web
Inscription : mai 2011
Messages : 24
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2011
Messages : 24
Points : 8
Points : 8
Par défaut [PHP/MySQL] Auto-increment à l'actualisation

Bonjour à tous,

Dans un formulaire, un tableau (generé en fonction du contenu de ma base) me pose un problème.

J'explique:
Si j'ai 5 lignes dans ma base, mon tableau aura 5 lignes avec pour chaque, une bouton "Archiver".
En cliquant sur ce dernier, je fais un INSERT vers une autre table, puis un DELETE.
La page est rafraichie et me raffiche le tableau avec la ligne qui a été archivé en moins.

Pour effectuer le traitement d'archivage, je recupere dans un champ de type hidden l'id de la ligne voulue.

Sauf qu'a chaque actualisation de page, mon id s'incremente de 1.

A cause de ca, c'est toujours la derniere ligne qui est archivée, quelque soit le bouton sur lequel j'appui.

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
<table id=saisiesAct>
	<tr>
		<th><b>COLONNE1</b></th>
		<th><b>COLONNE2</b></th>
		<th class="action"><b>Archiver?</b></th>
	</tr>	
	<? 
		// ici il y a le traitement PHP pour afficher le contenu de ma base
	?>
	<input type="hidden" name="idVille" value="<?
		//je recupere l'idVille de ma base dans ce champ caché
		echo $row['idVille']; 
		//je le mets en session pour l'utiliser dans mon traitement
		$_SESSION['ID_VILLE'] = $_POST['idVille'];
	?>" id="idVille">
	<tr>
		<td><textarea rows='5' name='Act1[]'></textarea></td>	
		<td><textarea rows='5' name='Act2[]'></textarea></td>
		<td><input type="submit" name="BarchAct" value="Archiver" onclick="SupprAction($i)"></input></td>
	</tr>
	<?
	//$i++ car je suis dans un while...
	$i++;
	}
	//si clic sur Archiver, deplacement de la ligne dans la table d'archivage pour ne plus l'afficher
	if(isset($_POST['BarchAct']))
	{
		if(!isset($_SESSION['is_deja_fait']) || !$_SESSION['is_deja_fait'])
		{
			$sqlCop = "INSERT INTO VilleArchive SELECT * FROM Ville WHERE id = '".$_SESSION['ID_VILLE']."'";
			$sqlDel = "DELETE FROM Ville WHERE id = '".$_SESSION['ID_VILLE']."'";
			$resCop = mysql_query($sqlCop);
			$resDel = mysql_query($sqlDel);
			$_SESSION['is_deja_fait']=true;
			echo "<meta http-equiv='refresh' content='0; URL=monFormulaire.php'>";
		}	
	}
	unset($_SESSION['is_deja_fait']);
	unset($_SESSION['ID_VILLE']);
 
?>
</table>
Je comprends pas, si quelqu'un peut m'aider à y voir plus clair
Code85 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/07/2011, 15h32   #2
Rédacteur/Modérateur
 
Avatar de David55
 
Homme David S.
Etudiant en alternance
Inscription : août 2010
Messages : 1 167
Détails du profil
Informations personnelles :
Nom : Homme David S.
Âge : 22
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Etudiant en alternance
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2010
Messages : 1 167
Points : 2 304
Points : 2 304
As tu initialiser $i à 0 avant ta boucle while?
__________________
Vous trouverez ma page perso avec des tutoriels sur Android et BIRT au lien suivant : http://dsilvera.developpez.com
N'oubliez pas de voter pour les messages dont la réponse est pertinente (en bas à droite du cadrant)
Vous voulez afficher du code :
Votre problème est résolu :
Pas de question technique par MP !
David55
David55 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/07/2011, 15h35   #3
Invité régulier
 
Homme
Développeur Web
Inscription : mai 2011
Messages : 24
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2011
Messages : 24
Points : 8
Points : 8
Oui oui j'aurai peut être du l'enlever pour l'exemple.
Code85 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/07/2011, 15h47   #4
Rédacteur/Modérateur
 
Avatar de David55
 
Homme David S.
Etudiant en alternance
Inscription : août 2010
Messages : 1 167
Détails du profil
Informations personnelles :
Nom : Homme David S.
Âge : 22
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Etudiant en alternance
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2010
Messages : 1 167
Points : 2 304
Points : 2 304
D'après ce que je vois, ta ligne:
Code :
$_SESSION['ID_VILLE'] = $_POST['idVille'];
Est à l'intérieur de ta boucle!!!
Elle contiendra donc toujours la valeurs de la dernière itération!
Cette valeur n'es pas censé changer lorsqu'on clique sur le bouton?
__________________
Vous trouverez ma page perso avec des tutoriels sur Android et BIRT au lien suivant : http://dsilvera.developpez.com
N'oubliez pas de voter pour les messages dont la réponse est pertinente (en bas à droite du cadrant)
Vous voulez afficher du code :
Votre problème est résolu :
Pas de question technique par MP !
David55
David55 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/07/2011, 15h53   #5
Invité régulier
 
Homme
Développeur Web
Inscription : mai 2011
Messages : 24
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2011
Messages : 24
Points : 8
Points : 8
En effet, j'ai voulu contourner le problème en supprimant cette ligne et en utilisant directement mon $_POST['idVille'] dans mon traitement php.
Mais le résultat reste le même...

La variable de session ne sert à pas grand chose ici
Code85 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/07/2011, 15h59   #6
Rédacteur/Modérateur
 
Avatar de David55
 
Homme David S.
Etudiant en alternance
Inscription : août 2010
Messages : 1 167
Détails du profil
Informations personnelles :
Nom : Homme David S.
Âge : 22
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Etudiant en alternance
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2010
Messages : 1 167
Points : 2 304
Points : 2 304
Citation:
La variable de session ne sert à pas grand chose ici
Oups, alors on n'a pas le même code du coup???
Code :
1
2
3
 
$sqlCop = "INSERT INTO VilleArchive SELECT * FROM Ville WHERE id = '".$_SESSION['ID_VILLE']."'";
$sqlDel = "DELETE FROM Ville WHERE id = '".$_SESSION['ID_VILLE']."'";
Essaye plutot ceci:
Code :
1
2
3
 
$sqlCop = "INSERT INTO VilleArchive SELECT * FROM Ville WHERE id = '".$_POST['idVille']."'";
$sqlDel = "DELETE FROM Ville WHERE id = '".$_POST['idVille']."'";
__________________
Vous trouverez ma page perso avec des tutoriels sur Android et BIRT au lien suivant : http://dsilvera.developpez.com
N'oubliez pas de voter pour les messages dont la réponse est pertinente (en bas à droite du cadrant)
Vous voulez afficher du code :
Votre problème est résolu :
Pas de question technique par MP !
David55
David55 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/07/2011, 16h07   #7
Invité régulier
 
Homme
Développeur Web
Inscription : mai 2011
Messages : 24
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2011
Messages : 24
Points : 8
Points : 8
Du coup, ça donne:

Code :
1
2
$sqlCop = "INSERT INTO VilleArchive SELECT * FROM Ville WHERE id = '".$_POST['idVille']."'";
$sqlDel = "DELETE FROM Ville WHERE id = '".$_POST['idVille']."'";
Et si j'echo mon $_POST['idVille'] il n'y a rien dedans, c'est bizare


EDIT: j'etais en train de rediger en même temps
Code85 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/07/2011, 16h17   #8
Rédacteur/Modérateur
 
Avatar de David55
 
Homme David S.
Etudiant en alternance
Inscription : août 2010
Messages : 1 167
Détails du profil
Informations personnelles :
Nom : Homme David S.
Âge : 22
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Etudiant en alternance
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2010
Messages : 1 167
Points : 2 304
Points : 2 304
Ton formulaire est bien en POST??? Sinon il est peut être en GET! Qu'as tu dans ton URL quand tu cliques sur le bouton?
__________________
Vous trouverez ma page perso avec des tutoriels sur Android et BIRT au lien suivant : http://dsilvera.developpez.com
N'oubliez pas de voter pour les messages dont la réponse est pertinente (en bas à droite du cadrant)
Vous voulez afficher du code :
Votre problème est résolu :
Pas de question technique par MP !
David55
David55 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/07/2011, 16h21   #9
Invité régulier
 
Homme
Développeur Web
Inscription : mai 2011
Messages : 24
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2011
Messages : 24
Points : 8
Points : 8
Oui je suis bien en method=post.

J'ai pas mal de donnée a traiter, il y a que la partie "Archivage" qui fait de la resistance...

Je dois filer et reprendrai ça dès lundi. Merci pour ta participation
Code85 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/07/2011, 16h38   #10
Rédacteur/Modérateur
 
Avatar de David55
 
Homme David S.
Etudiant en alternance
Inscription : août 2010
Messages : 1 167
Détails du profil
Informations personnelles :
Nom : Homme David S.
Âge : 22
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Etudiant en alternance
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2010
Messages : 1 167
Points : 2 304
Points : 2 304
Citation:
Envoyé par Code85 Voir le message
Oui je suis bien en method=post.

J'ai pas mal de donnée a traiter, il y a que la partie "Archivage" qui fait de la resistance...

Je dois filer et reprendrai ça dès lundi. Merci pour ta participation
Ba de rien mais on n'a pas encore trouvé !

En revanche, j'aimerai bien connaitre la valeur de la ligne 12 dans ce cas la!
__________________
Vous trouverez ma page perso avec des tutoriels sur Android et BIRT au lien suivant : http://dsilvera.developpez.com
N'oubliez pas de voter pour les messages dont la réponse est pertinente (en bas à droite du cadrant)
Vous voulez afficher du code :
Votre problème est résolu :
Pas de question technique par MP !
David55
David55 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2011, 08h51   #11
Invité régulier
 
Homme
Développeur Web
Inscription : mai 2011
Messages : 24
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2011
Messages : 24
Points : 8
Points : 8
hello,

Me revoila.
Et bien mon $row['idVille'] prends bien les valeurs de l'id correspondant en base de donnée.

Extrait de mon source si j'ai deux lignes:
Code :
1
2
3
4
<input type="hidden" name="idServ" value="606">
[...]
<input type="hidden" name="idServ" value="607">
[...]
C'est pour cela qu'au debut je comptais le mettre en $_SESSION pour l'utiliser dans mes traitements. Ensuite j'ai essayé avec le $_POST, toujours pareil, c'est toujours la dernière ligne qui s'archive

Comme j'expliquai dans mon premier message, dès que j'actualise ma page, mes id s'incrementent de 1 dans ma base. Mais au final, je ne pense pas que cela puisse avoir un impact sur ce que je veux faire. Si j'affiche à nouveau mon code source, les valeurs passent aussi à +1 (donc 608 et 609 dans l'exemple ci-dessus).
Code85 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2011, 11h21   #12
Invité régulier
 
Homme
Développeur Web
Inscription : mai 2011
Messages : 24
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2011
Messages : 24
Points : 8
Points : 8
Bonjour,

Je m'y suis pris tout autrement en mettant des checkbox à la place des boutons "Archiver" au bout de chaques lignes.

Prolème résolu.
Code85 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 22h06.


 
 
 
 
Partenaires

Hébergement Web