Visible sous FF, mais ni sous Opéra, ni sous IE

Eléphanteau du PHP | 38 Messages

14 juin 2007, 13:50

Bonjour à tous,

J'ai testé mon forum sous ces trois navigateurs, pour voir ce que cela donnait, les modifications à apporter etc etc.
Lorsque j'ai testé, cela marchait sous les trois, avec parfois certaines petites imperfections. Pour corriger cela, je change mon code (pas le CSS, dans le design pas de problème), et je re test.

Les imperfections était du genre affichage inutile lorsque le membre n'existe plus, ou que l'information requise n'existe pas....

Mais la, mes messages étaient devenus invisibles sous IE et Opéra, mais pas sous Firefox. J'ai chercher, rien à faire, je ne vois pas. Je procède donc à une méthode très classique dans ces cas la : ctrl-Z :lol: .

Mais la.....rien !! Pas de changement !! Toujours visible sous FF, mais rien sous IE et Opéra. J'ai beau chercher, et tester, je ne trouve pas.

Je viens donc faire appel à vous, au cas ou vous verriez ce que je n'ai pas vu... voila le code qui affiche un message :
<?php
private function createPost($post) {
    $datas = mysql_fetch_assoc($post);
   
    //Si on a récupéré des messages
    if( !empty($datas['post_id']) ){

    //Et si on dispose des information de l'utilisateur
    if (!empty($datas['user_id']) ){
        $form .= '<tr class="title" id="pid'.$datas['post_id'].'">
                  <td>
                    <center><a href="profil.php?profil='.$datas['user_id'].'&action=consult">'.$datas['user_login'].'</a></center>
                  </td>
                  <td>
                     <a href="view.php?view=top&top='.$datas['top_id'].'#pid'.$datas['post_id'].'">#</a> Posté le '.date("d/m/Y \à H:i:s", strtotime($datas['post_create']));

        //Si on a le rang 0 ou si l'id du posteur est le même que celui du créateur, et que le sujet n'est pas bloqué, on peut éditer
        if($_SESSION['rank']==0 || ($_SESSION['id'] == $datas['user_id'] && $_SESSION['rank'] <= $datas['top_blocked'] ) ) {
            $form .= ' <a href="modif.php?mod=editpost&post='.$datas['post_id'].'">Editer</a> ';
        }
       
        //Si on a le rang 0 on peut supprimer
        if( $_SESSION['rank']==0 ) {
            $form .= ' <a href="modif.php?mod=delpost&post='.$datas['post_id'].'">Supprimer</a></td> ';
        }
        else {
            $form .= '</td>';
        }
       
        $form .= '</tr>
                 <tr class="top">
                     <td><center><img src="'.$datas['user_avatar'].'" alt="Avatar" /></center>
                          '.$datas['user_post'].' message';
                           $form .= (($datas['user_post']>1)?'s':'');
                           $form .= '<br/>
                                 <em>Inscrit le '.date("d/m/Y \à H:i:s", strtotime($datas['user_registration'])).'</em><br/>
                           Groupe : ';
                           switch($datas['user_rank']) {
                                case (0) : $form .= 'Administrateur'; break;
                                case (1) : $form .= 'Modérateur'; break;
                                case (2) : $form .= 'Membre'; break;
                                default : $form .= 'Bloqué';
                           }
        }

     //Si on a pas les information du membre (mais qu'on a les infos d'un message)
     elseif(empty($datas['user_id']) ){
        $form .= '<tr class="title" id="pid'.$datas['post_id'].'">
                     <td><center>Inconnu</center></td>
                     <td><a href="view.php?view=top&top='.$datas['top_id'].'#pid'.$datas['post_id'].'">#</a> Posté le '.date("d/m/Y \à H:i:s", strtotime($datas['post_create']));

        //Si on a le rang 0 on peut editer et supprimer
        if($_SESSION['rank']==0) {
            $form .= ' <a href="modif.php?mod=editpost&post='.$datas['post_id'].'">Editer</a>
                <a href="modif.php?mod=delpost&post='.$datas['post_id'].'">Supprimer</a></td>';
        }

        $form .= '</tr>
                  <tr class="top">
                    <td><center><img src="./avatars/littleunknow.gif" alt="Avatar" /></center><br/>
                       Ce membre n\'existe plus';
     }
       
     //Puis on affiche les messages                         
     $form .= '</td>

        //Ici en caché pour que javascript vienne récupérer la valeur
        //Quand je le met en type = text, j'ai nien toute les valeurs, dans tout les navigateurs
        <input type="hidden" id="recup" value="'.stripslashes(htmlspecialchars($datas['post_message'])).'" />
        <td name="postMess" id="postMess"></td></tr>';     
                                       
        echo $form;
       
        //On ferme php, on fait appel à la fonction code_to_html
        ?>
        <script language="javascript" type="text/javascript">
                p=document.getElementById("recup").value
                p = code_to_html(p);
                document.getElementById("postMess").innerHTML=p ;
        </script> <?php
     }
}
Chose étrange : le premier message de chaque page s'affiche sous IE et Opéra. Mais uniquement le premier....

