Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
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 28/10/2009, 15h41   #1
Membre habitué
 
Inscription : octobre 2008
Messages : 26
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 26
Points : 105
Points : 105
Par défaut Ajouter une ligne dans un tableau

Bonjour à toutes et à tous.
Je travail actuellement sur un logiciel et je suis confronté à un petit problème... Un premier formulaire me propose de créer un certain nombre d'étapes (autant que l'utilisateur le souhaite). Une fois son choix effectué, je lui génère autant de champs que nécessaire. Dans l'exemple de ma capture d'écran , l'utilisateur à demander à créer 3 étapes.

Les numéros d'étapes sont générés automatiquement grâce à une boucle for (le $_SESSION['suivi_nbetapes'] étant la variable récupéré du premier formulaire):

Code :
for($nbetapes=1;$nbetapes<=$_SESSION['suivi_nbetapes'];$nbetapes++)



Si mon utilisateur décide de supprimer une étape, il clique sur l'icône "croix rouge" ce qui supprime cette étape (sans supprimer le reste bien sûr) et repositionne le reste automatiquement. Par exemple, si l'utilisateur supprime l'étape 2, le A reste en étape 1 mais le C passe en étape 2. Cette partie fonctionne très bien mais là où le bas blesse, c'est au niveau de l'autre option...
Pour être plus clair, ça donne ça :
Etape 1 : A
Etape 2 : C

En effet, j'aimerai aussi que l'utilisateur puisse rajouter une étape vide entre deux étapes existantes via l'icône "flèche bleue". Par exemple, si l'utilisateur clique sur la flèche bleu de l'étape 1 (A), le A reste étape 1, une étape 2 vide se créé, le B devient étape 3 et le C étape 4... Et c'est là que ça coince, je n'arrive pas à générer cette étape vide entre deux étapes existantes !
Pour être plus clair, ça doit donner ça :

Etape 1 : A
Etape 2 :
Etape 3 : B
Etape 4 : C

Voici tout d'abord le code de ma suppression qui fonctionne bien :

Code :
1
2
3
4
5
6
7
//Remise à niveau du nombre d'étapes
for($nbetapes=1;$nbetapes<=$_SESSION['suivi_nbetapes'];$nbetapes++)
{
   if($nbetapes >= $id)
        $_SESSION['suivi_intitule'][$nbetapes] = $_SESSION['suivi_intitule'][$nbetapes+1];
}
$_SESSION['suivi_nbetapes'] = $_SESSION['suivi_nbetapes']-1
;


J'ai essayé de retourner ce code dans tous les sens pour obtenir l'effet inverse mais rien à faire, ça ne fonctionne pas... Est-ce que quelqu'un à une solution s'il vous plaît?
Merci beaucoup !
kenru est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2009, 16h02   #2
Membre Expert
 
Avatar de Fench
 
Inscription : mai 2002
Messages : 1 570
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : mai 2002
Messages : 1 570
Points : 1 703
Points : 1 703
Salut,

Essayes sur le même style:
Code :
1
2
3
4
5
6
7
8
 
//Remise à niveau du nombre d'étapes
for($nbetapes=$_SESSION['suivi_nbetapes']+1;$nbetapes>$id;$nbetapes--)
{
        $_SESSION['suivi_intitule'][$nbetapes] = $_SESSION['suivi_intitule'][$nbetapes-1];
}
$_SESSION['suivi_nbetapes'] = $_SESSION['suivi_nbetapes']+1
//reste le cas du $id
__________________
Actuellement AI à l'INRA
fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)
Fench est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2009, 16h10   #3
Membre habitué
 
Inscription : octobre 2008
Messages : 26
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 26
Points : 105
Points : 105
Salut Fench et merci pour ta réponse.
J'ai essayé ton code et voici le résultat (en ajoutant une étape après la 1) :

Etape 1 : A
Etape 2 : A
Etape 3 : B
Etape 4 : C
Etape 5 :

Comme tu peux le voir, il me créé un autre A et me rajoute l'étape vide en dernier...

EDIT : J'ai rien dit pour l'étape vide (5). C'est moi qui est fait un doublon. J'ai juste le A en double...

EDIT 2 : C'est bon j'ai trouvé ! Voici la solution :

Salut et merci de ta réponse.
Pendant que tu écrivais ton message, je suis arrivé à une solution mais qui ne correspond pas trop à ta proposition. Si quelqu'un se retrouve un jour confronté à ce problème, voici ma solution :

Code :
1
2
3
4
5
6
7
8
//Remise à niveau du nombre d'étapes
for($nbetapes=$_SESSION['suivi_nbetapes']+1;$nbetapes>$id;$nbetapes--)
{
   if($nbetapes == $id+1)
         $_SESSION['suivi_intitule'][$id+1] = "";
   else
         $_SESSION['suivi_intitule'][$nbetapes] = $_SESSION['suivi_intitule'][$nbetapes-1];
}
Merci encore, a+

Dernière modification par kenru ; 28/10/2009 à 16h23.
kenru 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 +1. Il est actuellement 00h30.


 
 
 
 
Partenaires

Hébergement Web