Récupération tableau via requete

Fermé
xfire - 21 avril 2009 à 14:04
 xfire. - 22 avril 2009 à 14:35
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 :)

13 réponses

Profil bloqué
21 avril 2009 à 14:16
Bjr,déjà pourquoi la numerotation de ta boucle tu la démarre par 3 ?
0
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à.
0
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 :(
0
Profil bloqué
21 avril 2009 à 15:30
dans ta page de récupération de données essaye d'afficher les données avant d'eesayer de les envoyer par sql.
0
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Profil bloqué
21 avril 2009 à 16:30
faudrait déjà changer

donnee1['+i+']

par

donnee1[i]

afin kil puisse voir le i comme index de parcours
0
j'ai déjà essayé de virer les '+' dans le javascript de la 1ère page mais ça me retourne une erreur :
Notice: Undefined index: 1 in C:\Program Files\EasyPHP 3.0\www\UPNETWORKS\Insert.php on line 29 (a 38)
0
Profil bloqué
21 avril 2009 à 16:51
est-ce que je peux voir tes deux pages?
0
bien sur

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 :)
0
xfire > xfire
22 avril 2009 à 10:35
personne ne sais?
0
pas d'idées? :(
0
personne ne sais?
0
pas d'idées? :(
0
personne ne peut m'aider svp?
0
personne ne peux m'aider?
0
pas d'idées?
0
oups je viens de voir le bug.... les nouveaux messages ne s'affichaient pas a mon écran ... désolé pour le flood :s
0