Voila, j'espère que quelqu'un verra ce que je n'ai pas été capable de voir.


Merci d'avance

Eléphant du PHP | 132 Messages

15 juin 2007, 23:40

Et qu'est-ce qu'il te génère au niveau HTML ? (pour voir si t'as tout simplement pas oublié une balise)
:: Kmeleon ::
CanalPC - La webradio communautaire :: Ecrivez/Enregistrez/Ecoutez !

Eléphanteau du PHP | 38 Messages

17 juin 2007, 12:34

Alors, déjà voila le résultat visuel :
Image
Sous firefox, les messages sont tous la.

Voila le code html retourné pour la page complète :

Code : Tout sélectionner

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" > <head> <title>Sujet</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <!-- on appelle le fichier prev.js pour faire fonctionne la prévisualisation --> <script language="javascript" type="text/javascript" src="includes/prev.js"></script> <script language="javascript" type="text/javascript" src="includes/bbcode.js"></script> <link rel="stylesheet" media="screen" type="text/css" title="Design" href="./designs/design.css" /> <link rel="stylesheet" media="screen" type="text/css" title="Design" href="./designs/table.css" /> <!--[if lte IE 6]> <link rel="stylesheet" media="screen" type="text/css" title="Design" href="./designs/ie.css" /> <![endif]--> </head> <body> <div id="global"> <a href="http://www.imagesplus.org/"><div id="banniere"></div></a> <a href="http://www.imagesplus.org/"><div id="ban"></div></a> <div id='menu'>Sujet <div class="inmenu"> <ul> <li><a href="forum.php">Accueil</a></li> <li><a href="forum.php?type=connection">Se connecter</a></li> <li><a href="forum.php?type=registration">S'inscrire</a></li> <li><a href="new.php?new=mail">Nous écrire</a></li> </ul> </div> </div> <div id='corps'> <span class="ariane">Vous êtes ici : <a href="index.php">Index</a> <img src="images/fleche.gif" alt="-->"/> <a href="forum.php">Accueil</a> <img src="images/fleche.gif" alt="-->"/> <a href="view.php?cat=5&view=cat">Divers</a> <img src="images/fleche.gif" alt="-->"/> <a href="view.php?th=7&view=th">Présentation</a> <img src="images/fleche.gif" alt="-->"/> <a href="view.php?view=top&top=3"> bonjour </a><br/><br/></span> <table name="table" id="table"> <thead> <tr> <th class="intermediate">Auteur</th> <th class="message">Message</th> </tr> </thead> <tbody> <tr class="title" id="pid4"> <td><center><a href="profil.php?profil=1&action=consult">Admin</a></center></td> <td><a href="view.php?view=top&top=3#pid4">#</a> Posté le 15/06/2007 à 19:49:24</td> </tr> <tr class="top"> <td><center><img src="avatars/unknow.gif" alt="Avatar" /></center> 6 messages<br/> <em>Inscrit le 15/06/2007 à 11:48:09</em><br/> Groupe : Administrateur</td><td name="post" id="post"></td></tr><input type="hidden" id="recup" value=" [gras]test[/gras] " /> <script language="javascript" type="text/javascript" > p=document.getElementById("recup").value p = code_to_html(p); document.getElementById("post").innerHTML=p ; </script> <tr class="title" id="pid5"> <td><center><a href="profil.php?profil=1&action=consult">Admin</a></center></td> <td><a href="view.php?view=top&top=3#pid5">#</a> Posté le 15/06/2007 à 19:49:35</td> </tr> <tr class="top"> <td><center><img src="avatars/unknow.gif" alt="Avatar" /></center> 6 messages<br/> <em>Inscrit le 15/06/2007 à 11:48:09</em><br/> Groupe : Administrateur</td><td name="post" id="post"></td></tr><input type="hidden" id="recup" value=" test encore !! " /> <script language="javascript" type="text/javascript" > p=document.getElementById("recup").value p = code_to_html(p); document.getElementById("post").innerHTML=p ; </script> <tr class="title" id="pid6"> <td><center><a href="profil.php?profil=1&action=consult">Admin</a></center></td> <td><a href="view.php?view=top&top=3#pid6">#</a> Posté le 15/06/2007 à 19:49:45</td> </tr> <tr class="top"> <td><center><img src="avatars/unknow.gif" alt="Avatar" /></center> 6 messages<br/> <em>Inscrit le 15/06/2007 à 11:48:09</em><br/> Groupe : Administrateur</td><td name="post" id="post"></td></tr><input type="hidden" id="recup" value=" un dernier " /> <script language="javascript" type="text/javascript" > p=document.getElementById("recup").value p = code_to_html(p); document.getElementById("post").innerHTML=p ; </script> </tbody> <tfoot><th class="page">Pages : [1]&nbsp;&nbsp;</th> <th>Pas encore inscrit ?<br/> C'est necessaire pour pouvoir participer au forum.<br/> Pour vous inscrire, <a href="forum.php?type=registration">cliquez ici</a>.</th> </tfoot> </table> </div> </div> </body> </html>


Image
Sous opéra, il y a le premier, et les autres ne s'affichent pas.

Voila le code html :

Code : Tout sélectionner

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" > <head> <title>Sujet</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <!-- on appelle le fichier prev.js pour faire fonctionne la prévisualisation --> <script language="javascript" type="text/javascript" src="includes/prev.js"></script> <script language="javascript" type="text/javascript" src="includes/bbcode.js"></script> <link rel="stylesheet" media="screen" type="text/css" title="Design" href="./designs/design.css" /> <link rel="stylesheet" media="screen" type="text/css" title="Design" href="./designs/table.css" /> <!--[if lte IE 6]> <link rel="stylesheet" media="screen" type="text/css" title="Design" href="./designs/ie.css" /> <![endif]--> </head> <body> <div id="global"> <a href="http://www.imagesplus.org/"><div id="banniere"></div></a> <a href="http://www.imagesplus.org/"><div id="ban"></div></a> <div id='menu'>Sujet <div class="inmenu"> <ul> <li><a href="forum.php">Accueil</a></li> <li><a href="forum.php?type=connection">Se connecter</a></li> <li><a href="forum.php?type=registration">S'inscrire</a></li> <li><a href="new.php?new=mail">Nous écrire</a></li> </ul> </div> </div> <div id='corps'> <span class="ariane">Vous êtes ici : <a href="index.php">Index</a> <img src="images/fleche.gif" alt="-->"/> <a href="forum.php">Accueil</a> <img src="images/fleche.gif" alt="-->"/> <a href="view.php?cat=5&view=cat">Divers</a> <img src="images/fleche.gif" alt="-->"/> <a href="view.php?th=7&view=th">Présentation</a> <img src="images/fleche.gif" alt="-->"/> <a href="view.php?view=top&top=3"> bonjour </a><br/><br/></span> <table name="table" id="table"> <thead> <tr> <th class="intermediate">Auteur</th> <th class="message">Message</th> </tr> </thead> <tbody> <tr class="title" id="pid4"> <td><center><a href="profil.php?profil=1&action=consult">Admin</a></center></td> <td><a href="view.php?view=top&top=3#pid4">#</a> Posté le 15/06/2007 à 19:49:24</td> </tr> <tr class="top"> <td><center><img src="avatars/unknow.gif" alt="Avatar" /></center> 6 messages<br/> <em>Inscrit le 15/06/2007 à 11:48:09</em><br/> Groupe : Administrateur</td><td name="post" id="post"></td></tr><input type="hidden" id="recup" value=" [gras]test[/gras] " /> <script language="javascript" type="text/javascript" > p=document.getElementById("recup").value p = code_to_html(p); document.getElementById("post").innerHTML=p ; </script> <tr class="title" id="pid5"> <td><center><a href="profil.php?profil=1&action=consult">Admin</a></center></td> <td><a href="view.php?view=top&top=3#pid5">#</a> Posté le 15/06/2007 à 19:49:35</td> </tr> <tr class="top"> <td><center><img src="avatars/unknow.gif" alt="Avatar" /></center> 6 messages<br/> <em>Inscrit le 15/06/2007 à 11:48:09</em><br/> Groupe : Administrateur</td><td name="post" id="post"></td></tr><input type="hidden" id="recup" value=" test encore !! " /> <script language="javascript" type="text/javascript" > p=document.getElementById("recup").value p = code_to_html(p); document.getElementById("post").innerHTML=p ; </script> <tr class="title" id="pid6"> <td><center><a href="profil.php?profil=1&action=consult">Admin</a></center></td> <td><a href="view.php?view=top&top=3#pid6">#</a> Posté le 15/06/2007 à 19:49:45</td> </tr> <tr class="top"> <td><center><img src="avatars/unknow.gif" alt="Avatar" /></center> 6 messages<br/> <em>Inscrit le 15/06/2007 à 11:48:09</em><br/> Groupe : Administrateur</td><td name="post" id="post"></td></tr><input type="hidden" id="recup" value=" un dernier " /> <script language="javascript" type="text/javascript" > p=document.getElementById("recup").value p = code_to_html(p); document.getElementById("post").innerHTML=p ; </script> </tbody> <tfoot><th class="page">Pages : [1]&nbsp;&nbsp;</th> <th>Pas encore inscrit ?<br/> C'est necessaire pour pouvoir participer au forum.<br/> Pour vous inscrire, <a href="forum.php?type=registration">cliquez ici</a>.</th> </tfoot> </table> </div> </div> </body> </html>
Voila. Mais j'avoue que je ne vois pas ; si j'avais oublié une balise, cela ne fonctionnerait pour aucun navigateurs non ??

Enfin bref, merci de m'aider !!

Mammouth du PHP | 684 Messages

18 juin 2007, 14:29

Je dis c'est assez etrange comme probleme.
J'ai fais une difference entre les deux sortie html que tu nous a poste et diff me retourne juste un probleme d'espace en trop ou en moins. Cela ne doit pas etre important.

Par contre ce que je vois sur les captures FF et opera c'est le mot "test" qui change de taille.

Je dirais affiche ton site sans les CSS pour voir si ton site est bien interpreter par les navigateurs et si les contenus sont bien generes.
Zigz4g

Eléphanteau du PHP | 38 Messages

20 juin 2007, 15:04

Alors, j'ai testé sans les styles.

Pour FF, toujours aucun problème, les messages s'affichent. Pour Opéra, toujours rien, et pour IE non plus, si ce n'est le premier message qui s'affiche....

Pour le problème de taille, si tu disait cela par rapport à mon screen, c'est sans doute la différence entre ces deux images qui te fait dire cela car sinon, la taille reste la même, j'ai vérifié.

Et en effet, c'est très bizarre comme problème.....

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

20 juin 2007, 15:44

C'est quoi la fonction code_to_html() je ne vois pas sa définition dans ton code.

Sinon, Il n'y a rien de bizzare dans cette histoire.

Ton programme génére plusieurs champs cachés ayant le même nom "recup" et plusieurs TD nommé "post" et c'est là le problème car plusieurs codes javascript qui font la même chose d'ailleurs " balancent un "recup" dans un "post" ".
Le problème est: "quel code X affectera quel message "recup" à quel TD "post" ?" y'en a plusieurs homonymes!

Sous FF ce mécanisme a l'air de marcher car FF récupère la réponse du serveur plus rapidement que les autres et presque à l'echo et affecte donc le dernier champ caché "recup" au dernier TD "post" reçus dans la réponse du serveur.

IE & Co. qui attend que le serveur ait terminé le traitement pour recevoir la réponse, ne sait plus quel "recup" irra dans quel "post" puisqu'il y en a plusieurs homonymes. Il se limite alors au traitement de la première occurence de noms (et c'est pourquoi il affiche seulement le premier message)

