Récupération tableau via requete
xfire
-
xfire. -
xfire. -
Bonjour,
J'enregistre un tableau sur une page php avec des données qui s'appellent donnee1['+i+'] donnee2['+i+'] donnee3['+i+'] dans une fonction javascript, où i est le numéro de la ligne (incrémenté a chaque nouvelle ligne).
Je passe ensuite les valeurs en POST a une autre page et je les récupèrent :
$donnee1=intval($_POST["donnee1"][$i]);
j'exécute ma requête dans une boucle:
($trs est le nombre de lignes)
for($i=3; $i<$trs; $i++){
$q2="INSERT INTO table (donnee1,.....) VALUES ('$donnee1',....)";
le problème est qu'il ne me met dans la BDD que la 2eme (et dernière ligne dans mon exemple) et il l'a met en double.
Mon problème est que je n'arrive pas à mettre chaque ligne dans la BDD, je n'arrive pas a faire changer la valeur de i pour exécuter la requete.
auriez vous une piste svp?
merci :)
J'enregistre un tableau sur une page php avec des données qui s'appellent donnee1['+i+'] donnee2['+i+'] donnee3['+i+'] dans une fonction javascript, où i est le numéro de la ligne (incrémenté a chaque nouvelle ligne).
Je passe ensuite les valeurs en POST a une autre page et je les récupèrent :
$donnee1=intval($_POST["donnee1"][$i]);
j'exécute ma requête dans une boucle:
($trs est le nombre de lignes)
for($i=3; $i<$trs; $i++){
$q2="INSERT INTO table (donnee1,.....) VALUES ('$donnee1',....)";
le problème est qu'il ne me met dans la BDD que la 2eme (et dernière ligne dans mon exemple) et il l'a met en double.
Mon problème est que je n'arrive pas à mettre chaque ligne dans la BDD, je n'arrive pas a faire changer la valeur de i pour exécuter la requete.
auriez vous une piste svp?
merci :)
A voir également:
- Récupération tableau via requete
- Tableau word - Guide
- Tableau ascii - Guide
- Trier un tableau excel - Guide
- Imprimer un tableau excel - Guide
- Tableau croisé dynamique - Guide
13 réponses
xfire
C'est parce qu'en fait dans mon tableau il y a déjà 2 lignes occupées pour le titre du tableau + le nom des colonnes, donc pas de données à récupérer dans ces lignes là.
même en mettant for ($i=0; $i<$trs-3; $i++) dans la boucle ça ne change pas, toujours autant d'enregistrements que de lignes pour la dernière seulement, rien pour les autres lignes du tableau :(
dans ta page de récupération de données essaye d'afficher les données avant d'eesayer de les envoyer par sql.
Je viens d'essayer un echo"$donnee1"; dans la boucle et je vois 2 fois la dernière ligne ...
pareil si je le mets avant la boucle je ne vois qu'une fois la dernière ligne
pareil si je le mets avant la boucle je ne vois qu'une fois la dernière ligne
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
faudrait déjà changer
donnee1['+i+']
par
donnee1[i]
afin kil puisse voir le i comme index de parcours
donnee1['+i+']
par
donnee1[i]
afin kil puisse voir le i comme index de parcours
bien sur
saisie.php:
qui appelle insert.php:
j'ai essayé de réduire au maximum pour que ça reste lisible
merci de prendre le temps de m'aider :)
saisie.php:
<!--SCRIPT QUI COMPTE LE NOMBRE DE LIGNES-->
<script language=javascript>
function count(){
var tableau = document.getElementById('tablecontrat');
//Calcul du nombre de ligne dans le tableau -> on regarde combien il y a de tr dans le tableau
var trs = tableau.getElementsByTagName('tr').length;
// Stockage de la variable trs dans le champs caché portant le même nom
document.forms[0].trs.value = trs;
}
</script>
<td><INPUT TYPE="text" name="NumContrat" size="10"></td>
<td><SELECT NAME="NomTypeContrat" size="1">
<option value="Hotline + Maj Soft">Hotline + Maj Soft</option>
<option value="Echange Standard">Echange Standard</option>
....
....
</SELECT>
<!-- SCRIPT AJOUTER UNE LIGNE DE CONTRAT-->
<script language="javascript">
var numero=0;
function AddRow0(){
numero++;
var newRow = document.getElementById('tablecontrat').insertRow(-1);
//var nouveauTr = document.createElement('tr');
var newCell = newRow.insertCell(0);
newCell.align = 'center';
newCell.innerHTML = '<input type="text" name="NumContrat"[numero]" id="NumContrat"[numero]" size="10">';
var newCell = newRow.insertCell(1);
newCell.align = 'center';
newCell.innerHTML = '<SELECT NAME="NomTypeContrat[numero]" id="NomTypeContrat[numero]"><option value="Hotline + Maj Soft">Hotline + Maj Soft</option><option value="Echange Standard">Echange Standard</option>
...
...
ar newCell = newRow.insertCell(10);
newCell.align = 'center';
newCell.innerHTML = '<img src="croix.png" onclick="deleteCurrentRow(this)" alt="Delete" >';
document.forms[0].numero.value = numero;
</script>
<input name="clic1" type="button" onClick="AddRow0()" value="Ajouter Un Contrat">
<INPUT TYPE="submit" value="Valider La saisie">
<input type="hidden" name="trs" />
<FORM ACTION="insert.php" METHOD="POST">
<INPUT TYPE="hidden" name="numero" id="numero" />
</form></form></FORM>
<?php close(); ?>
</body>
</html>
qui appelle insert.php:
$NomTypeContrat=$_POST["NomTypeContrat"][$numero];
$Actif = isset($_POST['Actif'][$numero])?$_POST['Actif'][$numero]:"Oui";
$JourDebut=intval($_POST["JourDebut"][$numero]);
$AnneeDebut=intval($_POST["AnneeDebut"][$numero]);
$JourFin=intval($_POST["JourFin"][$numero]);
...
...
for($numero=0; $numero<$trs-3; $numero++){
echo "NumContrat :";
echo $NumContrat;
echo "<br>numero: ";
echo $numero;
$query2="INSERT INTO contrat(NumClient,NumContrat,JourDebut,MoisDebut,AnneeDebut,JourFin,MoisFin,AnneeFin,NomTypeContrat,Actif,MontantHT,Periodicite,Terme,Paiement) VALUES ('$NumClient','$NumContrat','$JourDebut','$MoisDebut','$AnneeDebut','$JourFin','$MoisFin','$AnneeFin','$NomTypeContrat','$Actif','$MontantHT','$Periodicite','$Terme','$Paiement')";
mysql_query($query2) or die(mysql_error());
$req2 = "SELECT ID,NumClient,NumContrat,JourDebut,MoisDebut,AnneeDebut,JourFin,MoisFin,AnneeFin,NomTypeContrat,Actif,MontantHT,Periodicite,Terme,Paiement FROM contrat WHERE NumClient=$NumClient";
$sql2 = mysql_query($req2) or die(mysql_error());
j'ai essayé de réduire au maximum pour que ça reste lisible
merci de prendre le temps de m'aider :)