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

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
20 sept. 2009 à 20:01
il me semble que je t'avais mis addslashes dans cette partie la:
foreach($tab_php as $value) {
if(is_int($value)){
echo $value;
}else{
echo '"'.$value.'"';
}


C'est passé ou ?
0
Alain...?
0
Ca donne ceci le code pour le moment... :


<?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>
0
avec ceci comme résultat :

http://www.lycee-queneau.net/afficheur3.php
0
Need help :/
0

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

Posez votre question
:-(
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
30 sept. 2009 à 09:38
On va mettre une trace:
<?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
}
////TEST on affiche ce qu'il y a dans tab_php
//ça devrait te mettre Array[... etc.. avec le contenu du champ Texte de ta table
echo '<pre>';
print_r($tab_php);
echo '</pre>';
///fin TEST
?>
<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>
0
Bonjour Alain !

Merci beaucoup de te réoccuper de mon cas, je ne saurais vraiment pas comment trouver de l'aide autrement...
J'ai placé les marqueurs et l'affichage a l'air correct :

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


Je ne sais pas trop comment faire la boucle maintenant...?

Encore merci !

Anto
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
30 sept. 2009 à 17:20
pourtant ce script fonctionne très bien chez moi

j'ai mis en commentaires la partie lecture dans la base puisque moi je ne l'ai pas

essayes ce script

<?php
 function stripHTMLtags($texte){
	 //On retire le code HTML
	 $mots = explode("<",$texte);
	$texte = "";
	 $nbmots = count($mots);

	 for ($m = 0; $m < $nbmots; $m++)
	 {
	 $mot = $mots[$m];
	$finbalise = strpos($mot,">",0);
	if ($finbalise > 0) { $mot = substr($mot,$finbalise+1); }
	 $texte .= "$mot";
	 }
 return $texte;
 }

 
//pour revenir à la normale decommente cette partie lecture dans la base

/*
//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();

/////TEST a supprimer qd ça marchera
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
}
*/
///
//et supprime cette ligne qui genere un array en "dur"
$tab_php=array("on essaye l'affichage de l'ecran !","<p>ca marche</p><br />","<p>inserez votre texte ici.</p>");
////TEST on affiche ce qu'il y a dans tab_php ()a supprimer après)
//ça devrait te mettre Array[... etc.. avec le contenu du champ Texte de ta table
echo '<pre>';
print_r($tab_php);
echo '</pre>';
///fin TEST
?>
<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) {
	$value=stripHTMLtags($value);// on appelle la fonction qui supprime les balises HTML
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>


si il fonctionne c'est que les balises <p> </p> et <br /> qui sont dans le texte dans ta base gênent, j'ai rajouté une fonction qui les supprime

si il fonctionne tu n'auras plus qu'a décommenter la partie lecture de la base et supprimer la ligne qui cree un array en dur
0
Ca a fonctionné en dur, mais une fois que j'ai décommenté comme suit :
plus rien n'a fonctionné et ca ma juste ecrit: undefined :-/
C'est dommage ca marche presque... Et ca marchait quand on faisait pas de boucle infini :/

<?php
function stripHTMLtags($texte){
//On retire le code HTML
$mots = explode("<",$texte);
$texte = "";
$nbmots = count($mots);

for ($m = 0; $m < $nbmots; $m++)
{
$mot = $mots[$m];
$finbalise = strpos($mot,">",0);
if ($finbalise > 0) { $mot = substr($mot,$finbalise+1); }
$texte .= "$mot";
}
return $texte;
}


//pour revenir à la normale decommente cette partie lecture dans la base


//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();

/////TEST a supprimer qd ça marchera
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) {
$value=stripHTMLtags($value);// on appelle la fonction qui supprime les balises HTML
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>
0
C'est moi en anonyme, je suis tres loin de chez moi et n,ai pas mes codes.

As tu remarque que ca te mets Nbr d'enr trouves : 0

donc tu as un pb au niveau de ta requette a la base, avant ca marquait 3
0
En vacances? :-)


j'ai résolu le problème sql avec un ereg :

<?php

function stripHTMLtags($texte){

//On retire le code HTML

$mots = explode("<",$texte);

$texte = "";

$nbmots = count($mots);



for ($m = 0; $m < $nbmots; $m++)

{

$mot = $mots[$m];

$finbalise = strpos($mot,">",0);

if ($finbalise > 0) { $mot = substr($mot,$finbalise+1); }

$texte .= "$mot";

}

return $texte;

}





//pour revenir à la normale decommente cette partie lecture dans la base





//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." ") or die ("Pb avec la requette ".mysql_error());

$tab_php=array();



/////TEST a supprimer qd ça marchera

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))

{

if (ereg($ecran,$row['Ecran'])){
$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) {

$value=stripHTMLtags($value);// on appelle la fonction qui supprime les balises HTML

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>


Ca fonctionne!!!

Par contre le souci c'est que le code java n'affiche rien c'est tout blanc...


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
6 oct. 2009 à 20:16
Bizarre,
regarde dans la console d'erreur javascript
menu Firefox outils console d'erreurs javascript

ca devrait te donner des indications

ici je n'ai pas les outils pour
desole
0
Bonjour Alain!

J'y ai trouvé deux erreurs!


Erreur : unterminated string literal
Fichier Source : http://www.lycee-queneau.net/afficheur3.php
Ligne : 14, Colonne : 27
Code Source :
var tableau_JS = new Array("Reunion le 18 Juin à 10h00

Erreur : affiche_texte is not defined
Fichier Source : http://www.lycee-queneau.net/afficheur3.php
Ligne : 1


not defined?
Il manquerait une declaration en javascript? pourtant ça marchait comme ca avant nop?
0
<?php

function stripHTMLtags($texte){

//On retire le code HTML

$mots = explode("<",$texte);

$texte = "";

$nbmots = count($mots);



for ($m = 0; $m < $nbmots; $m++)

{

$mot = $mots[$m];

$finbalise = strpos($mot,">",0);

if ($finbalise > 0) { $mot = substr($mot,$finbalise+1); }

$texte .= "$mot";

}

return $texte;

}





//pour revenir à la normale decommente cette partie lecture dans la base





//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." ") or die ("Pb avec la requette ".mysql_error());

$tab_php=array();



/////TEST a supprimer qd ça marchera

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))

{

if (ereg($ecran,$row['Ecran'])){
$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) {

$value=stripHTMLtags($value);// on appelle la fonction qui supprime les balises HTML

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>
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
7 oct. 2009 à 14:44
La deuxieme erreur decoule de la premiere, il y a une erreur dans la fonction s donc nsuite la fonction est introuvable

e pense ue c'est du au contenu de tes textes, il doit y voir encore d'autres carateres qui genent

dans ta base supime tout ce qui n'est pas du texte pur
0
oki je v essayer merci :)
0
Genial ca avance Merci!!

C'est bien un souci de mise en forme du texte !

Avec juste du texte ca marche !

Par contre jai besoin que ca s'affiche en html (pr mettre images, en gras, couleurs et tout...) est ce qu'il y'a un moyen?
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
7 oct. 2009 à 16:16
he ben non, c'est justement les balises html qui genent dans l'array javascript

il va faloir trouver une autre solution

regardes du cote de la balise <marquee> qui te permet de faire defiler du texte

ou alors vas voir dans google Texte defilant

j'ai ca chez moi mais je ne rentre pas avant le 17, (je suis de l'autre cote de l'atlantique)
0
Carrement de l'autre coté de l'atlantique??? :-D
Ben ca va ! Ca doit aller pour toi !
je vais voir du coté d ela balise marquee mais c trop dommage tu avais la solution..............
y'a pas moyen de rentrer de l'html dans un tableau javascript...
0
Rien de terrible en marquee....

Je v quand même essayer de trouver un moyen de mettre de l'html dns le tableau javascript...
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
9 oct. 2009 à 15:50
HTML tel que le script est fait maintenant tu ne pourras pas car il y a une fonction qui suprime les balises html justement car certaines genent lors de la generation du tableau javascript

Comme je te disais j'ai d'autres solutions sur mon micro a la maison
0