Souci en php demande de fonction
Fermé
Anto
-
10 sept. 2009 à 17:02
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 6 nov. 2009 à 18:38
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 6 nov. 2009 à 18:38
A voir également:
- Souci en php demande de fonction
- Fonction si et - Guide
- Easy php - Télécharger - Divers Web & Internet
- Fonction moyenne excel - Guide
- Cette fonction n'est pas disponible actuellement tv lg - Forum Téléviseurs
- Excel renvoyer la valeur d'une cellule en fonction d'une autre - Forum Logiciels
74 réponses
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
10 sept. 2009 à 17:35
10 sept. 2009 à 17:35
Je temporise une boucle while qui affiche entrée par entrée une base de donnée :
Quel intérêt à faire ça ?
le script php vca beuguer très rapidement si tu as beaucoup d'enregistrements car il y a un max execution time en général 30 secondes
si tu as 20 enregistrements ça fera 10 x 20 = 200 secondes
de toute façon le script php attend la fin de son éxécution avant d'envoyer la page vers le navigateur
Quel intérêt à faire ça ?
le script php vca beuguer très rapidement si tu as beaucoup d'enregistrements car il y a un max execution time en général 30 secondes
si tu as 20 enregistrements ça fera 10 x 20 = 200 secondes
de toute façon le script php attend la fin de son éxécution avant d'envoyer la page vers le navigateur
Arf zut je savais pas qu'il y'avait des restrictions de temps d'execution...
En fait je voudrais que chaque entrée de ma base de donnée s'affiche une par une pendant un certain temps sur une page blanche.
Pour faire une sorte de diaporama powerpoint avec mes entrées...
Je ne vois pas comment faire autrement...
En fait je voudrais que chaque entrée de ma base de donnée s'affiche une par une pendant un certain temps sur une page blanche.
Pour faire une sorte de diaporama powerpoint avec mes entrées...
Je ne vois pas comment faire autrement...
Smoking bird
Messages postés
870
Date d'inscription
mardi 11 mars 2008
Statut
Membre
Dernière intervention
10 juillet 2011
58
10 sept. 2009 à 17:40
10 sept. 2009 à 17:40
avec un peu de javascript ça devrait aller^^ mais le php est absolument pas fait pour ça (php=serveur=données!=forme)
Oki Merci :)
Des pistes pour un eventuel javascript tout beau qui extrayerait entrée par entrée ?
Des pistes pour un eventuel javascript tout beau qui extrayerait entrée par entrée ?
Smoking bird
Messages postés
870
Date d'inscription
mardi 11 mars 2008
Statut
Membre
Dernière intervention
10 juillet 2011
58
10 sept. 2009 à 17:56
10 sept. 2009 à 17:56
va falloir que tu le code à la mimine^^
tu sors toutes les entrées et tu les places dans un conteneur type block (par défaut). Il faut qu'elles aient toutes un id par incrémentation, ce serait tip top. Par défaut, tu mets le display:none; (ou visibility, au choix, c'est un peu brouillon tout ça) et ta fonction javascript contiendra une minuterie avec comme consigne de cacher l'entrée avec l'id courante, incrémenter l'id, monter l'id suivante, laisser filer la minuterie :D. Par contre, je sèche pour le déclenchement de la fonction.... onload peut être, dépend de ta page.
tu sors toutes les entrées et tu les places dans un conteneur type block (par défaut). Il faut qu'elles aient toutes un id par incrémentation, ce serait tip top. Par défaut, tu mets le display:none; (ou visibility, au choix, c'est un peu brouillon tout ça) et ta fonction javascript contiendra une minuterie avec comme consigne de cacher l'entrée avec l'id courante, incrémenter l'id, monter l'id suivante, laisser filer la minuterie :D. Par contre, je sèche pour le déclenchement de la fonction.... onload peut être, dépend de ta page.
Smoking bird
Messages postés
870
Date d'inscription
mardi 11 mars 2008
Statut
Membre
Dernière intervention
10 juillet 2011
58
10 sept. 2009 à 17:56
10 sept. 2009 à 17:56
va falloir que tu le code à la mimine^^
tu sors toutes les entrées et tu les places dans un conteneur type block (par défaut). Il faut qu'elles aient toutes un id par incrémentation, ce serait tip top. Par défaut, tu mets le display:none; (ou visibility, au choix, c'est un peu brouillon tout ça) et ta fonction javascript contiendra une minuterie avec comme consigne de cacher l'entrée avec l'id courante, incrémenter l'id, monter l'id suivante, laisser filer la minuterie :D. Par contre, je sèche pour le déclenchement de la fonction.... onload peut être, dépend de ta page.
tu sors toutes les entrées et tu les places dans un conteneur type block (par défaut). Il faut qu'elles aient toutes un id par incrémentation, ce serait tip top. Par défaut, tu mets le display:none; (ou visibility, au choix, c'est un peu brouillon tout ça) et ta fonction javascript contiendra une minuterie avec comme consigne de cacher l'entrée avec l'id courante, incrémenter l'id, monter l'id suivante, laisser filer la minuterie :D. Par contre, je sèche pour le déclenchement de la fonction.... onload peut être, dépend de ta page.
Smoking bird
Messages postés
870
Date d'inscription
mardi 11 mars 2008
Statut
Membre
Dernière intervention
10 juillet 2011
58
10 sept. 2009 à 17:56
10 sept. 2009 à 17:56
va falloir que tu le code à la mimine^^
tu sors toutes les entrées et tu les places dans un conteneur type block (par défaut). Il faut qu'elles aient toutes un id par incrémentation, ce serait tip top. Par défaut, tu mets le display:none; (ou visibility, au choix, c'est un peu brouillon tout ça) et ta fonction javascript contiendra une minuterie avec comme consigne de cacher l'entrée avec l'id courante, incrémenter l'id, monter l'id suivante, laisser filer la minuterie :D. Par contre, je sèche pour le déclenchement de la fonction.... onload peut être, dépend de ta page.
tu sors toutes les entrées et tu les places dans un conteneur type block (par défaut). Il faut qu'elles aient toutes un id par incrémentation, ce serait tip top. Par défaut, tu mets le display:none; (ou visibility, au choix, c'est un peu brouillon tout ça) et ta fonction javascript contiendra une minuterie avec comme consigne de cacher l'entrée avec l'id courante, incrémenter l'id, monter l'id suivante, laisser filer la minuterie :D. Par contre, je sèche pour le déclenchement de la fonction.... onload peut être, dépend de ta page.
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
10 sept. 2009 à 17:51
10 sept. 2009 à 17:51
oui tu peux par exemple dans ton script php , dans ta boucle while (sans tempo) generer un array javascript (un peu différent d'un array php)
et ensuite tu envoie ça à la page et dans ton script javascript par une tempo tu viens afficher dans la page les éléments les uns après les autres
et ensuite tu envoie ça à la page et dans ton script javascript par une tempo tu viens afficher dans la page les éléments les uns après les autres
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci pour vos reponses :)
J'ai trouvé ca comme code :
<head>
<META HTTP-EQUIV="refresh" CONTENT="5; URL=afficheur2.php">
</head>
et je pense faire l'incrementation pour le changement d'entrée à afficher avec une variable de session!
J'espère que ca va marcher !!
J'ai trouvé ca comme code :
<head>
<META HTTP-EQUIV="refresh" CONTENT="5; URL=afficheur2.php">
</head>
et je pense faire l'incrementation pour le changement d'entrée à afficher avec une variable de session!
J'espère que ca va marcher !!
Smoking bird
Messages postés
870
Date d'inscription
mardi 11 mars 2008
Statut
Membre
Dernière intervention
10 juillet 2011
58
10 sept. 2009 à 18:06
10 sept. 2009 à 18:06
je doute, mais tiens nous au courant^^ (sait on jamais, et désolé pour les doublons, CCM plantait -_-)
après un refresh de cette page :
//entete obligatoire pour la suite !!!!!!!!!!!!!
Require("./Include/function.php");
include("./Include/connexion.inc.php");
// selection de l'element a afficher
// la valeur 1 est la valeur pour signaler tout les ecran
$ecran = 'A';//valeur a chager selon l'ecran : voir la base de donnée
$sql = mysql_query("SELECT * FROM ".$base_page." WHERE Ecran='".$ecran." ' OR Ecran='1' ");
//affichage de la page en question :
while($row = mysql_fetch_array($sql, MYSQL_ASSOC))
{
echo $row['Texte'];
echo "<br><hr style='border:1px solid black;'><br>";
}
$_SESSION['defilement'] = $_SESSION['defilement']+1;
echo $_SESSION['defilement'];
ma variable $_SESSION['defilement'] vaut tjr 1 quelque soit le nombre de refresh.... je vois pas pkoi...?
//entete obligatoire pour la suite !!!!!!!!!!!!!
Require("./Include/function.php");
include("./Include/connexion.inc.php");
// selection de l'element a afficher
// la valeur 1 est la valeur pour signaler tout les ecran
$ecran = 'A';//valeur a chager selon l'ecran : voir la base de donnée
$sql = mysql_query("SELECT * FROM ".$base_page." WHERE Ecran='".$ecran." ' OR Ecran='1' ");
//affichage de la page en question :
while($row = mysql_fetch_array($sql, MYSQL_ASSOC))
{
echo $row['Texte'];
echo "<br><hr style='border:1px solid black;'><br>";
}
$_SESSION['defilement'] = $_SESSION['defilement']+1;
echo $_SESSION['defilement'];
ma variable $_SESSION['defilement'] vaut tjr 1 quelque soit le nombre de refresh.... je vois pas pkoi...?
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
10 sept. 2009 à 18:11
10 sept. 2009 à 18:11
Essayes ça, je n'ai pas testé c'est une piste
<?php //connexion etc.. $sql = mysql_query("SELECT * FROM ".$base_page." WHERE Ecran='".$ecran." ' OR Ecran='1' "); $tab_php=array(); while($row = mysql_fetch_array($sql, MYSQL_ASSOC)) { $tab_php[]= $row['Texte']; //on empile dans un array php } ?> <html> <head> <script type="text/javascript"> function affiche_texte(i){ <?php //on va generer l'array JS a partir de celui en php echo 'var tableau_JS = new Array('; foreach($tab_php as $valeur) { if(is_int($value)){ echo $value.','; }else{ echo '"'.$value.'",'; } } echo ');'; ?> var obj=document.getElementById('zone_affichage'); //on atteint le div obj.innerHTML=tableau_JS[i]; //on y ecrit l'entrée de l'array i++; if (i < tableau_JS.length) { //on boucle tant que le tableau n'est pas fini setTimeout(affiche_texte(i),10000);//tempo en milisecondes } } </script> </head> <body onLoad="javascript:affiche_texte('0');"> <div id="zone_affichage"> <!-- ça va s'afficher là --> </div> </body> </html>
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
10 sept. 2009 à 18:15
10 sept. 2009 à 18:15
heu une petite erreur il faut comme ça je crois:
setTimeout("affiche_texte(i)",10000);
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
10 sept. 2009 à 18:28
10 sept. 2009 à 18:28
j'ai fait l'essai effectivement beaucoup de bugs
essayes comme ça (j'ai remplacé ta requette par un array en "dur" un deux trois..)
essayes comme ça (j'ai remplacé ta requette par un array en "dur" un deux trois..)
<?php //connexion etc.. //$sql = mysql_query("SELECT * FROM ".$base_page." WHERE Ecran='".$ecran." ' OR Ecran='1' "); $tab_php=array("un","deux","trois","quatre"); /*while($row = mysql_fetch_array($sql, MYSQL_ASSOC)) { $tab_php[]= $row['Texte']; //on empile dans un array php } */ ?> <html> <head> <script type="text/javascript"> var i=0; function affiche_texte(){ <?php //on va generer l'array JS a partir de celui en php $j=0; echo 'var tableau_JS = new Array('; foreach($tab_php as $value) { if(is_int($value)){ echo $value; }else{ echo '"'.$value.'"'; } $j++; if($j<sizeof($tab_php)) echo ','; } echo ');'; ?> var obj=document.getElementById('zone_affichage'); //on atteint le div obj.innerHTML=tableau_JS[i]; //on y ecrit l'entrée de l'array i++; if (i < tableau_JS.length) { //on boucle tant que le tableau n'est pas fini setTimeout("affiche_texte()",10000);//tempo en milisecondes } } </script> </head> <body onLoad="javascript:affiche_texte('0');"> <div id="zone_affichage"> <!-- ça va s'afficher là --> </div> </body> </html>
Ca fait un script qui compte de 1 à 4 en lettre :p
http://www.lycee-queneau.net/afficheur3.php
Mais il y'a un défilement maintenant !
Merci de ton aide !
http://www.lycee-queneau.net/afficheur3.php
Mais il y'a un défilement maintenant !
Merci de ton aide !
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
10 sept. 2009 à 18:38
10 sept. 2009 à 18:38
une petite variante: (modif de la ligne setTimeout et suppr va ri=0)
<?php //connexion etc.. //$sql = mysql_query("SELECT * FROM ".$base_page." WHERE Ecran='".$ecran." ' OR Ecran='1' "); $tab_php=array("un","deux","trois","quatre"); /*while($row = mysql_fetch_array($sql, MYSQL_ASSOC)) { $tab_php[]= $row['Texte']; //on empile dans un array php } */ ?> <html> <head> <script type="text/javascript"> function affiche_texte(i){ <?php //on va generer l'array JS a partir de celui en php $j=0; echo 'var tableau_JS = new Array('; foreach($tab_php as $value) { if(is_int($value)){ echo $value; }else{ echo '"'.$value.'"'; } $j++; if($j<sizeof($tab_php)) echo ','; } echo ');'; ?> var obj=document.getElementById('zone_affichage'); //on atteint le div obj.innerHTML=tableau_JS[i]; //on y ecrit l'entrée de l'array i++; if (i < tableau_JS.length) { //on boucle tant que le tableau n'est pas fini setTimeout(function(){affiche_texte(i);},5000);//tempo en milisecondes } } </script> </head> <body onLoad="javascript:affiche_texte('0');"> <div id="zone_affichage"> <!-- ça va s'afficher là --> </div> </body> </html>
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
10 sept. 2009 à 18:46
10 sept. 2009 à 18:46
oui c'est normal puisque j'ai remplacé ta requette par un array bidon,
le deuxième code est juste un peu "plus propre"
pour avoir ta page normale remplaces:
<?php
//connexion etc..
//$sql = mysql_query("SELECT * FROM ".$base_page." WHERE Ecran='".$ecran." ' OR Ecran='1' ");
$tab_php=array("un","deux","trois","quatre");
/*
par:
le deuxième code est juste un peu "plus propre"
pour avoir ta page normale remplaces:
<?php
//connexion etc..
//$sql = mysql_query("SELECT * FROM ".$base_page." WHERE Ecran='".$ecran." ' OR Ecran='1' ");
$tab_php=array("un","deux","trois","quatre");
/*
par:
<?php //connexion etc.. $sql = mysql_query("SELECT * FROM ".$base_page." WHERE Ecran='".$ecran." ' OR Ecran='1' "); $tab_php=array();
j'ai mis ca comme ca :
<?php
//connexion etc..
Require("./Include/function.php");
include("./Include/connexion.inc.php");
$sql = mysql_query("SELECT * FROM ".$base_page." WHERE Ecran='".$ecran." ' OR Ecran='1' ");
$tab_php=array();
?>
<html>
<head>
<script type="text/javascript">
function affiche_texte(i){
<?php
//on va generer l'array JS a partir de celui en php
$j=0;
echo 'var tableau_JS = new Array(';
foreach($tab_php as $value) {
if(is_int($value)){
echo $value;
}else{
echo '"'.$value.'"';
}
$j++;
if($j<sizeof($tab_php)) echo ',';
}
echo ');';
?>
var obj=document.getElementById('zone_affichage'); //on atteint le div
obj.innerHTML=tableau_JS[i]; //on y ecrit l'entrée de l'array
i++;
if (i < tableau_JS.length) {
//on boucle tant que le tableau n'est pas fini
setTimeout(function(){affiche_texte(i);},5000);//tempo en milisecondes
}
}
</script>
</head>
<body onLoad="javascript:affiche_texte('0');">
<div id="zone_affichage">
<!-- ça va s'afficher là -->
</div>
</body>
</html>
et meme sorti : page blanche avec undefined :-/
<?php
//connexion etc..
Require("./Include/function.php");
include("./Include/connexion.inc.php");
$sql = mysql_query("SELECT * FROM ".$base_page." WHERE Ecran='".$ecran." ' OR Ecran='1' ");
$tab_php=array();
?>
<html>
<head>
<script type="text/javascript">
function affiche_texte(i){
<?php
//on va generer l'array JS a partir de celui en php
$j=0;
echo 'var tableau_JS = new Array(';
foreach($tab_php as $value) {
if(is_int($value)){
echo $value;
}else{
echo '"'.$value.'"';
}
$j++;
if($j<sizeof($tab_php)) echo ',';
}
echo ');';
?>
var obj=document.getElementById('zone_affichage'); //on atteint le div
obj.innerHTML=tableau_JS[i]; //on y ecrit l'entrée de l'array
i++;
if (i < tableau_JS.length) {
//on boucle tant que le tableau n'est pas fini
setTimeout(function(){affiche_texte(i);},5000);//tempo en milisecondes
}
}
</script>
</head>
<body onLoad="javascript:affiche_texte('0');">
<div id="zone_affichage">
<!-- ça va s'afficher là -->
</div>
</body>
</html>
et meme sorti : page blanche avec undefined :-/
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
10 sept. 2009 à 19:07
10 sept. 2009 à 19:07
il manque la boucle while :
<?php //connexion etc.. Require("./Include/function.php"); include("./Include/connexion.inc.php"); $sql = mysql_query("SELECT * FROM ".$base_page." WHERE Ecran='".$ecran." ' OR Ecran='1' "); $tab_php=array(); while($row = mysql_fetch_array($sql, MYSQL_ASSOC)) { $tab_php[]= $row['Texte']; //on empile dans un array php } ?> <html> <head> <script type="text/javascript"> function affiche_texte(i){ <?php //on va generer l'array JS a partir de celui en php $j=0; echo 'var tableau_JS = new Array('; foreach($tab_php as $value) { if(is_int($value)){ echo $value; }else{ echo '"'.$value.'"'; } $j++; if($j<sizeof($tab_php)) echo ','; } echo ');'; ?> var obj=document.getElementById('zone_affichage'); //on atteint le div obj.innerHTML=tableau_JS[i]; //on y ecrit l'entrée de l'array i++; if (i < tableau_JS.length) { //on boucle tant que le tableau n'est pas fini setTimeout(function(){affiche_texte(i);},5000);//tempo en milisecondes } } </script> </head> <body onLoad="javascript:affiche_texte('0');"> <div id="zone_affichage"> <!-- ça va s'afficher là --> </div> </body> </html>