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, 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
Candidat au titre de Membre du Club
 
Date d'inscription: octobre 2008
Messages: 26
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 :
//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
Vieux 28/10/2009, 16h02   #2
Expert Confirmé
 
Avatar de Fench
 
Date d'inscription: mai 2002
Localisation: Auvergne
Messages: 1 567
Par défaut

Salut,

Essayes sur le même style:
Code :
 
//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 actuellement connecté   Envoyer un message privé Réponse avec citation
Vieux 28/10/2009, 16h10   #3
Candidat au titre de Membre du Club
 
Date d'inscription: octobre 2008
Messages: 26
Par défaut

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 :
//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
NEWS PHPFAQ PHPCours PHPSources PHPLivres PHPScripts PHPOutils PHPComparatifsZend Framework

Réponse Proposer ce sujet en actualité

Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non



Fuseau horaire GMT +1. Il est actuellement 15h59.


Vos questions techniques : forum d'entraide PHP - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Hébergement - Participez - Copyright © 2000-2010 www.developpez.com - Legal informations.