Je te conseille de personnaliser les noms des champs cachés et des TD récepteurs des messages
en les réfrençant par leur contexte.

Pour faire simple utilises les noms: "recup1", "recup2", .... et "post1", "post2",....
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphanteau du PHP | 38 Messages

22 juin 2007, 00:26

Bonsoir,

non, ma fonction code_to_html n'est pas affichée ici : en gros c'est une fonction pour le bbcode : change mes balise [gras][/gras] etc etc.
Pour faire simple utilises les noms: "recup1", "recup2", .... et "post1", "post2",....
Oui, facile en php, avec une variable qui s'incrémentes à chaque passage de boucle et que je concatène à mes variables "recup" et "postMesss".....mais dans le javascript, comment je fais pour lui dire : la tu prend recup1 et tu met dans postMess1, la tu prend recup2 etc ??

Parce que ca :

Code : Tout sélectionner

<script language="javascript" type="text/javascript"> p=document.getElementById("recup".$i).value p = code_to_html(p); document.getElementById("postMess".$i).innerHTML=p ; </script>
C'est pas possible (avec les variable php concaténé.... )
Une solution pour moi ?? Parce que la je ne coule plus, j'ai touché le fond et je creuse.....

Merci d'avance

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

22 juin 2007, 07:06

Effectivement c'est ça ce qu'il faut faire, et dans le script javascript aussi car tu le génére par PHP.
Je te montre où:

