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
Hello !
Tu rentres quand?
Je reste très intéressé si tu as d'autres solutions...
D'avance merci !!
Anto
Tu rentres quand?
Je reste très intéressé si tu as d'autres solutions...
D'avance merci !!
Anto
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
14 oct. 2009 à 14:54
14 oct. 2009 à 14:54
Je rentre samedi, mais je risque d'etre un peu decalque par le decalage horaire
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 oct. 2009 à 16:14
16 oct. 2009 à 16:14
J'ai une idee de script different:
- on ne charge plus les textes dans un array javascript, mais le php a la suite de la requette dans la base va les ecrire dans des div, avec chacun un id different, dans la partie body de la page html
et le role de la fonction javascript sera seulement de masquer / afficher un seul des div les uns apres les autres par la tempo
par style.display='none' / 'block'
donc plus aucun probleme avec les balises html tu pourra mettre celles que tu veux
commence deja a essayer de faire la partie php qui va generer les div dans la partie <body>
une piste: utilise une boucle foreach($tab_php .........)
semaine prochaine on regardera ensemble ce que tu aura fait et on fera la partie fonction javascript
Salut
@lain
- on ne charge plus les textes dans un array javascript, mais le php a la suite de la requette dans la base va les ecrire dans des div, avec chacun un id different, dans la partie body de la page html
<div id="num a incremeter>contenu texte lu dans la table</div>"
et le role de la fonction javascript sera seulement de masquer / afficher un seul des div les uns apres les autres par la tempo
par style.display='none' / 'block'
donc plus aucun probleme avec les balises html tu pourra mettre celles que tu veux
commence deja a essayer de faire la partie php qui va generer les div dans la partie <body>
une piste: utilise une boucle foreach($tab_php .........)
semaine prochaine on regardera ensemble ce que tu aura fait et on fera la partie fonction javascript
Salut
@lain
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
19 oct. 2009 à 10:14
19 oct. 2009 à 10:14
Bon ben voilà je t'ai fait ça:
J'ai rajouté aussi un peu de CSS pour que tu puisses faire une mise en forme plus commode, chez moi ça marche.
Tu peux mettre toutes les balises HTML que tu veux ça ne gene plus, mais pour la mise en forme regardes du côté du CSS, c'est mieux.
J'ai rajouté aussi un peu de CSS pour que tu puisses faire une mise en forme plus commode, chez moi ça marche.
Tu peux mettre toutes les balises HTML que tu veux ça ne gene plus, mais pour la mise en forme regardes du côté du CSS, c'est mieux.
<?php ////initialisation des variables: $ecran = 'A'; //valeur a chager selon l'ecran : voir la base de donnée $tab_php=array(); //// //// include: include("./Include/function.php"); //// /////connexion: include("./Include/connexion.inc.php"); //// $sql = mysql_query("SELECT * FROM ".$base_page." ") or die ("Pb avec la requette ".mysql_error()); $nbr_enr_trouves=mysql_num_rows($sql); /* ///TEST sans BDD $tab_php=array("<p>Bonjour page1</p>","<b>Page2</b>","Page3<br />avec saut de ligne"); $nbr_enr_trouves=sizeof($tab_php); /// */ //le DOCTYPE et meta content ci dessous sont super importants ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="fr"> <head> <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type" /><title> <script type="text/javascript"> function affiche_texte(i){ //on va seulement passer au script JS le nombre de textes a afficher var nbr_div = <?php echo $nbr_enr_trouves; ?>; //partie affichage successif d'un des textes // a chaque appel de la fonction a va en afficher un et masquer les autres //pour cela on fait une boucle qui les parcours tous et mets seulement celui concerne a display=block et tous les autres a display=none for(j=0;j<nbr_div;j++){ var obj=document.getElementById('id_'+j); //on atteint le div if(j==i){ //si le numero du div est egal a celui que l'on veut afficher if(document.getElementById('id_'+j).style.display=='none'){ //et si il est masque on l'affiche document.getElementById('id_'+j).style.display='block'; } }else{ //pour tous les autres si il sont affiches on les masque if(document.getElementById('id_'+j).style.display=='block'){ document.getElementById('id_'+j).style.display='none'; } } } // partie gestion de boucle et rebouclage au debut i++; if (i == nbr_div) i=0; //on a atteint la fin on remet la variable i parametre d'appel de la fonction a 0 //partie tempo et rappel fonction setTimeout(function(){affiche_texte(i);},5000);//tempo en milisecondes } </script> </head> <style type="text/css"> div .afficheur{ /* ci dessous tu va pouvoir mettre en forme tes blocks d'affichage avec du CSS c'est tres pratique et puissant */ width: 200px; height: auto; background-color: #fff999; font-family: Arial sans sherif; font-size: 0.9em; color: #666666; text-align: center; } </style> <body onLoad="javascript:affiche_texte('0');"> <div id="zone_affichage"> <?php if($nbr_enr_trouves>0){ //si enr trouves dans la BDD //a chaque passage de la boucle on va generer une "boite" div contenant chaque texte foreach($tab_php as $cle=>$value) { //$cle= index de l'array c. a. d. 0 1 2 on va s'en servir pour genrer dynamiquement l'id du div //$value contient le texte a afficher a chaque fois echo '<div id="id_'.$cle.'" class="afficheur" style="display:none;">'.$value.'</div>'; } }else{// si aucun enr trouve echo 'Aucun enregistrement, correspondant au critère, trouvé dans la base !'; } ?> </div> </body> </html>
Salut Alain !
Bon retour de notre côté de l'atlantique !
J'ai essayé ton script (en mode sans bdd) et ca reste tout blanc!
http://www.lycee-queneau.net/afficheur5.php
et avec la base de donnée :
http://www.lycee-queneau.net/afficheur6.php
la même page blanche :/
Je ois souvent cette ligne : <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Qu'est ce que c'est?
Merci de ton aide !!
Anto
Bon retour de notre côté de l'atlantique !
J'ai essayé ton script (en mode sans bdd) et ca reste tout blanc!
http://www.lycee-queneau.net/afficheur5.php
et avec la base de donnée :
http://www.lycee-queneau.net/afficheur6.php
la même page blanche :/
Je ois souvent cette ligne : <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Qu'est ce que c'est?
Merci de ton aide !!
Anto
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
19 oct. 2009 à 16:27
19 oct. 2009 à 16:27
la ligne <DOCTYPE c'est pour indiquer au navigateur le type de données a traiter, c'est indispensable de le mettre
par contre qd je clique sur le deuxieme lien, celui ou tu dis avec la BDD, j'ai l'affichage qui fonctionne bien chez moi , par contre ce qui s'affiche c'est les valeurs sans BDD c'est a dire avec les valeurs rentrées en dur dans l'array $tab_php
je ne comprend pas
@lain
par contre qd je clique sur le deuxieme lien, celui ou tu dis avec la BDD, j'ai l'affichage qui fonctionne bien chez moi , par contre ce qui s'affiche c'est les valeurs sans BDD c'est a dire avec les valeurs rentrées en dur dans l'array $tab_php
je ne comprend pas
@lain
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
19 oct. 2009 à 16:39
19 oct. 2009 à 16:39
ca y est j'ai trouve j'ai pas encore la tete bien en face j'avais oublie 3 lignes:
<?php ////initialisation des variables: $ecran = 'A'; //valeur a chager selon l'ecran : voir la base de donnée $tab_php=array(); //// //// include: include("./Include/function.php"); //// /////connexion: include("./Include/connexion.inc.php"); //// $sql = mysql_query("SELECT * FROM ".$base_page." ") or die ("Pb avec la requette ".mysql_error()); $nbr_enr_trouves=mysql_num_rows($sql); /////il manquait ces lignes while($row = mysql_fetch_array($sql, MYSQL_ASSOC)){ $tab_php[]= $row['Texte']; //on empile dans un array php } ///// /* ///TEST sans BDD $tab_php=array("<p>Bonjour page1</p>","<b>Page2</b>","Page3<br />avec saut de ligne"); $nbr_enr_trouves=sizeof($tab_php); /// */ //le DOCTYPE et meta content ci dessous sont super importants ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="fr"> <head> <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type" /><title> <script type="text/javascript"> function affiche_texte(i){ //on va seulement passer au script JS le nombre de textes a afficher var nbr_div = <?php echo $nbr_enr_trouves; ?>; //partie affichage successif d'un des textes // a chaque appel de la fonction a va en afficher un et masquer les autres //pour cela on fait une boucle qui les parcours tous et mets seulement celui concerne a display=block et tous les autres a display=none for(j=0;j<nbr_div;j++){ var obj=document.getElementById('id_'+j); //on atteint le div if(j==i){ //si le numero du div est egal a celui que l'on veut afficher if(document.getElementById('id_'+j).style.display=='none'){ //et si il est masque on l'affiche document.getElementById('id_'+j).style.display='block'; } }else{ //pour tous les autres si il sont affiches on les masque if(document.getElementById('id_'+j).style.display=='block'){ document.getElementById('id_'+j).style.display='none'; } } } // partie gestion de boucle et rebouclage au debut i++; if (i == nbr_div) i=0; //on a atteint la fin on remet la variable i parametre d'appel de la fonction a 0 //partie tempo et rappel fonction setTimeout(function(){affiche_texte(i);},5000);//tempo en milisecondes } </script> </head> <style type="text/css"> div .afficheur{ /* ci dessous tu va pouvoir mettre en forme tes blocks d'affichage avec du CSS c'est tres pratique et puissant */ width: 200px; height: auto; background-color: #fff999; font-family: Arial sans sherif; font-size: 0.9em; color: #666666; text-align: center; } </style> <body onLoad="javascript:affiche_texte('0');"> <div id="zone_affichage"> <?php if($nbr_enr_trouves>0){ //si enr trouves dans la BDD //a chaque passage de la boucle on va generer une "boite" div contenant chaque texte foreach($tab_php as $cle=>$value) { //$cle= index de l'array c. a. d. 0 1 2 on va s'en servir pour genrer dynamiquement l'id du div //$value contient le texte a afficher a chaque fois echo '<div id="id_'.$cle.'" class="afficheur" style="display:none;">'.$value.'</div>'; } }else{// si aucun enr trouve echo 'Aucun enregistrement, correspondant au critère, trouvé dans la base !'; } ?> </div> </body> </html>
http://www.lycee-queneau.net/afficheur6.php
et...........................................................................................
ca marche super !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Avec du code html, avec des accents, tout !!!
Si j'ai bien compris le code par contre je ne peux mettre une temporistion differente pour chaque entrée dans la bd par contre? (en fonction de si c'est long ou pas à lire)
en tout cas MERCI MERCI MERCI beaucoup de tout le temps que tu m'as consacré!
et...........................................................................................
ca marche super !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Avec du code html, avec des accents, tout !!!
Si j'ai bien compris le code par contre je ne peux mettre une temporistion differente pour chaque entrée dans la bd par contre? (en fonction de si c'est long ou pas à lire)
en tout cas MERCI MERCI MERCI beaucoup de tout le temps que tu m'as consacré!
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
19 oct. 2009 à 17:25
19 oct. 2009 à 17:25
attention pour les accents codes les en html c'est a dire & suivi de eacute; pour é etc...
par contre pour une tempo differente je vais voir
par contre pour une tempo differente je vais voir
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
19 oct. 2009 à 17:43
19 oct. 2009 à 17:43
Voilà:
par contre il faut que tu rajoutes un champ Tempo dans ta table tu y mets 5000 10000 etc c'est en milisecondes
par contre il faut que tu rajoutes un champ Tempo dans ta table tu y mets 5000 10000 etc c'est en milisecondes
<?php ////initialisation des variables: $ecran = 'A'; //valeur a chager selon l'ecran : voir la base de donnée $tab_php=array(); $tab_tempo=array(); //// //// include: include("./Include/function.php"); //// /////connexion: include("./Include/connexion.inc.php"); //// $sql = mysql_query("SELECT * FROM ".$base_page." ") or die ("Pb avec la requette ".mysql_error()); $nbr_enr_trouves=mysql_num_rows($sql); /////il manquait ces lignes while($row = mysql_fetch_array($sql, MYSQL_ASSOC)){ $tab_php[]= $row['Texte']; //on empile dans un array php $tab_tempo[]=$row['Tempo']; //on empile dans un array tempo; } ///// /* ///TEST sans BDD $tab_php=array("<p>Bonjour page1</p>","<b>Page2</b>","Page3<br />avec saut de ligne"); $nbr_enr_trouves=sizeof($tab_php); $tab_tempo=array("5000","10000","20000"); /// */ ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="fr"> <head> <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type" /><title> <script type="text/javascript"> function affiche_texte(i){ //on va seulement passer au script JS le nombre de textes a afficher var nbr_div = <?php echo $nbr_enr_trouves; ?>; //on va aussi lui passer l'array tempo //on va generer l'array JS a partir de celui en php <?php $j=0; echo 'var tableau_tempo = new Array('; foreach($tab_tempo as $value) { if(is_int($value)){ echo $value; }else{ echo '"'.$value.'"'; } $j++; if($j<sizeof($tab_tempo)) echo ','; } echo ');'; ?> //partie affichage successif d'un des textes // a chaque appel de la fonction a va en afficher un et masquer les autres //pour cela on fait une boucle qui les parcours tous et mets seulement celui concerne a display=block et tous les autres a display=none for(j=0;j<nbr_div;j++){ var obj=document.getElementById('id_'+j); //on atteint le div if(j==i){ //si le numero du div est egal a celui que l'on veut afficher if(document.getElementById('id_'+j).style.display=='none'){ //et si il est masque on l'affiche document.getElementById('id_'+j).style.display='block'; } }else{ //pour tous les autres si il sont affiches on les masque if(document.getElementById('id_'+j).style.display=='block'){ document.getElementById('id_'+j).style.display='none'; } } } // partie gestion de boucle et rebouclage au debut var index_tempo=i; i++; if (i == nbr_div) i=0; //on a atteint la fin on remet la variable i parametre d'appel de la fonction a 0 //partie tempo et rappel fonction setTimeout(function(){affiche_texte(i);},tableau_tempo[index_tempo]);//tempo en milisecondes } </script> </head> <style type="text/css"> div .afficheur{ /* ci dessous tu va pouvoir mettre en forme tes blocks d'affichage avec du CSS c'est tres pratique et puissant */ width: 200px; height: auto; background-color: #fff999; font-family: Arial sans sherif; font-size: 0.9em; color: #666666; text-align: center; } </style> <body onLoad="javascript:affiche_texte('0');"> <div id="zone_affichage"> <?php if($nbr_enr_trouves>0){ //si enr trouves dans la BDD //a chaque passage de la boucle on va generer une "boite" div contenant chaque texte foreach($tab_php as $cle=>$value) { //$cle= index de l'array c. a. d. 0 1 2 on va s'en servir pour genrer dynamiquement l'id du div //$value contient le texte a afficher a chaque fois echo '<div id="id_'.$cle.'" class="afficheur" style="display:none;">'.$value.'</div>'; } }else{// si aucun enr trouve echo 'Aucun enregistrement, correspondant au critère, trouvé dans la base !'; } ?> </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
20 oct. 2009 à 10:21
20 oct. 2009 à 10:21
Petite amélioration, au lieu de rentrer dans ta base les valeurs de tempo en milisecondes, avec cette modif tu pourra les mettre en secondes ce qui est plus parlant
<?php ////initialisation des variables: $ecran = 'A'; //valeur a chager selon l'ecran : voir la base de donnée $tab_php=array(); $tab_tempo=array(); //// //// include: include("./Include/function.php"); //// /////connexion: include("./Include/connexion.inc.php"); //// $sql = mysql_query("SELECT * FROM ".$base_page." ") or die ("Pb avec la requette ".mysql_error()); $nbr_enr_trouves=mysql_num_rows($sql); /////il manquait ces lignes while($row = mysql_fetch_array($sql, MYSQL_ASSOC)){ $tab_php[]= $row['Texte']; //on empile dans un array php $tab_tempo[]=$row['Tempo']; //on empile dans un array tempo; } ///// ///TEST sans BDD $tab_php=array("<p>Bonjour page1</p>","<b>Page2</b>","Page3<br />avec saut de ligne"); $nbr_enr_trouves=sizeof($tab_php); $tab_tempo=array("8","3","20"); /// ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="fr"> <head> <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type" /><title> <script type="text/javascript"> function affiche_texte(i){ //on va seulement passer au script JS le nombre de textes a afficher var nbr_div = <?php echo $nbr_enr_trouves; ?>; //on va aussi lui passer l'array tempo //on va generer l'array JS a partir de celui en php <?php $j=0; echo 'var tableau_tempo = new Array('; foreach($tab_tempo as $value) { if(is_int($value)){ echo $value; }else{ echo '"'.$value.'"'; } $j++; if($j<sizeof($tab_tempo)) echo ','; } echo ');'; ?> //partie affichage successif d'un des textes // a chaque appel de la fonction a va en afficher un et masquer les autres //pour cela on fait une boucle qui les parcours tous et mets seulement celui concerne a display=block et tous les autres a display=none for(j=0;j<nbr_div;j++){ var obj=document.getElementById('id_'+j); //on atteint le div if(j==i){ //si le numero du div est egal a celui que l'on veut afficher if(document.getElementById('id_'+j).style.display=='none'){ //et si il est masque on l'affiche document.getElementById('id_'+j).style.display='block'; } }else{ //pour tous les autres si il sont affiches on les masque if(document.getElementById('id_'+j).style.display=='block'){ document.getElementById('id_'+j).style.display='none'; } } } // partie gestion de boucle et rebouclage au debut var tempo=1000*tableau_tempo[i]; //ca permet de mettre la tempo en secondes dans la base i++; //incrementation pour passer au div suivant if (i == nbr_div) i=0; //on a atteint la fin on remet la variable i parametre d'appel de la fonction a 0 //partie tempo et rappel fonction setTimeout(function(){affiche_texte(i);},tempo);//tempo en milisecondes } </script> </head> <style type="text/css"> div .afficheur{ /* ci dessous tu va pouvoir mettre en forme tes blocks d'affichage avec du CSS c'est tres pratique et puissant */ width: 200px; height: auto; background-color: #fff999; font-family: Arial sans sherif; font-size: 0.9em; color: #666666; text-align: center; } </style> <body onLoad="javascript:affiche_texte('0');"> <div id="zone_affichage"> <?php if($nbr_enr_trouves>0){ //si enr trouves dans la BDD //a chaque passage de la boucle on va generer une "boite" div contenant chaque texte foreach($tab_php as $cle=>$value) { //$cle= index de l'array c. a. d. 0 1 2 on va s'en servir pour genrer dynamiquement l'id du div //$value contient le texte a afficher a chaque fois echo '<div id="id_'.$cle.'" class="afficheur" style="display:none;">'.$value.'</div>'; } }else{// si aucun enr trouve echo 'Aucun enregistrement, correspondant au critère, trouvé dans la base !'; } ?> </div> </body> </html>
Coucou Alain!
Pourrais je avoir ton mail pour que tu m'envoies ton adresse pour que je puise t'envoyer un petit truc pour te remercier??
Merci encore!
à bientot!
Antonin
Pourrais je avoir ton mail pour que tu m'envoies ton adresse pour que je puise t'envoyer un petit truc pour te remercier??
Merci encore!
à bientot!
Antonin
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 nov. 2009 à 18:38
6 nov. 2009 à 18:38
Ca marche le dernier script que je t'ai donné ?
Mais je te remercie, ma première récompense est la satisfaction de ceux que j'ai pu aider, je ne veux donc rien.
Cordialement
@lain
Mais je te remercie, ma première récompense est la satisfaction de ceux que j'ai pu aider, je ne veux donc rien.
Cordialement
@lain