Faire apparaitre et disparaitre des div PHP javascript CSS
jeffreynaz
Messages postés32Date d'inscriptionlundi 24 janvier 2011StatutMembreDernière intervention26 octobre 2011
-
21 avril 2011 à 19:27
cs_aKheNathOn
Messages postés575Date d'inscriptiondimanche 23 décembre 2001StatutMembreDernière intervention23 octobre 2012
-
29 avril 2011 à 18:05
Bonjour à tous je vous supplie de m'aider.
j'explique le probleme :
je fais un site sur lequel on peut publier des articles et les commenter et faire des reponse aux commentaires.
bref je fais un page articles.php
en gros dans cette page je fais afficher tous mes articles dans mon div "liste_article" et en fait j'aimerais qu'en dessous de chaque article il y ait deux bouton ou "lien"
le premier qui affiche la liste de tous les commentaires déjà présent sur cet article.
le second qui ne s'affiche que si le membre est connecté (pour ca je ferais un test qui verifie si mes variable login stocké en session existe.)
qui affiche donc un formulaire permettant d'ajouter un commentaire sur l'article en question.
j'ia essayer de l'adapter à mon code mais il y a des soucis.
nottament avec ma fonction javascript.
la fonction javascript fais en sorte que quand la page est chargé si javascript est disponible le contenu est caché directement or la ce n'est pas le cas et quand je clic sur fermer cela me cache tout contenu de article.php
de plus maintenant je ne sais pas trop ce qui se passe mais en cliquant fermer cela m'affiche un message d'erreur :
Forbidden
You don't have permission to access /apamonde/javascript : cacheId ('contenu'); on this server.
voila désolé pour ce post méga long mais je suis vraiment "in da shit " pour ce problème.
voici le contenu de ma page article.php
--------------------------------------------------------------------------------------
Liste des articles :
<?php while ($donnees2 = mysql_fetch_array($retourArticles)){ ?>
<titre>
<?php echo $donnees2['titre'];?>
</titre>
<?php echo $donnees2['contenu'];?>
<!-------------------------------------------------------------->
[javascript:afficheId('contenu') Nous contacter]
---------------------
<!--
-->
<!--[javascript:cacheId('contenu'); Fermer]-->
Fermer
Test pour les commentaires
<?php } ; ?>
ma page fonction.php que j'inclue dans articles.php
--------------------------------------------------------------------------------------
<script language = 'javascript'>
function afficheId(baliseId)
{
if (document.getElementById && document.getElementById(baliseId) != null)
{
document.getElementById(baliseId).style.visibility='visible';
document.getElementById(baliseId).style.display='block';
}
}
function cacheId(baliseId)
{
if (document.getElementById && document.getElementById(baliseId) != null)
{
document.getElementById(baliseId).style.visibility='hidden';
document.getElementById(baliseId).style.display='none';
}
}
cacheId('contenu');
// si JavaScript est disponible, cache le contenu dès le
// chargement de la page. Sans JavaScript, le contenu sera
// affiché.
</script>
cs_aKheNathOn
Messages postés575Date d'inscriptiondimanche 23 décembre 2001StatutMembreDernière intervention23 octobre 2012 22 avril 2011 à 18:01
Un grand post mérite une grande réponse
Je pense en voyant ce que tu as codé que ce n'est pas bon du tout. Ton problème c'est que tu n'utilises pas la bonne méthode ... du coup tout est mélangé et c'est brouillon.
Si tu veux que je t'aide il va falloir commencer par faire du ménage pour ensuite ne gérer que les problèmes liées à ce que tu veux faire et pas les effets de bords javascript.
Si t'es motivé je vais te donner la marche à suivre (en version simplifiée pour ne pas t'embrouiller) :
1. Fais un fichier database/article.php :
<?php
class article {
public $id;
public $titre;
public $contenu;
public static function ListArticles($category...) {
$articles = array();
...fait ton truc mysql_select...
while ($donnees2 = mysql_fetch_array($retourArticles)) {
$article = new self();
$article->id = $donnees2['id'];
$article->titre = $donnees2['titre'];
$article->contenu = $donnees2['contenu'];
$articles[] = $article;
}
return $articles;
}
}
1.bis Si tu as fait un config.inc.php, et un database.php pour ta base de données, va falloir exposer la connexion - donc dans la partie connect :
3. Mets ton javascript dans un fichier aticles.js, sans les balises <script...>. Au passage pour éviter des problèmes de compatibilités entre ie et ff, et puis simplifier les choses je te conseille de télécharger et d'ajouter à ta page jQuery : http://docs.jquery.com/Downloading_jQuery
Dans la balise head mets les réferences vers jquery puis vers ton fichier js.
4. Modifies ton code dans articles.js, il devient :
function afficheId(baliseId) {
$(baliseId).show();
}
function cacheId(baliseId) {
$(baliseId).hide();
}
$(document).load(function() {
cacheId('contenu');
});
Reviens poster un message avec l'erreur que tu obtiens quand t'en seras là...
cs_aKheNathOn
Messages postés575Date d'inscriptiondimanche 23 décembre 2001StatutMembreDernière intervention23 octobre 2012 26 avril 2011 à 16:55
yep, t'as raison, ton truc marche et pas besoin de plus. Je demande juste de rendre $bdconnex global pour l'utiliser n'importe où dans le code ou les fonctions.
Dans tous les cas, tu n'est pas obligé de faire une classe pour la base de données, mais au moins ranges dans des classes chaque chose car sinon tu t'y perdras dans ton code.
Bon courage,
aKheNAtHoN
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_aKheNathOn
Messages postés575Date d'inscriptiondimanche 23 décembre 2001StatutMembreDernière intervention23 octobre 2012 29 avril 2011 à 15:21
Hello jeffrey,
Dans la fonction connect tu est censé y mettre la connection à ta base de données - je pense que database::connect() est assez explicite comme nom de fonction.
Tu manque de bases au niveau développement, ça va être compliqué pour toi de faire un projet aussi complexe.
Pour répondre à ta question initiale tu as une erreur de syntaxe dans la balise <a href... de la div class="clicCacher"... Tu as mis des espace dans le href="..." et du coup au lieu de le lire comme du java il cherche à lancer la commande comme une url de page web.
Tu as la bonne syntaxe juste au dessus : href="javascript:cacheId('contenu');"