Itérations boucle FOR

hx.jonathan

WRInaute discret
Je fais une petite interface de maintenance pour site web.

J'ai une page qui affiche mes enregistrements et une autre qui me sert à mettre à jour les enregistrements dans ma base de données. L'ensemble fonctionne impeccablement sauf UNE chose.


Je voudrais que ma boucle (qui sert à faire l'UPDATE de ma table) boucle autant de fois qu'il y a d'enregistrement dans ma requête.

Je sais que cela doit se mettre dans:

Code:
for($i=1; $i< ICI;$i++)

avec une variable. Mais comme ma boucle est sur une autre page php que celle où j'affiche mes enregistrements, je ne sais pas trop.

D'avance merci à tous.

Voici mes deux pages :

AFFICHAGE :

Code:
//connexion BDD 
connexion_DB('bd_club');

// REQUETE SQL 
$res2 = mysql_query('SELECT * FROM activites');

print '<form method="POST" action=check.php>';

//boucle 

$cpt=0;
while($row2 = mysql_fetch_array($res2))
{
$cpt++;

$ID_ACTIV=$row2['ID_ACTIV'];
$annee=$row2['annee'];

//affichage enregistrements

print "<input type='hidden' name='ID_ACTIV' size='1' value='$ID_ACTIV'></input>";
print "<input type='text' name= 'annee".$cpt."' size='5' value='$annee'></input>";



echo "<br />";
 }
echo "<br />";
print '<div align="center"><input type="submit" name="envoie" VALUE="Enregistrer les modifications"></div>';
print '</form>';


mysql_close();
?>

MISE A JOUR :


Code:
<?php
include_once 'fonctions.php';

connexion_DB('bd_club');

if (isset($_POST['annee'])){

$annee=$POST_['annee'];

}


for($i=1; $i<4;$i++){

$VarDynAnnee='annee'.$i;




$sql = "UPDATE activites SET annee = '".$_POST[$VarDynAnnee]."'WHERE ID_ACTIV = '$i'"; 
 

 
echo "<br/>".$sql;

$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

}


header("Location:http://127.0.0.1/absence/index.php?page=03");


	
		
?>
 

lupuz

WRInaute discret
Tu peux faire un 'SELECT Count(*) FROM activites'

Qui te renvera la valeur de ton max pour ta boucle for.
 

erestrebian

WRInaute occasionnel
je te conseille deux choses dans ta première page :

change le nom de ton input, ça évite les confusion appelle le : idact[$cpt] et le second annee[$cpt], comme ça tu as deux variables-tableaux, ça me semble plus facile à gérer que beaucoup de variables.

ensuite tu peux rajouter un autre hidden dans lequel tu mets en valeur le $cpt, ce qui te permet de récupérer le nombre de fois qu'il faut que tu fasses ta boucle sur la page suivante.

si ça ne te convient pas tu peux toujours compter le nombre d'entrées qu'il y a dans le tableau annee[]....
 

hx.jonathan

WRInaute discret
Désolé mais j'ai essayé avec ton select count mais ça na marche pas.

J'ai fais ceci :

Code:
<?php
include_once 'fonctions.php';

connexion_DB('bd_club');

if (isset($_POST['annee'])){

$annee=$POST_['annee'];

}

$test= mysql_query('SELECT Count(*) FROM activites');


for($i=1; $i<$test;$i++){

$VarDynAnnee='annee'.$i;
 
echo $test;


$sql = "UPDATE activites SET annee = '".$_POST[$VarDynAnnee]."'WHERE ID_ACTIV = '$i'"; 
 

 
echo "<br/>".$sql;

$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

}
 

lupuz

WRInaute discret
Ton erreur est là :
Code:
...
$test= mysql_query('SELECT Count(*) FROM activites');


for($i=1; $i<$test;$i++){
...

mysql_query() te revoit une resource, pas une valeur que tu peux utiliser.
Il faut que tu la "traite" avant de l'utiliser, avec un mysql_fetch_row() par exemple.

ton code sera donc :
Code:
...
$test= mysql_query('SELECT Count(*) FROM activites');

$row = mysql_fetch_row($test)
for($i=1; $i<$row[0];$i++){
...
 

Discussions similaires

Haut