Page 1 sur 1
additionner des nombres stockés dans une base
Posté : 21 juin 2005, 11:03
par djmatt
Bonjour a tous je suis débutant en PHP Mysql, j'ai créer une base avec easyphp et j'ai une table qui se compose d'une collonne temporisation je voudrais additionner chaque ligne pour connaitre la durée d'execution de la totalité des pages pouvez vous m'aider.
Posté : 21 juin 2005, 11:07
par waf_wafe
Salut,
alors si je me réfère a ton titre (je pense que le topic aurait été mieux dans base de donnée plutot que dans Débuter en Php

) tu devrais utiliser le sum() de mysql => [Addition de plusieurs champ ]
Mais comme je ne comprends pas tres bien ta question, je ne pourrais pas t'aider beaucoup plus...
Posté : 21 juin 2005, 11:09
par zeus
Posté : 21 juin 2005, 11:09
par sausee2005
je suis pas sûr que ce soit vraiment le sum la réponse j'y avais pense mais la suite m'a fait pense que ça devait pas être ça moi aussi je comprends pas trop le probleme
il est vrai que je ne suis pas claire
Posté : 21 juin 2005, 11:28
par djmatt
Donc en faite j'ai fait un diaporama de page html dans une frame, pour que je puisse enchainner les pages j'ai stocké les urls dans un base de données et a chaque url j'ai assimilé dans ma base une temporisation pour que chaque page reste afficher pendant un temps précis. maintenant je voudrais faire un refresh de ma page une fois que chaque page ont défilé sur mon écran. pour cela j'utilise <META HTTP-EQUIV="Refresh" CONTENT="$req2; URL=essai4.php"> ce que j'aimerais c donc pouvoir compter chaque temporisation pour rafraichir au bon moment.
J'espere avoir été plus claire
voici mon code :
<body scroll='no' onload="diapo();">
<?php
$db = mysql_connect('localhost', 'admtotem', 'totem');
// on sélectionne la base
mysql_select_db('interface_totem',$db);
// on crée la requête SQL
$sql = 'SELECT URL, temps FROM page WHERE id_ecran=1 and afficher=1 ORDER BY id_page';
$sql2 = 'SELECT SUM(temps) FROM page WHERE id_ecran=1 and afficher=1';
// on envoie la requête
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
$req2 = mysql_query($sql2) or die('Erreur SQL !<br>'.$sql2.'<br>'.mysql_error());
// on fait une boucle qui va faire un tour pour chaque enregistrement
// on compte le nombre d'occurance dans le tableau
$res = mysql_num_rows($req);
echo "<script language=JavaScript>";
//Initialisation des tableaux
echo "var tab=new Array(".$res.");";
echo "var tab2=new Array(".$res.");";
$i=0;
//Boucle permettant de remplir les tableaux
while($data = mysql_fetch_assoc($req))
{
echo 'tab['.$i.']="'.$data['URL'].'";';
echo 'tab2['.$i.']='.$data['temps'].';';
$i++;
}
echo "var compteur=0;";
echo "var max=$res-1;";
// Succesion des pages html avec l'URL récupéré dans le tableau
echo "function diapo()";
echo"{";
echo "if(compteur>max) { ";
echo "compteur=0;";
echo"}";
echo "document.getElementById(\"ifdiapo\").src=tab[compteur] + \".htm.\" ;";
//Temps de pause de la page avant la passage a la suivante, temporisation récupéré dans le tableau
echo "setTimeout(\"diapo()\",tab2[compteur]);";
echo "compteur++;";
echo"}";
<title>Diaporama</title>
<META HTTP-EQUIV="Refresh" CONTENT="$req2; URL=essai4.php">
// on ferme la connexion à mysql
mysql_close();
?>
</script>
<style type="text/css">
<!--.Style1 {font-weight: bold}-->
</style>
</head>
<body scroll='no' onload="diapo();">
<iframe id="ifdiapo" src="" name="diaporama" width="988" height="580" frameborder=no></iframe>
précision
Posté : 21 juin 2005, 11:39
par djmatt
donc en faite peut etre que sum fonctionne mais ma page html ne s'affiche pas voici la traduction html du code php
<title>Diaporama</title><META HTTP-EQUIV="Refresh" CONTENT="$req2; URL=essai4.php"></script>
Le code interprete pas mon $req ça doit etre tout bete mais bon...
Merci pour votre aide
Posté : 21 juin 2005, 11:42
par zeus
Ou est-ce que tu penses récupérer le résultat de ta requête ?
Selon toi, que contient $req2 ?
....
Posté : 21 juin 2005, 11:47
par djmatt
Pour moi $req2 correspond a la valeur de ma requete sql2 ou j'ai fait la somme
Je me trompe aparement ?
Posté : 21 juin 2005, 11:51
par zeus
$req2 est la valeur de retour de mysql_query(). cette valeur est inexploitable directement par PHP
Si tu veut la valeur de retour, tu doit faire
$res2 = mysql_result($req2, 0, 0);
et $res2 va contenir se qui se trouve dans la 1ere ligne/1ere colonne des valeurs retournées
Tu serais allé voir dans la source de ta page, tu aurais vu un message du genre <br>undefined ressourse #1<br> à la place de ta valeur
Posté : 21 juin 2005, 12:08
par djmatt
dans la sources de ma page il l'interprete pas justement il laisse "$res2"
$db = mysql_connect('localhost', 'admtotem', 'totem');
// on sélectionne la base
mysql_select_db('interface_totem',$db);
// on crée la requête SQL
$sql = 'SELECT URL, temps FROM page WHERE id_ecran=1 and afficher=1 ORDER BY id_page';
$sql2 = 'SELECT SUM(temps) FROM page WHERE id_ecran=1 and afficher=1 ';
// on envoie la requête
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
$req2 = mysql_query($sql2) or die('Erreur SQL !<br>'.$sql2.'<br>'.mysql_error());
// on fait une boucle qui va faire un tour pour chaque enregistrement
// on compte le nombre d'occurance dans le tableau
$res = mysql_num_rows($req);
$res2 = mysql_result($req2, 0, 0);
echo "<script language=JavaScript>";
//Initialisation des tableaux
echo "var tab=new Array(".$res.");";
echo "var tab2=new Array(".$res.");";
$i=0;
//Boucle permettant de remplir les tableaux
while($data = mysql_fetch_assoc($req))
{
echo 'tab['.$i.']="'.$data['URL'].'";';
echo 'tab2['.$i.']='.$data['temps'].';';
$i++;
}
echo "var compteur=0;";
echo "var max=$res-1;";
// Succesion des pages html avec l'URL récupéré dans le tableau
echo "function diapo()";
echo"{";
echo "if(compteur>max) { ";
echo "compteur=0;";
echo"}";
echo "document.getElementById(\"ifdiapo\").src=tab[compteur] + \".htm.\" ;";
//Temps de pause de la page avant la passage a la suivante, temporisation récupéré dans le tableau
echo "setTimeout(\"diapo()\",tab2[compteur]);";
echo "compteur++;";
echo"}";
echo "<title>Diaporama</title>";
echo '<META HTTP-EQUIV="Refresh" CONTENT=""$res2"; URL=essai4.php"> ';
// on ferme la connexion à mysql
mysql_close();
?>
</script>
<style type="text/css">
<!--.Style1 {font-weight: bold}-->
</style>
</head>
<body scroll='no' onload="diapo();">
<iframe id="ifdiapo" src="" name="diaporama" width="988" height="580" frameborder=no></iframe>
Posté : 21 juin 2005, 12:21
par zeus
Remplace ta ligne par ça :
echo '<META HTTP-EQUIV="Refresh" CONTENT="'.$res2.'; URL=essai4.php"> ';
Posté : 21 juin 2005, 12:34
par djmatt
ok d'acc une erreur persiste alors qu'il y en avait pas avant mais dans mon code html ça me marque bien la bonne valeur j'ai déja bien avancé merci beaucoup
Posté : 21 juin 2005, 13:29
par zeus
Et c'est quoi cette erreur ?
Posté : 21 juin 2005, 13:55
par Invité
c bon ça fonctionne c'été le méta qui devait etre mis au début c tout merci bcp
dernier ptit probleme
Posté : 21 juin 2005, 14:22
par djmatt
le probleme c que sur mysql on est en milliseconde et que sur le refrech on est en seconde donc il faut que je divise par 1000 ma valeur j'ai fait ça mais ça marche pas : avez vous des solution
$div = $req2/1000;
et j'affiche
<META HTTP-EQUIV="Refresh" CONTENT="'.$div.'; URL=essai4.php">