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 :

Recuperer les champs avant insertion dans la base de données. [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 185
    Points : 79
    Points
    79
    Par défaut Recuperer les champs avant insertion dans la base de données.
    Bonjour à toutes et tous,
    Tout d'abord 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
     
    define("ANNEEN2", date('Y')-2 );
    define("ANNEEN1", date('Y')-1 );
    define("ANNEE_0", date('Y'));
    define("ANNEE_1", date('Y')+1 );
    define("ANNEE_2", date('Y')+2 );
     
     
    function InputCompte( $debut, $fin, $libelle, $categorie, $i, $bdd )	 {
       $input='<tr>';
       $input.='<td class="libelle">
                <input type="hidden" name="categorie'.$i.'" value="'.$categorie.'">
                <input type="hidden" name="libelle'.$i.'" value="'.$libelle.'">'.$libelle.'</td>	';
       for ( $periode = $debut ; $periode <= $fin ; $periode++ ) 
       {        	                   				   
          $input.='<td class="cel90r"><input type="text"  class="cel90r" id="'.str_replace(" ","_","montant".$i.$periode).'" name="'.str_replace(" ","_","montant".$i.$periode).'" value="" /></td>
    			<td class="cel45r"></td>';
    			}	 
    		 $input.='</tr>'; 	       	   							
    	return $input;
    	}
    Ce bout de code me permet de 'générer' des noms de champs différents pour chaque item ... Ensuite je veux récupérer ces champs pour les insérer dans la base ... et je bloque sur les 'montants' (voir ci dessous) . Auriez vous une idée ou une solution à me proposer ? D'avance merci.

    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
     
    if(isset($_POST['btnAjouter'])) {	 
       // $compteResultat[$i]=array('libelle','categorie',MontantN-2, MontantN-1, MontantN, MontantN+1, MontantN+2) 
       for( $i=1 ; $i<= 2; $i++ ) {	
       $categorie  = cleanData($_POST['categorie'.$i.'']) ; // -> OK
       $libelle       = cleanData($_POST['libelle'.$i.'']) ; // -> OK
       $montant    =    // -> ?
     
       //$annee          = substr(cleanData($_POST[''.'montant'.$i.$periode.''],-4,4));	
     
    $req = $bdd->prepare("INSERT INTO ecriture (ecrit_idprospects, ecrit_categorie, ecrit_libelle, ecrit_montant, ecrit_annee ) VALUES (:idprospects, :categorie, :libelle, :montant, :annee)");
    $req->execute(array(
    										   ':idprospects'    => $idprospects ,
    										   ':categorie'      => $categorie ,
    										   ':libelle'        => $libelle ,
    										   ':montant'        => $montant ,
    										   ':annee'									 => $annee
    										   ));							   
       }   
    }

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Le plus simple au départ est de voir ce que retourne un var_dump

    Ensuite tu as une boucle pour le input montant dans ta function InputCompte.
    Ce qui laisse sous entendre que tu peux avoir plusieurs input pour le montant, la question est de savoir, que dois tu reprendre comme information de ces différents Input montant.

    Une fois que tu as définis cela, alors on peut travailler à améliorer ton code.

    Petite piste, pense en terme de tableau pour récupérer tes montants, plutôt que d'essayer de créer des noms dont tu ne connais pas à l'avance comment ils pourront se nommer.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 185
    Points : 79
    Points
    79
    Par défaut
    Bonjour, Gérard, merci de ta réponse.
    En fait mes champs 'montant' vont s’appeler : montant.$i.$periode > montant12014, montant22014, montant32014 par exemple.
    Quand tu parles de tableau, à quoi penses tu exactement ?
    car je connais le nom des lignes $i (voir $libelle, mais j'ai un risque qu'il ne soit pas unique)
    et des colonnes : libelle.$i, montant.$i2012, montant.$i2013, montant.$i2014, montant.$i2015, montant.$i2016 + catégorie.

    La difficulté que je rencontre c'est que j'ai plusieurs montants correspondant au même libellé, donc j'enregistre le libellé puis je dois faire une boucle pour enregistrer les montants un par un, mais comment "recupérer" les montants ?

  4. #4
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Réexplique moi ce que tu veux faire exactement !

    Comment peux-tu avoir plusieurs montant sur un seul intitulé ?

    Perso et ne connaissant pas ta problématique, j'écrirais comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
       for ( $periode = $debut ; $periode <= $fin ; $periode++ ) 
       {        	                   				   
          $input.='<td class="cel90r"><input type="text"  class="cel90r" id="'.str_replace(" ","_","montant".$i.$periode).'" name="montant[]" value="" /></td>
    			<td class="cel45r"></td>';
    			}

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 185
    Points : 79
    Points
    79
    Par défaut
    En fait, en te faisant passer l’entête du tableau, tu devrais te faire une idée : (il y a $i lignes et les colonnes sont bornées avec $début et $fin dans la fonction)
    Code html : 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
    <thead>
    	<tr>
    		<th colspan="5"></th>
    		<th colspan="4" class="celHeader">PREVISIONNELS</th>
    	</tr>
    	<tr>
    		<td class="libelle"></td>
    		<!--<td colspan="2" class="celHeader">Année N-2</td>-->
    		<td colspan="2" class="celHeader">Année N-1</td>
    		<td colspan="2" class="celHeader">Année N</td>
    		<td colspan="2" class="celHeader">Année N+1</td>
    		<td colspan="2" class="celHeader">Année N+2</td>
    	</tr>
    	<tr>
    		<td class="libelle"></td>
    		<!--<td  class="celHeader">Montant (€)</td>
    		<td  class="celHeader">(%)</td>-->
    		<td  class="celHeader">Montant (€)</td>
    		<td  class="celHeader">(%)</td>
    		<td  class="celHeader">Montant (€)</td>
    		<td  class="celHeader">(%)</td>
    		<td  class="celHeader">Montant (€)</td>
    		<td  class="celHeader">(%)</td>
    		<td  class="celHeader">Montant (€)</td>
    		<td  class="celHeader">(%)</td>
    	</tr>
    </thead>

  6. #6
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    C'est bien ce que je te dit, fait name="montant[]" et un var_dump tu comprendras

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 24/05/2013, 16h04
  2. Vérifier données avant insertion dans une base de données
    Par massbbc dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 05/09/2010, 11h08
  3. Controles des champs avant insertion dans la base de donnees avec talend
    Par tchanga dans le forum Développement de jobs
    Réponses: 3
    Dernier message: 16/06/2008, 16h56
  4. Réponses: 1
    Dernier message: 11/09/2006, 10h45
  5. [MySQL] Eviter les doublons à l'insertion dans une base
    Par leloup84 dans le forum PHP & Base de données
    Réponses: 23
    Dernier message: 26/01/2006, 15h26

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