Itérations boucle FOR

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics

hx.jonathan
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 115
Inscription: Mer Mar 02, 2005 17:42

Itérations boucle FOR

Message le Jeu Aoû 09, 2007 13:52

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: Tout sélectionner
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: Tout sélectionner
       
//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: Tout sélectionner
<?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 occasionnel
WRInaute occasionnel
 
Messages: 207
Inscription: Mer Mar 15, 2006 23:41

Message le Jeu Aoû 09, 2007 14:03

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

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


erestrebian
WRInaute impliqué
WRInaute impliqué
 
Messages: 394
Inscription: Ven Juin 15, 2007 12:55

Message le Jeu Aoû 09, 2007 14:07

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 occasionnel
WRInaute occasionnel
 
Messages: 115
Inscription: Mer Mar 02, 2005 17:42

Message le Jeu Aoû 09, 2007 14:50

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

J'ai fais ceci :

Code: Tout sélectionner
<?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 occasionnel
WRInaute occasionnel
 
Messages: 207
Inscription: Mer Mar 15, 2006 23:41

Message le Jeu Aoû 09, 2007 15:45

Ton erreur est là :
Code: Tout sélectionner
...
$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: Tout sélectionner
...
$test= mysql_query('SELECT Count(*) FROM activites');

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


hx.jonathan
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 115
Inscription: Mer Mar 02, 2005 17:42

Message le Jeu Aoû 09, 2007 16:43

OK merci


Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités