11545 sujets

JavaScript, DOM et API Web HTML5

Bonjour

Sur une page, plusieurs div cachées qui s'affichent en cliquant sucessivement sur des onglets et grâce à javascript.
Dans chaque div un contenu alimenté par une bdd, Grâce à une boucle while.

dans la boucle entre autre ce code :
<?php echo '<a href="top-categories.php?valider_dis='.$donnees['idvis'].'" class="type6" onclick="MM_showHideLayers(\'divargent\',\'\',\'show\')" >'; ?> Je suis contente pour toi</a>


Ce contenu bdd est inséré dans une div (ex : divargent). lorsque l'on clique sur je suis content(e) pour toi, un code php s'incrémente (cela ca marche) mais lorsque l'incrémentation est faite, c'est la page top-categories.php qui s'affiche (c'est normal) mais dans tous les cas c'est la première div liée au premier onglet qui est automatiquement affichée à l'écran et non par ex "divargent" que j'ai appelée par l'intermédiaire du onclick.

Je pensais que la syntaxe de mon onclick était bonne pour appeler la div. Mais apparemment non.

Cette syntaxe fonctionne sur la même page et en dehors du code php et sans bien sûr les "/" lorsque l'on clique sur les onglets.

Quelqu'un peut-il m'aider ?

Merci beaucoup.
Humm, le code est bon au niveau syntaxe, les caractères sont bien échappés.

Est-ce que tu peux afficher le code HTML généré par ce bout de code ?
Modérateur
En php existe une maladie grave, l'echotite, parfois nommée la printite… Il existe un moyen assez simple d'éviter ce genre de problème, c'est de suivre la règle « je ne mets jamais mes balises dans des echo/print ». Le résultat sera beaucoup plus clean et compréhensible.


  <a href="top-categories.php?valider_dis=<?php print $donnees['idvis']; ?>"
     class="type6"
     onclick="MM_showHideLayers('divargent','','show')" >Je suis contente pour toi</a>


Ce n'est pas plus clair ainsi ??
Modifié par kustolovic (14 Mar 2012 - 08:30)
nomieandme a écrit :
sans doute est-ce mieux ainsi ( je ne connaissais pas) , mais cela ne marche toujours pas Smiley sweatdrop


J'ai l'impression que dans une boucle while cela ne marche pas.... vraiment trop bizarre
nomieandme a écrit :


J'ai l'impression que dans une boucle while cela ne marche pas.... vraiment trop bizarre


En fait non, je pense que la boucle while n'a rien à voir, c'est parce que ce lien, lorsque tu cliques dessus incrémente une bdd, il doit donc réactualiser la page, du coup ça ne marche plus.
Plutôt que de se tourner vers une autre techno, qui ne résoudrait pas forcément ton problème, peux tu donner un peu plus de code ?

Ce n'est pas pour voler ton projet, c'est pour t'aider.

Après, vu que tu ne m'a pas répondu à ma première question, je suppose que tu te débrouilles bien tout seul Smiley cligne
non c'est que je ne sais pas ce que tu entends par le code html généré par ton code (à part te donner l'adresse de la page du site en cours), à moins que tu ne parles du code source
nomieandme a écrit :
non c'est que je ne sais pas ce que tu entends par le code html généré par ton code (à part te donner l'adresse de la page du site en cours), à moins que tu ne parles du code source


par ailleurs d'autres personnes m'on dit que je ne pouvais faire cela qu'en Ajax (ne pas recharger la page) mais comme je ne connais ni l'Ajax ni javascript, j'ai persévéré en php en vain pour l'instant.
PHP sert à généré du code de manière dynamique côté serveur, que ce soit HTML, CSS JS, ou autre.

Pour voir si le code est fonctionnel (le code généré), il faut afficher l'url dans ton navigateur, et afficher le code source de la page (ce code là est généré par ton serveur).

C'est pour vérifier que dans un premier temps, le code s'affiche bien comme voulu.

Ensuite, si c'est bon, regarder un peu plus loin, côté code JS ici, car c'est ce que tu appelles, et sans ce code, expliquer d'où vient le problème est quasi impossible, car c'est une fonction.

Ensuite, si le code JS colle, et que le code PHP colle aussi, alors regarder qu'est-ce qui perturbe le fonctionnement (sélecteur qui n'existe plus pour une règles CSS etc ...)

Le gros plus, c'est d'avoir une page en ligne, c'est ce qu'il y a de plus pratique, sauf si l'on sait exactement d'où vient le problème.

EDIT : Plutôt que de répondre à tes propres messages, édite les Smiley cligne
Modifié par Super_baloo8 (14 Mar 2012 - 19:07)
Voici le code source généré par le bout de code donné plus haut


