Page 1 sur 1

[Problèm] Une Scrollbar sur du PHP à un endroit précis.

Posté : 02 oct. 2008, 16:27
par Axe
Salut à tous :)
Voilà, je suis débutant en PHP et je me suis lancé dans un projet que j'ai fini mais il me reste encore un petit problème à résoudre.
J'ai créé un code PHP pour pouvoir poster des commentaires sur une news (ou autres).

Mais seulement voilà, j'ai créé un cadre pour ma news, tout tiens dedans mais quand il y a trop de commentaires, ils dépassent mon image qui l'encadre.
Alors j'ai eu l'idée de faire une Scrollbar (c'est la flèche que vous avez à votre droite de votre page web, pour descendre ou monter dessus).

Je connais le code HTML/CSS pour la créée et je l'ai testé sur du code entièrement en HTML et elle fonctionne très bien. Mais quand je l'applique sur du code PHP, elle est présente mais au dessus du texte que doit afficher le PHP alors que le texte est censé être dedans et aussi, elle est invisible... on l'a vois pas mais elle est présente.


Alors je fais appel à vous, j'aimerais encadré ce code PHP par une Scrollbar.
<?php
	function connect_db() {
        $host = "*****";
        $login = "*****";
        $pass = "*****";
        $base = "*****";
        $connect = mysql_connect($host, $login, $pass);
        mysql_select_db($base, $connect);
        }

	function renvoi($url){
        echo"<script language=\"javascript\">";
        echo"window.location='".$url."';";
        echo"</script>";
	}
		
	function voir_commentaires() {
        echo"<b>Les commentaires postés</b>";
        echo"<b> - <a href='commentaires.php?action=ajouter'></b>";
        echo"Ajouter un commentaire</a><br/><br/>";
        $voir = mysql_query("SELECT * FROM commentaires ORDER BY id DESC");
        $nb_message = mysql_num_rows($voir);
        echo"<b>Il y a ".$nb_message." message(s)</b><br/><br/>";
        while($tab = mysql_fetch_array($voir, MYSQL_ASSOC)){

        echo"<b>".stripslashes($tab['pseudo'])." à envoyé le ".$tab['date']."</b> :<br/>";
        echo"".stripslashes($tab['message'])."<br/><br/>";
        }
	}

	function form() {
        echo"<div align='center'>";
        echo"<b>Ajouter un commentaire<br/><br/></b>";
        echo"<form method='post' action='commentaires.php'>";
        echo"<b>Votre pseudo<br/></b>";
        echo"<input type='text' name='pseudo'><br/><br/>";
        echo"<b>Votre commentaire<br/></b>";
        echo"<textarea name='message' rows='6' cols='30' wrap='virtual'></textarea><br/><br/>";
        echo"<input type='submit' name='submit' value='Poster le commentaire'>";
        echo"</form>";
        echo"</div>";
	}

	function ajout_message() {
        if(empty($_POST['pseudo']) or empty($_POST['message'])){
        echo"<center><font color='red'>Il faut remplir tout les champs</center></font><br/><br/>";
        form();
        }else{
        $date = date("d-m-Y");
        $pseudo = trim($_POST['pseudo']);
        $pseudo = strip_tags(addslashes($pseudo));
        $message = strip_tags(addslashes($_POST['message']));
        mysql_query("INSERT INTO commentaires VALUES
        ('','".$date."','".$pseudo."','".$message."')");
        renvoi("commentaires.php");
        }
        }
	?>
Voilà, ça serait super sympa si vous pourriez m'aider :)
Merci d'avance.
Ciao

P.S: j'ai déjà essayer de faire "<div id="scrollbar">MON CODE</div>, puis dans le CSS mettre "overflow:auto;" et "position:absolute;" et toutes les propriétés mais elle ne fonctionne que en HTML. Merci

Posté : 02 oct. 2008, 16:32
par guilt92
Le contenu de ta news, qu'il soit généré en php ou pas n'impacte pas sur le style.

Il faut que ta news + les commentaires soit dans une <div> avec un attribut overflow:auto et une hauteur fixe et apres si le contenu (qu'il soit généré en html, php ou peu importe) est plus grand que la hauter la barre de défilement apparaitra.

Montre nous la div dans laquelle apparaisse tes news, la tu nous montres que des fonctions php sans jamais les appeler...

Posté : 02 oct. 2008, 16:34
par Calimero
Salut,

Comme le souligne guilt92, il serait beaucoup plus pratique de pouvoir visualiser le problème (tant qu'à faire à partir de la page ou il se présente, si possible). Tu peux la mettre en ligne et nous faire un lien stp ?

Posté : 02 oct. 2008, 16:36
par Invité
Merci beaucoup de vos réponses super rapide, je vais encore essayer de faire la scrollbar puis je mets en ligne et je vous envoie tout dans 5min (le code y compris) :)
Merci beaucoup.

Posté : 02 oct. 2008, 16:50
par Invité
Voilà (je suis véritablement désolé pour le double post mais je ne savais pas que les invités ne pouvais pas éditer leur post).

Voilà, maintenant, ma scrollbar ne s'affiche même pas.
Quand je fais "clique droit sur monfichier => ouvrir avec... => firefox" elle apparait bien et quand je mets en ligne, rien ne se passe.

Voici mon code PHP (dans une page HTML bien entendu) :

<div id="contenu">
		<div class="essai">
		<?php
		function connect_db() {
        $host = "sql";
        $login = "le-style-axe";
        $pass = "Snypers";
        $base = "le-style-axe";
        $connect = mysql_connect($host, $login, $pass);
        mysql_select_db($base, $connect);
        }
		function renvoi($url){
        echo"<script language=\"javascript\">";
        echo"window.location='".$url."';";
        echo"</script>";
		}
		
		function voir_commentaires() {
		
        echo"<b>Les commentaires postés</b>";
        echo"<b> - <a href='commentaires.php?action=ajouter'></b>";
        echo"Ajouter un commentaire</a><br/><br/>";
        $voir = mysql_query("SELECT * FROM commentaires ORDER BY id DESC");
        $nb_message = mysql_num_rows($voir);
        echo"<b>Il y a ".$nb_message." message(s)</b><br/><br/>";
        while($tab = mysql_fetch_array($voir, MYSQL_ASSOC)){

        echo"<b>".stripslashes($tab['pseudo'])." à envoyé le ".$tab['date']."</b> :<br/>";
        echo"".stripslashes($tab['message'])."<br/><br/>";
        }
		}
		function form() {
        echo"<div align='center'>";
        echo"<b>Ajouter un commentaire<br/><br/></b>";
        echo"<form method='post' action='commentaires.php'>";
        echo"<b>Votre pseudo<br/></b>";
        echo"<input type='text' name='pseudo'><br/><br/>";
        echo"<b>Votre commentaire<br/></b>";
        echo"<textarea name='message' rows='6' cols='30' wrap='virtual'></textarea><br/><br/>";
        echo"<input type='submit' name='submit' value='Poster le commentaire'>";
        echo"</form>";
        echo"</div>";
		}
		function ajout_message() {
        if(empty($_POST['pseudo']) or empty($_POST['message'])){
        echo"<center><font color='red'>Il faut remplir tout les champs</center></font><br/><br/>";
        form();
        }else{
        $date = date("d-m-Y");
        $pseudo = trim($_POST['pseudo']);
        $pseudo = strip_tags(addslashes($pseudo));
        $message = strip_tags(addslashes($_POST['message']));
        mysql_query("INSERT INTO commentaires VALUES ('','".$date."','".$pseudo."','".$message."')");
        renvoi("commentaires.php");
        }
		}
		?>
		</div>
		</div>
Le div contenu, c'est pour la mise en forme ;)

Et voici le code CSS :

Code : Tout sélectionner

.essai { overflow:auto; position:absolute; left:15%; top: 30%; width: 700px; height: 300px; }
Et voici ce que ça donne (donc rien n'a changé) :

Tout est ICI

Merci

Posté : 02 oct. 2008, 18:57
par Calimero
Le contenu de ta frame est truffée d'erreurs :-) Un petit coup de validateur ne ferait pas de mal...

Je te copie la source de cette frame :
<!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>Systeme de commentaires sur news - Creart Magazine</title>
       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
	   <link rel="stylesheet" media="screen" type="text/css" title="Design" href="design.css" />
   </head>
   <body>
     
		<div id="contenu">

		<!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>Systeme de commentaires sur news - Creart Magazine</title>
       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
	   <link rel="stylesheet" media="screen" type="text/css" title="Design" href="design.css" />
   </head>
   <body>
     
		<div id="contenu">

		<div class="essai">
				</div>
		</div>
     
   <script type="text/javascript" src="http://services.hostarea.org/pub/verificateur.js.php?login=le-style-axe"></script></body>
</html><b>Les commentaires postés</b><b> - <a href='commentaires.php?action=ajouter'></b>Ajouter un commentaire</a><br/><br/><b>Il y a 9 message(s)</b><br/><br/><b>Axe à envoyé le 01-10-2008</b> :<br/>Merci Léo :)
Mais nan le HTML fonctionne pas lol<br/><br/><b>Léo à envoyé le 01-10-2008</b> :<br/>Waw pas mal mec :) 
J'aime beaucoup.

(je sais pas si le HTML fonctionne lol<br/><br/><b>Axe à envoyé le 01-10-2008</b> :<br/>Et voilà maintenant je vais poster ça sur Creart magazine lol.

Ciao tous :)<br/><br/><b>Axe à envoyé le 01-10-2008</b> :<br/>Et voilà avec une petite mise en forme dont je n'ai pas pris le temps de soigner.<br/><br/><b>Marc à envoyé le 01-10-2008</b> :<br/>Test pour le codeur Axe lol
Bravo mec, ça fonctionne apparemment :)<br/><br/><b>moi-même à envoyé le 01-10-2008</b> :<br/>Yep sa marche mec ;)<br/><br/><b>DigitalShadow à envoyé le 01-10-2008</b> :<br/>Test Shadow <br/><br/><b>Axe à envoyé le 01-10-2008</b> :<br/>Alors je teste avec quelques modifications si ça fonctionne toujours lol<br/><br/><b>Axe à envoyé le 01-10-2008</b> :<br/>Héhé ça fonctionne lol<br/><br/>		</div>

     
   <script type="text/javascript" src="http://services.hostarea.org/pub/verificateur.js.php?login=le-style-axe"></script></body>
