IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

[MySQL] Ajout champs générés dans BDD [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    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 : 14
    Points
    14
    Par défaut [MySQL] Ajout champs générés dans BDD
    Bonjour,

    Je crée actuellement des formulaires de saisie qui alimente une base de donnée, mais je bloque sur l’insertion de champs générés.

    Les champs sont générés à l’aide d’une fonction Javascript.
    Pour se donner une idée de l'interface, l'utilisateur a la possibilité de saisir un champ et d'appuyer sur un bouton pour en ajouter d'autres.

    Au niveau de l'affichage et de la saisie, pas de problème, je génère bien les champs avec un name et une value.

    Je pensais créer une boucle While et grace à mysql_fetch_array(), ajouter la valeur de mes champs dans chaque row[]. Mais je n'y parviens pas

    Voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    <?
    //mes champs generes
    if (isset($_POST['nbreLigneAct']))
    		{
    			for ($i=1;$i<$_POST['nbreLigneAct'];$i++)
    			{ ?>
    				<tr>
    					<td class="action_soutien"><textarea rows='5' cols="25" name='ActAct<?php echo ($i+2);?>'><?php $nomAct="ActAct".($i+2); if(!empty($_POST[$nomAct])) echo $_POST[$nomAct]; ?></textarea></td>
    					<td class="action_soutien"><textarea rows='5' cols="15" name='ActObj<?php echo ($i+2);?>'><?php $nomObj="ActObj".($i+2); if(!empty($_POST[$nomObj])) echo $_POST[$nomObj]; ?></textarea></td>
    					<td class="action_soutien"><textarea rows='5' cols="15" name='ActPil<?php echo ($i+2);?>'><?php $nomPil="ActPil".($i+2); if(!empty($_POST[$nomPil])) echo $_POST[$nomPil]; ?></textarea></td>
    				</tr>
    			<?}
    		}?>
    <div id=saisiesAct></div>
    <div align=center><input type=button value="+" onclick=AjouterAction()></div>
    <input type="hidden" name="nbreLigneAct" value="<?if (isset($_POST['nbreLigneAct'])) echo $_POST['nbreLigneAct']; else echo "1";?>" id="NbreLigneAct" />
    <input type="submit" name="BtdbEnvoyer" value="Enregistrer" />
     
    <?		
    //ajout des champs generes
    $requete = mysql_query("SELECT * FROM action_has_tdb") or die("Erreur de requête<br>".mysql_error()); 
     
    while ($row = mysql_fetch_array($requete)) 
    {
    	$result= mysql_query("
    	INSERT INTO indicaperf.action_has_tdb (`idTdb`,`Action`,`Objectif`,`Pilote`)
    	VALUES(' ','$row[$nomAct]', '$row[$nomObj]', '$row[$nomPil]'")
    	or die(mysql_error());
    }
    ?>
    Si quelqu'un pourrait me mettre sur une bonne piste...

    Merci d'avance

  2. #2
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 488
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 488
    Points : 6 037
    Points
    6 037
    Par défaut
    C'est quoi le message d'erreur ?
    Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    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 : 14
    Points
    14
    Par défaut
    Pas de message d'erreur, le problème étant que je n'insère rien dans ma base.

    J'ai effectué une modif, j'ai remplacé mon While par le For que j'ai un peu plus haut.

    C'est mieux, j'ai des insertions, malheureusement vide. Et cette fois-ci un message d'erreur comme quoi mes variables ne sont pas définies.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    //ajout des champs generes
    $requete = mysql_query("SELECT * FROM action_has_tdb") or die("Erreur de requête<br>".mysql_error()); 
    for ($i=1;$i<$_POST['nbreLigneAct'];$i++)
    {
    	$result= mysql_query(" INSERT INTO indicaperf.action_has_tdb (`idTdb`,`Action`,`Objectif`,`Pilote)	VALUES('$dernierEnr','".$_POST['$nomAct']."', '".$_POST['$nomObj']."', '".$_POST['$nomAct']."', '".$_POST['$nomEch']."',
    	'".$_POST['$nomAvan']."', '".$_POST['$nomComm']."')")
    	or die(mysql_error());
    }
    Alors que quand je fais un Print_r($_POST), je vois bien la valeur des post

  4. #4
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 488
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 488
    Points : 6 037
    Points
    6 037
    Par défaut
    En faite, il faut tester ta variable.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(isset($_POST['xxx'])){...}
    De plus, je crois qu'il s'agit d'un problème dans la variable dynamique présent dans l'index du poste. Je pense que tu voulais récupérer les données présent dans ActAct<?php echo ($i+2);?> => $_POST['ActAct"+$i+"'] ... Un truc comme ça, j'ai pas de grande visibilité sur ton code.
    Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    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 : 14
    Points
    14
    Par défaut
    Hello,


    Je pense que tu voulais récupérer les données présent dans ActAct<?php echo ($i+2);?> => $_POST['ActAct"+$i+"']

    Exactement, je viens de reprendre et j'ai enfin le résultat voulu, j'ai plus qu'a mettre ça au propre.

    Voici la syntaxe de la boucle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    for ($i=1;$i<$_POST['nbreLigneAct'];$i++)
    		{	
     
    			$result= mysql_query(" INSERT INTO indicaperf.action_has_tdb (`idTdb`,`Action`,`Objectif`,`Pilote`,`Echeance`,`PourcentAvancement`,`Commentaire`)
    			VALUES('$dernierEnr','".$_POST['ActAct'.($i+1)]."', '".$_POST['ActObj'.($i+1)]."', '".$_POST['ActPil'.($i+1)]."',
    			'".$_POST['ActEch'.($i+1)]."')")
    			or die(mysql_error());
    		}
    J'espère que je ne fais pas fausse route en employant ce genre de solution, mais au moins, ça marche

    Merci pour ta participation.

  6. #6
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 488
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 488
    Points : 6 037
    Points
    6 037
    Par défaut
    Citation Envoyé par Code85 Voir le message
    Hello,





    Exactement, je viens de reprendre et j'ai enfin le résultat voulu, j'ai plus qu'a mettre ça au propre.

    Voici la syntaxe de la boucle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    for ($i=1;$i<$_POST['nbreLigneAct'];$i++)
    		{	
     
    			$result= mysql_query(" INSERT INTO indicaperf.action_has_tdb (`idTdb`,`Action`,`Objectif`,`Pilote`,`Echeance`,`PourcentAvancement`,`Commentaire`)
    			VALUES('$dernierEnr','".$_POST['ActAct'.($i+1)]."', '".$_POST['ActObj'.($i+1)]."', '".$_POST['ActPil'.($i+1)]."',
    			'".$_POST['ActEch'.($i+1)]."')")
    			or die(mysql_error());
    		}
    J'espère que je ne fais pas fausse route en employant ce genre de solution, mais au moins, ça marche

    Merci pour ta participation.
    Oui c'est correcte dans le principe mais tu devrais mettre un poil plus de test.
    Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ajouter des enregistrements dans BDD sans Access installé
    Par bibilolo2 dans le forum Général VBA
    Réponses: 2
    Dernier message: 11/06/2009, 12h27
  2. ajouter champs remarque dans SQL
    Par dmimnet dans le forum Langage SQL
    Réponses: 1
    Dernier message: 30/04/2009, 22h46
  3. Probleme ajout d'enregistrement dans bdd Access
    Par freerider74 dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 19/11/2008, 10h53
  4. Comparer les champs générés dans un état
    Par natadel dans le forum Access
    Réponses: 2
    Dernier message: 14/09/2007, 11h32
  5. ajout champ text dans select
    Par maximenet dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 24/03/2006, 11h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo