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
Bonjour!

Je me permets de poster sur ce forum car je ne trouve pas la solution à un de mes problème en php.
Je temporise une boucle while qui affiche entrée par entrée une 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>";
sleep(10);
}

jusque là tout va bien ça marche !

Le problème c'est que je souhaiterai que lorsque la boucle while reprend la première entrée de la base de donnée disparaisse pour n'afficher qu'une entrée par entrée... !
Impossible de trouver une solution....

Merci de votre aide si vous trouvez!

Anto
A voir également:

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 à 20:24
C'est pas une erreur JS puisque ça marche avec un deux trois quaatre

on va mettre des traces:
<?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' ") or die ("Pb avec la requette ".mysql_error());
$tab_php=array();

echo 'table: '.$base_page.'<br />';
echo 'ecran: '.$$ecran.'<br />';
echo 'Nombre enregistrements trouves: '.mysql_num_rows($sql);
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>
0
tu pense que le souci viendrait du php?

il affiche ceci desormais :

table: AFFICH_page
ecran:
Nombre enregistrements trouves: 0
undefined
0
j'ai rajouté $ecran = 'A';

mais toujours le meme affichage...

<?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' ") or die ("Pb avec la requette ".mysql_error());
$tab_php=array();
$ecran = 'A'; //valeur a chager selon l'ecran : voir la base de donnée
echo 'table: '.$base_page.'<br />';
echo 'ecran: '.$$ecran.'<br />';
echo 'Nombre enregistrements trouves: '.mysql_num_rows($sql);
while($row = mysql_fetch_array($sql, MYSQL_ASSOC))
{
$tab_php[]= $row['Texte']; //on empile dans un array php
}
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
11 sept. 2009 à 13:25
petit rappel:

le php est un langage qui s'exécute séquentielle ment c'est à dire ligne après ligne

or tu as mis:

$sql = mysql_query("SELECT * FROM ".$base_page." WHERE Ecran='".$ecran." ' OR Ecran='1' ") or die ("Pb avec la requette ".mysql_error());
$tab_php=array();
$ecran = 'A'; //valeur a chager selon l'ecran : voir la base de donnée


donc tu définis $ecran='A'; APRES ta requette comment veux tu que cette dernière recherche les ecrans A ?

d'ailleurs à quel endroit as tu la variable $ecran lorsque elle n'est pas égale à A ?

essayes avec:

$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' ") or die ("Pb avec la requette ".mysql_error());
$tab_php=array();

0

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

Posez votre question
j'ai vraiment pas géré pour la variable aprés la boucle -_-
je teste ca !

encore merci !
0
la page me retourne ceci : table:

AFFICH_page
ecran:
Nombre enregistrements trouves: 2
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
11 sept. 2009 à 18:40
à la place de
echo 'ecran: '.$$ecran.'<br />';

il faut mettre:

echo 'ecran: '.$ecran.'<br />';

un petit $ en trop

ensuite quand ta page s'affiche fais afficher la source et donnes en moi une copie
0
J'ai modifié la ligne et voici la source


table: AFFICH_page<br />ecran: A<br />Nombre enregistrements trouves: 2<html>
<head>
<script type="text/javascript">

function affiche_texte(i){
var tableau_JS = new Array("on essaye l'affichagede l'ecran ! ","<p>inserez votre texte ici.<img height="68" width="100" alt="" src="/userfiles/image/jaquette.jpg" /></p>");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>

Je suis un peu perdu !!
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
13 sept. 2009 à 21:10
je ne pensait pas que le contenu de ce que tu veux afficher contienne des "

donc si dans une chaine qui commence par des" il y a des" il fut les echapper, la fonction addslashes fait ça


modifies ta fonction anis:

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 addslashes($value);
}else{
echo '"'.addslashes($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
}
}
0
tu es genial ca marche !!!
pr contre y'a t'il moyen que cela boucle a l'infini le defilement?

En tout cas merci beaucoup beaucoup beaucoup !!!
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
15 sept. 2009 à 20:00
Merci,

oui on peut:

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 addslashes($value);
		}else{
			echo '"'.addslashes($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++;
	//tu modifies la fin  ainsi attention aux { }

	if (i == tableau_JS.length) i=0; //on a atteint la fin de l'arrray alors on remet l'index au début, a 0

	setTimeout(function(){affiche_texte(i);},5000);//tempo en milisecondes

}
0
Ca ne boucle pas ^^
0
http://www.lycee-queneau.net/afficheur3.php
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
16 sept. 2009 à 18:44
Essayes en remplaçant:
if (i == tableau_JS.length) i=0;

par

if (i == tableau_JS.length){
 i=0;
}
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
16 sept. 2009 à 18:49
Normal que ça ne boucle pas tu n'as pas appliqué la modif que je t'ai donné, j'ai fais afficher le source du lien que tu m'as donné

alors mets:
<html>
<head>
<script type="text/javascript">

function affiche_texte(i){
var tableau_JS = new Array("on essaye l'affichagede l'ecran ! ","<p>inserez votre texte ici.<img height=\"68\" width=\"100\" alt=\"\" src=\"/userfiles/image/jaquette.jpg\" /></p>");
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) {
//fin de l'array on repart a zero
	i=0;

}
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>
0
essai de mettre un set_time_limit(0) si tu fais un sleep peu etre cela peu regler ton probleme simplement sans etre obligé de faire une magouille à cause des 30 secondes.
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
16 sept. 2009 à 20:05
Chez moi le code que j'ai donné ci dessus fonctionne parfaitement
0
graffx Messages postés 6506 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 24 mars 2019 1 973
16 sept. 2009 à 20:12
sinon il y a un systeme simple mais il doit bouffer quelques requetes quand meme.


Tu connais le systeme qui te permet d' afficher par exemple 20 entrées sur ta page et qu' au dela, la page t' affiche automatiquement en bas d epage "page precedente" "page suivante" ou meme le numero des page?

He bien tu fais la meme chose mais avec une entrée par page, tu vires les liens et tu fais une redirection sur( par exemple) 2 secondes.



Une parmi tant d' autres.... a toi de choisir la meilleure
0
Bouhouhou ca ne marche pas :-(

je ne comprend plus rien en + !

ca affiche tout blanc maintenant

source :


<?php
//connexion etc..
Require("./Include/function.php");
include("./Include/connexion.inc.php");


$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' ") or die ("Pb avec la requette ".mysql_error());
$tab_php=array();


echo 'table: '.$base_page.'<br />';
echo 'ecran: '.$ecran.'<br />';
echo 'Nombre enregistrements trouves: '.mysql_num_rows($sql);
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 addslashes($value);
}else{
echo '"'.addslashes($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++;
//tu modifies la fin ainsi attention aux { }

if (i == tableau_JS.length) i=0; //on a atteint la fin de l'arrray alors on remet l'index au début, a 0

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>



affichage :


http://www.lycee-queneau.net/afficheur3.php

:-/
0
Besoin de vous :-/
0