<div id="divargent" style="display:none">      
  <div class="idgtopargent" id="idg3"><span style="font-weight: bold">Pseudo</span> : <span class="verdanarougecapitalize">marie</span> &nbsp;-&nbsp;  <span style="font-weight: bold">Cat&eacute;gorie</span> : 
    <img src="images/argent.png" class="img_absmiddle" alt="argent">    
    
    
    <a href="argent.php" style="text-decoration:none;color:#990;font-weight:bold">argent</a> 
      <img src="http://www.xxxxxxxx.com/upload/carre.png" alt="carre" style="float:right" />      <br>
  <a href="categorie-argent.php?idvis=3" style="text-decoration:none;color:#333">Test marie</a><br>
  <a href="top-categories.php?valider_dis=3"  class="type6"     onclick="MM_showHideLayers('divargent','','show')" >Je suis contente pour toi</a> &nbsp;14  <div class="sociaux"><a href="categorie-argent.php?idvis=3" style="text-decoration:none;color:#666; vertical-align:middle">Commenter</a><div style="display:inline;"><script>function fbs_click() {
u=location.href;
t=Test marie;
window.open('http://www.facebook.com/sharer.php?u='+encodeURIComponent(u)+'&t='+encodeURIComponent(t),'sharer','toolbar=0,status=0,width=626,height=436');
return false;
}</script>
<a title="Partager sur Facebook" href="http://www.facebook.com/share.php?u=http://www.xxxxxxxx.com/categorie-argent.php?idvis=3" onclick="return fbs_click()" target="_blank">
<img src="images/facebook.png" alt="Partager sur Facebook" width="20"  style="border:none" /></a></div><div style="display:inline" class="img_absmiddle">
<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.xxxxxxxxx.com/categorie-argent.php?idvis=3" data-text="Test marie" data-count="none" data-lang="fr">Tweet</a>
</div>    
    
  <img src="images/icone-mail2.png" alt="envoyer par mail" title="envoyer par mail"  onclick="MM_showHideLayers('3','','show')">&nbsp;&nbsp;<div id="3" style="display:none;float:right;margin-bottom:10px" ><form action="envoi-mail-idg.php?idvis=3" method="post" enctype="multipart/form-data" id="formmailami3" name="formmailami"><input name="mailami" id="mailami3" type="text" placeholder="Mail de votre ami"  class="imputmailidg"><input name="histoire" id="histoire3" type="hidden"   class="imputmailidg" value="Test marie"><input name="ok" type="submit" value="Ok" ><script>
    $('input[placeholder], textarea[placeholder]').placeholder();
</script> </form>
    </div>
    
    </div>


la partie php qui permet de vérifier que cela n'a pas déjà été voté et la partie incrémentation.
<?php
mysql_connect("localhost", "xxxxxxx", "xxxxxxxx");
mysql_select_db("instants_idg");


if (isset($_GET['valider_dis']) ) 
{
    
    $sql = "SELECT * FROM passage WHERE ip='".$_SERVER["REMOTE_ADDR"]."' and id_vote='". $_GET['valider_dis'] ."' "; 
    $req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());  
     
    
    $res = mysql_num_rows($req); 

    if($res!=0)  
		  {  
		 header ("location: ". $_SERVER ['HTTP_REFERER']);
		 
		  
			}
		else {
   
	
    
    mysql_query('UPDATE idg SET plus = plus +1  WHERE idvis=\''  . $_GET['valider_dis'] . '\'');
	$sql = "INSERT INTO passage (ip,lieu_x,id_vote)  VALUES ('".$_SERVER["REMOTE_ADDR"]."',now(),'". $_GET['valider_dis'] ."')";
	mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); 
	
	 header ("location: ". $_SERVER ['HTTP_REFERER']);
	 
	  
	
} 
	
	
} 
?>



Vous remarquerez que le onclick qui n'est pas lié à l'incrémentation (envoyer par mail) marche fort bien, celui qui incrémente non. ( l'incrémentation elle si)

merci
Modifié par nomieandme (14 Mar 2012 - 19:22)
Excuse-moi je reviens seulement maintenant sur mon ordi
<script type="text/javascript">
function MM_showHideLayers() { //v9.0
  var i,p,v,obj,args=MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) 
  with (document) if (getElementById && ((obj=getElementById(args[i]))!=null)) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?'block' [decu]v=='hide')?'none':v; }
    obj.display=v; }
}
</script>


Je précise que ce code est celui utilisé par dreamweaver, il marche partout sur mon site (en construction) sauf sur les liens qui para ailleurs en cliquant dessus incrémente une base de données.

merci à toi de t'intéresser à mon souci. [/i]
Pas de soucis, moi non plus je n'étais pas devant mon PC Smiley cligne

Alors, pour en revenir à nos moutons, maintenant, on a de quoi travailler.

Et la fonction de "hide/show" à l'air correct ...

Il faudrait demander à un modérateur de déplacer ton sujet dans JavaScript, car ça dépasse mes compétence.