Regarde dans cette partie de ton code, là où tu génére le code javascript
...
...

//Puis on affiche les messages
$form .= '</td>

//Ici en caché pour que javascript vienne récupérer la valeur
//Quand je le met en type = text, j'ai nien toute les valeurs, dans tout les navigateurs
<input type="hidden" id="recup" value="'.stripslashes(htmlspecialchars($datas['post_message'])).'" />
<td name="postMess" id="postMess"></td></tr>';

echo $form;

//On ferme php, on fait appel à la fonction code_to_html
?>
<script language="javascript" type="text/javascript">
p=document.getElementById("recup").value
p = code_to_html(p);
document.getElementById("postMess").innerHTML=p ;
</script> <?php
}
}
Il suffit d'intégrer le script javascript dans l'echo. Comme ça:
    //Puis on affiche les messages                         
     $form .= '</td>
        <input type="hidden" id="recup' . $i . '" value="'.stripslashes(htmlspecialchars($datas['post_message'])).'" />
        <td name="postMess" id="postMess' . $i . '"></td></tr>

         <script language="javascript" type="text/javascript">
                p=document.getElementById("recup' . $i . '").value;
                document.getElementById("postMess' . $i . '").innerHTML = code_to_html(p);
        </script>';     

        //On incrémente $i
       $i++;
        
        //On affiche le form                               
        echo $form;
       
      }
} 
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphanteau du PHP | 38 Messages

22 juin 2007, 16:56

sadeq, tu est un génie......

Ca marche !!!!!

Mille fois merci !!!!!

Mammouth du PHP | 19672 Messages

22 juin 2007, 18:44

Modération :
Krok88, si ta question est résolue, pense à ajouter le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.
Tu peux réaliser cette opération en cliquant sur le bouton Image en haut à gauche de ce sujet.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 38 Messages

22 juin 2007, 18:50

OUpppppssss, désolé Cyrano, je le fais d'habitude !!!

C'est la joie sans doute....

Je le met en résolu de suite !