Concaténer des variables au compte goutte
Résolu
MoYoX
Messages postés
140
Statut
Membre
-
pyschopathe Messages postés 2053 Statut Membre -
pyschopathe Messages postés 2053 Statut Membre -
Bonjour, tout d'abord désolé pour le titre qui n'est pas très explicite, mais la limitation de taille est assez handicapante !
Je vous expose mon problème.
J'ai une boucle comme celle-ci:
En fait, je récupère les variables d'un tableau "dynamique" de 15 colonnes (le nombre de ses lignes n'est pas fixe et $ch représente ce nombre de lignes). Ces variables sont récupérées une par une grâce à la boucle.
J'aimerais savoir comment est-il possible de regrouper ces variables par "paquets" de 15 et ainsi pouvoir les envoyer à la base de données via une requête mysql.
Par exemple, je reçois dans une boucle ces variables:
boucle1:
$variable1
boucle2:
$variable2
...
boucle15:
$variable15
Il faudrait en quelques sortes les "sauvegarder" pour pour pouvoir faire cette requête:
Cette requête se trouverait dans une boucle se répétant autant que le tableau a de ligne.
Je n'ai malheureusement aucune idée de comment pouvoir faire ces paquets !
D'avance merci !
Momo
Je vous expose mon problème.
J'ai une boucle comme celle-ci:
$ch=$_POST['ch'];
for($i=0;$i<=($ch*15);$i++)
{
$form=$_POST['champ'.$i];
}
En fait, je récupère les variables d'un tableau "dynamique" de 15 colonnes (le nombre de ses lignes n'est pas fixe et $ch représente ce nombre de lignes). Ces variables sont récupérées une par une grâce à la boucle.
J'aimerais savoir comment est-il possible de regrouper ces variables par "paquets" de 15 et ainsi pouvoir les envoyer à la base de données via une requête mysql.
Par exemple, je reçois dans une boucle ces variables:
boucle1:
$variable1
boucle2:
$variable2
...
boucle15:
$variable15
Il faudrait en quelques sortes les "sauvegarder" pour pour pouvoir faire cette requête:
$query=("INSERT INTO matable (col1, col2, col3, col4, col5, col6, col7, col8, col9, col10, col11, col12, col13, col14, col15) VALUES('".$variable1."',
'".$variable2."',
'".$variable3."',
'".$variable4."',
'".$variable5."',
'".$variable6."',
'".$variable7."',
'".$variable8."',
'".$variable9."',
'".$variable10."',
'".$variable11."',
'".$variable12."',
'".$variable13."',
'".$variable14."',
'".$variable15."',
'','','')");
Cette requête se trouverait dans une boucle se répétant autant que le tableau a de ligne.
Je n'ai malheureusement aucune idée de comment pouvoir faire ces paquets !
D'avance merci !
Momo
A voir également:
- Concaténer des variables au compte goutte
- Créer un compte google - Guide
- Installer windows 10 sans compte microsoft - Guide
- Créer un compte gmail - Guide
- Comment savoir qui regarde mon compte facebook - Guide
- Compte facebook désactivé - Guide
5 réponses
Ce n'est pas compliqué : tu veux faire autant de requêtes que tu as de lignes ? Tu commences par faire une boucle for sur ce nombre de lignes. Pour chaque ligne, tu récupères chaque champ (grâce à une autre boucle) et tu l'ajoutes à ta requête. Voici le code :
for ( $i=0 ; $i<$ch ; ++$i ) {
$query = 'INSERT INTO matable (col1, col2, col3, col4, col5, col6, col7, col8, col9, col10, col11, col12, col13, col14, col15) VALUES(';
for ( $j=15*$i ; $j<15*($i+1) ; ++$j ) {
if ( $j != 15*$i ) $query .= ','; // on ajoute une virgule si nécessaire
$curvar = $_POST['champ'.$j];
$query .= "'$curvar'";
}
$query .= ');';
}
Merci beaucoup pour ce code, néanmoins un problème subsiste.
J'avoue avoir du mal à piger toutes les ficelles de ce code donc je vais te montrer exactement ce qu'il fait et ce que je veux faire:
Je précise qu'il s'agit de pouvoir saisir des informations concernant des wagons féroviaires (histoire qu'on sache de quoi on parle ici)
Voici mon tableau original: ________
Combien de wagons voulez vous ajouter ? |____4___|
______________________________________________________________________
| | | | | | | |
|_5555_|_________|_______|__________|________|______________|__________|
| | | | | | | |
|_6666_|_________|_______|__________|________|______________|__________|
| | | | | | | |
|_7777_|_________|_______|__________|________|______________|__________|
| | | | | | | |
|_8888_|_________|_______|__________|________|______________|__________|
|Envoyer|
Donc, j'ai un premier champ qui permet d'ajouter des lignes au tableau.
Le tableau dispose de 15 colonnes (mais ça c'était déjà compris).
Lorsque je clique sur "Envoyer", grâce à ton code, la requête est la suivante:
En fait, c'est comme si ton code ne permettait d'importer dans la base de données que l'avant dernière ligne.
Comme je n'ai pas tout saisi à ton code, je n'ai pas réussi à le dépanner.
Peux-tu m'aider à nouveau s'il te plait ?
D'avance merci,
Momo
J'avoue avoir du mal à piger toutes les ficelles de ce code donc je vais te montrer exactement ce qu'il fait et ce que je veux faire:
Je précise qu'il s'agit de pouvoir saisir des informations concernant des wagons féroviaires (histoire qu'on sache de quoi on parle ici)
Voici mon tableau original: ________
Combien de wagons voulez vous ajouter ? |____4___|
______________________________________________________________________
| | | | | | | |
|_5555_|_________|_______|__________|________|______________|__________|
| | | | | | | |
|_6666_|_________|_______|__________|________|______________|__________|
| | | | | | | |
|_7777_|_________|_______|__________|________|______________|__________|
| | | | | | | |
|_8888_|_________|_______|__________|________|______________|__________|
|Envoyer|
Donc, j'ai un premier champ qui permet d'ajouter des lignes au tableau.
Le tableau dispose de 15 colonnes (mais ça c'était déjà compris).
Lorsque je clique sur "Envoyer", grâce à ton code, la requête est la suivante:
INSERT INTO regionnaux (num_wagon, num1, num2, type, carac_wagon, attache, utilisateur, lieu, point_attach, date_dernier_aff, com_util, proch_vt, proch_rev, obs, tri_etabli,trans_vt,trans_rev,trans_aff) VALUES('77777777','','','','','','','','','','','','','','','','','');
En fait, c'est comme si ton code ne permettait d'importer dans la base de données que l'avant dernière ligne.
Comme je n'ai pas tout saisi à ton code, je n'ai pas réussi à le dépanner.
Peux-tu m'aider à nouveau s'il te plait ?
D'avance merci,
Momo
Désolé, j'aurais dû commenter le code :
// on boucle sur les lignes du tableau
for ( $i=0 ; $i<$ch ; ++$i ) {
// on construit la partie fixe de la requête
$query = 'INSERT INTO matable (col1, col2, col3, col4, col5, col6, col7, col8, col9, col10, col11, col12, col13, col14, col15) VALUES(';
// on boucle sur les champs
for ( $j=15*$i ; $j<15*($i+1) ; ++$j ) {
if ( $j != 15*$i ) $query .= ','; // on ajoute une virgule si nécessaire
// on récupère la valeur du champ courant dans une variable pour plus de commodité
$curvar = $_POST['champ'.$j]; // l'erreur vient probablement d'ici
// on ajoute le champ à la requête
$query .= "'$curvar'";
}
// on termine la requête
$query .= ');';
}Le problème vient à mon avis du champ en gras. D'où est-ce que tu récupères les différents champs à insérer, j'ai dû mal comprendre...
Rebonjour !
En fait, le code semble fonctionner, j'ai juste ajouté à la fin:
Mais maintenant, lorsque mon tableau est de la forme:
5555
6666
7777
8888
Il m'importe dans la base de données ceci:
8888
5555
6666
7777
8888
Donc, le premier "8888" n'a pas sa place car il est identique au dernier !
Enfin déjà merci pour ce code qui fonctionne à peu près chez moi malgré mon manque de compréhension !
En fait, le code semble fonctionner, j'ai juste ajouté à la fin:
....
......
$curvar = $_POST['champ'.$j];
$query .= "'$curvar'";
}
$query .= ',\'\',\'\',\'\');';
mysql_query($query,$link) or die ("Impossible d'ajouter le wagon");
}
Mais maintenant, lorsque mon tableau est de la forme:
5555
6666
7777
8888
Il m'importe dans la base de données ceci:
8888
5555
6666
7777
8888
Donc, le premier "8888" n'a pas sa place car il est identique au dernier !
Enfin déjà merci pour ce code qui fonctionne à peu près chez moi malgré mon manque de compréhension !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question