</html>
En vrac :
- il y a deux fois l'en-tête de la page (doctype, <html>, <head>, <body>...)
- il y a deux fois cette ligne d'inclusion javascript : <script type="text/javascript" src="http://services.hostarea.org/pub/verifi ... -style-axe">
- il y a un <link> au milieu du <body>
- le <div id="contenu"> est là deux fois lui aussi (l'une dans l'autre)
- le <div class="essai"> est fermé tout de suite après, donc vide

Aide-toi du validateur pour corriger tout ça sans rien oublier. Si tu as de la chance, ton problème initial sera réglé en même temps. Et si ce n'est pas le cas on partira sur de meilleures bases pour comprendre ce qui ne va pas :-)

Posté : 02 oct. 2008, 19:15
par Axe
Ah non xD
Il y a du avoir une erreur, sur mes fichiers, je n'ai pas du tout ça...

Regardez :

Index.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>Systeme de commentaires sur news - Creart Magazine</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <link rel="stylesheet" media="screen" type="text/css" title="Design" href="design.css" /> </head> <body> <div id="contenu"> <img src="images/creartmagazine.gif" alt="Creart Magazine"> <p>Creart Magazine est un magazine lisible que sur votre PC en .pdf pour l'instant.<br /> Ce magazine a pour but de vous informer, de vous initier, de vous apprendre et bien d'autre chose...<br /> Il sera composé de tutoriels bien rédigés (sur le multimédia, le graphisme et l'informatique en général), de news sur le monde de l'informatique, de conseils et bien d'autres.<br /> Celui-ci a deux versions : une payante, mais plus complète et une totalement gratuite. Pour plus d'informations, consultez le site web : <a class="creart-magazine" href="http://creart-magazine.fr">http://creart-magazine.fr</a> </p> </div> <div id="auteur"> <p>Posté par Axe, le 1 Octobre 2008</p> </div> <div id="reponse"> <a href="commentaires.php?action=ajouter">Poster un commentaire<br /></a> <a href="commentaires.php?action=voir_commentaires">Voir les commentaires</a> </div> </body> </html>
Le fichier en question (fc_commentaires.php) :
<!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>Systeme de commentaires sur news - Creart Magazine</title>
       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
	   <link rel="stylesheet" media="screen" type="text/css" title="Design" href="design.css" />
   </head>
   <body>
     
		<div id="contenu">
		<div class="essai">
		<?php
		function connect_db() {
        $host = "sql";
        $login = "le-style-axe";
        $pass = "Snypers";
        $base = "le-style-axe";
        $connect = mysql_connect($host, $login, $pass);
        mysql_select_db($base, $connect);
        }
		function renvoi($url){
        echo"<script language=\"javascript\">";
        echo"window.location='".$url."';";
        echo"</script>";
		}
		
		function voir_commentaires() {
		
        echo"<b>Les commentaires postés</b>";
        echo"<b> - <a href='commentaires.php?action=ajouter'></b>";
        echo"Ajouter un commentaire</a><br/><br/>";
        $voir = mysql_query("SELECT * FROM commentaires ORDER BY id DESC");
        $nb_message = mysql_num_rows($voir);
        echo"<b>Il y a ".$nb_message." message(s)</b><br/><br/>";
        while($tab = mysql_fetch_array($voir, MYSQL_ASSOC)){

        echo"<b>".stripslashes($tab['pseudo'])." à envoyé le ".$tab['date']."</b> :<br/>";
        echo"".stripslashes($tab['message'])."<br/><br/>";
        }
		}
		function form() {
        echo"<div align='center'>";
        echo"<b>Ajouter un commentaire<br/><br/></b>";
        echo"<form method='post' action='commentaires.php'>";
        echo"<b>Votre pseudo<br/></b>";
        echo"<input type='text' name='pseudo'><br/><br/>";
        echo"<b>Votre commentaire<br/></b>";
        echo"<textarea name='message' rows='6' cols='30' wrap='virtual'></textarea><br/><br/>";
        echo"<input type='submit' name='submit' value='Poster le commentaire'>";
        echo"</form>";
        echo"</div>";
		}
		function ajout_message() {
        if(empty($_POST['pseudo']) or empty($_POST['message'])){
        echo"<center><font color='red'>Il faut remplir tout les champs</center></font><br/><br/>";
        form();
        }else{
        $date = date("d-m-Y");
        $pseudo = trim($_POST['pseudo']);
        $pseudo = strip_tags(addslashes($pseudo));
        $message = strip_tags(addslashes($_POST['message']));
        mysql_query("INSERT INTO commentaires VALUES ('','".$date."','".$pseudo."','".$message."')");
        renvoi("commentaires.php");
        }
		}
		?>
		</div>
		</div>
     
   </body>
</html>
Et voilà, le reste est dans la même structure :)
Encore merci :)

Posté : 02 oct. 2008, 19:31
par Calimero
Une partie des problèmes que je te signalais semblent venir de l'hébergeur (hostarea) qui inclut de la publicité dans ta page (va voir le lien que tu as donné à la fin du post précédent et regarde la source HTML de la page...) et donc en transforme le contenu. L'autre partie vient de ton script et donc au moins certaines des remarques que je t'ai faites dans mon post précédent doivent s'appliquer.