Variable en non de champs
delaville81
Messages postés
209
Statut
Membre
-
Xavierdu34 Messages postés 223 Statut Membre -
Xavierdu34 Messages postés 223 Statut Membre -
Chers confrères,
Je sollicite votre aide en PHP.
J'ai créer un suivi de règlements de cotisations.
Pour pouvoir gérer plusieurs années, j'ai utilisé un tableau années.
Ma requête d'insert récupère le même tableau.
mon problème et que j'aimerais utilisé ma variable tableau comme nom de champs dans ma requête d'insert.
//////////////////////////////////////////////
Comment faire pour que ma variable $annea soit comme nom de champs.
a2013, a2014, a2015 dans mon execute.
Merci d'avance
Je sollicite votre aide en PHP.
J'ai créer un suivi de règlements de cotisations.
Pour pouvoir gérer plusieurs années, j'ai utilisé un tableau années.
Ma requête d'insert récupère le même tableau.
mon problème et que j'aimerais utilisé ma variable tableau comme nom de champs dans ma requête d'insert.
//////////////////////////////////////////////
//Il y a au dessus le </table> le <tr> ma requête SELECT
$tab_annee = array("2013","2014","2015","2016","2017","2018","2019","2020");
for($j=0;$j<count($tab_annee);$j++){
$annea = 'a'.$tab_annee[$j];
$channeea = '$a'.$tab_annee[$j];
if ($row[$annea]==1)
{
?>
<td align="center" BGCOLOR="green">
<input type='checkbox' name='<?php echo $annea; ?>[]' value='<?php echo $var['id']."-0";?>' <?php ($channeea==1?"checked":"")?> />
</td>
<?php
}else{
?>
<td align="center" BGCOLOR="red">
<input type='checkbox' name='<?php echo $annea; ?>[]' value='<?php echo $var['id']."-1";?>' <?php ($channeea==1?"checked":"")?> />
</td>
<?php
}
}
//L'insert
for($h=0;$h<count($tab_annee);$h++){
$annea = 'a'.$tab_annee[$h];
echo '<br />'.$tab_annee[$h].' : '.count($_POST[$annea]).'<br />';
if(count($_POST[$annea]) > 0);
{
$sql = "INSERT INTO cotisation (id_user,date,".$annea.")
values (:id_user,:date,:".$annea.")";
echo $sql.'<br />';
//$stmt=$pdo->prepare($sql);
for($i=0;$i<count($_POST[$annea]);$i++)
{
$id_user = $_POST[$annea][$i];
$id_ckeck = explode("-",$id_user);
$user_id = $id_ckeck[0];
$check = $id_ckeck[1];
$datedujour = "2013-11-22";
//secho $user_id.' - '.$check.'<br />';
echo '<br />'.$user_id.' - '.$datedujour.' - '.$check.'<br />';
//exécution de l'insert
$nb = $stmt->execute(array(':id_user'=>$id_user,':date'=>$datedujour, "C'est ici que je ne sais pas quoi et comment l'écrire"=>$check));
Comment faire pour que ma variable $annea soit comme nom de champs.
a2013, a2014, a2015 dans mon execute.
Merci d'avance
A voir également:
- Variable en non de champs
- Vba range avec variable ✓ - Forum VB / VBA
- Variable objet ou variable de bloc with non définie - Forum VB / VBA
- Le nom du champ de tableau croisé dynamique n'est pas valide ✓ - Forum Excel
- Word mettre à jour tous les champs ✓ - Forum Word
- Variable objet ou bloc "with" non définie - Forum VB / VBA
4 réponses
Bonjour,
Sincèrement votre solution n'est pa sviable.
Une table par année, c'est une hérésie!
rajoutez une colonne année et filtrez par année. mySQL est assez costaud pour encaisser des requêtes sur des centaines de milliers d'enregistrements si c'est bien indexé.
Cordialement
Sincèrement votre solution n'est pa sviable.
Une table par année, c'est une hérésie!
rajoutez une colonne année et filtrez par année. mySQL est assez costaud pour encaisser des requêtes sur des centaines de milliers d'enregistrements si c'est bien indexé.
Cordialement
Merci de ta réponse.
Tu me dis de rajouter un colonne année, elle existe déjà.
Je ne vois pas d'autres solutions pour pouvoir si j'ai besoin rajouter des années facilement
Si tu as une méthode à me conseiller, je suis preneur.
Merci
Tu me dis de rajouter un colonne année, elle existe déjà.
Je ne vois pas d'autres solutions pour pouvoir si j'ai besoin rajouter des années facilement
Si tu as une méthode à me conseiller, je suis preneur.
Merci
En BDD (Base de Données), une colonne = 1 champ.
Vous créez un champ "ANNEE" sur 4 caractères et vous mettez le millésime de l'année: 2013 pour l'année en cours.
Le même gars y fait quéque chose en 2014, on met 2014. On fait pas une colonne 2014!!!!
Zé puis dans vot'listing:
$id_user = $_POST[$annea][$i];
un id de user c'est un numéro séquentiel, pas une valeur calculée.
Je vous conseille très sérieusement de vous pencher sur:
- les fonctions de gestion de date en PHP
- les champs type DATE et DATETIME en SQL. On fait des trucs ultra-formidables en 2 lignes.
A+
Vous créez un champ "ANNEE" sur 4 caractères et vous mettez le millésime de l'année: 2013 pour l'année en cours.
Le même gars y fait quéque chose en 2014, on met 2014. On fait pas une colonne 2014!!!!
Zé puis dans vot'listing:
$id_user = $_POST[$annea][$i];
un id de user c'est un numéro séquentiel, pas une valeur calculée.
Je vous conseille très sérieusement de vous pencher sur:
- les fonctions de gestion de date en PHP
- les champs type DATE et DATETIME en SQL. On fait des trucs ultra-formidables en 2 lignes.
A+
Petite précision,
Dans le code que j'ai mis, ce n'est pas la fiche d'un adhérent mais c'est la liste de tous les adhérents.
C'est là que j'ai un problème
Le code depuis le début
ensuite mon tab_année
Dans le code que j'ai mis, ce n'est pas la fiche d'un adhérent mais c'est la liste de tous les adhérents.
C'est là que j'ai un problème
Le code depuis le début
$sql = 'SELECT adherent.id, nom, prenom
FROM adherent
ORDER BY nom
';
//exex requete
$pdo->exec('SET NAMES utf8');
$resultat = $pdo->query($sql);
$num = 0;
//on boucle
while($var = $resultat->fetch()){
$id_ad = $var['id'];
echo "<tr align=\"left\" bgcolor=\""; echo switchcolor(); echo "\">\n";
echo '<td align=\'center\' height="25">' .(++$num).'</td>';
echo '<td> ' .stripcslashes($var['nom']).'</td>';
echo '<td> ' .stripcslashes($var['prenom']).'</td>';
//requet sur cotisation
$req = 'SELECT id_user,a2013,a2014,a2015,a2016,
adherent.id, adherent.nom,adherent.prenom
FROM cotisation
INNER JOIN adherent ON id_user = "'.$id_ad.'"
';
$pdo->exec('SET NAMES utf8');
$res = $pdo->query($req);
$row = $res->fetch();
ensuite mon tab_année