Partage
  • Partager sur Facebook
  • Partager sur Twitter

Ajouter une variable à la fin d'une URL

Si elle y est déjà, modifier la valeur.

Sujet résolu
    25 juillet 2009 à 19:50:30

    Bonjour.
    Le titre et le sous titre décrivent ce que je veux faire.
    Je m'explique: je commence la création d'un jeu, et je veux faire en sorte de pouvoir afficher ou masquer la grille. Jusque là, j'y suis arrivé. J'ai ensuite fais un code en PHP qui dit que si une variable grille est dans l'URL, on créé un cookie qui aura sa valeur, sinon, on le créé quand même et on le met à 1.
    Le bug, c'est que je voudrai faire en sorte que quand je coche ou je décoche mon bouton afficher/masquer la grille, ça modifie l'URL de chaque case(celles du jeu) pour rajouter à la fin "&grille=0" ou &grille=1" selon si c'est coché ou pas.
    Seulement, si on décoche, ça fonctionne, ça rajoute bien "&grille=0" à la fin, mais si on re-coche, ça enlève le nom de la page et ça met "01"! Si on re-décoche après ça, ça met "01&grille=0"
    Pour plus de précision, voici la page: http://myaxs.fr/kym/Mini-Jeu/jeu.html ou http://jeu.myaxs.fr/jeu.html .

    Et voici les codes importants:

    jeu.php
    <?php
    	require('haut2.php');
    	
    	
    	if(empty($_SESSION['id']))//Vérification des variables de session.
    	{
    		header("Location: http://www.myaxs.fr/kym/Mini-Jeu/index.php?cause=id");
    	}
    	
    	
    	if(!empty($_GET['grille']))
    	{
    		$grille = (int) $_GET['grille'];
    	}
    	else
    	{
    		$grille = 1;
    	}
    	setcookie("grille", $grille, (365*24*60*60*60));
    	
    	
    	if(!empty($_GET['x']) AND !empty($_GET['y']))
    	{
    		$x 		= intval($_GET['x']);
    		$y 		= intval($_GET['y']);
    		$id     = intval($_SESSION['id']);
    		
    		if(mysql_query("UPDATE membres SET posx=$x AND posy=$y WHERE ID=$id"))
    		{
    			header("Location: http://jeu.myaxs.fr/jeu.html");
    		}
    		else
    		{
    			echo '<h1><a href="http://jeu.myaxs.fr/jeu.html">UNE ERREUR INTERNE EST SURVENUE!</a></h1>';
    		}
    	}
    	
    		
    	$coord = mysql_fetch_assoc(mysql_query('SELECT posx, posy FROM membres WHERE ID = '.intval($_SESSION['id'])));
    	$map_x 	= floor(intval($coord['posx']) / 30);
    	$case_x = (intval($coord['posx']) % 30);
    	$map_y 	= floor(intval($coord['posy']) / 30);
    	$case_y = (intval($coord['posy']) % 30);
    	
    	require('haut_html2.php');
    ?>
    
    	<div id="jeu_left">
    	<div class="bloc_haut">
    		<p>Réglages</p>
    	</div>
    	<div class="bloc_fond">
    		<p class="text centre">
    			<label for="checkbox_grille">Afficher la grille</label>
    			<?php 
    			if($_COOKIE['grille'] == 1)
    			{
    				?>
    				<input type="checkbox" name="checkbox_grille" id="checkbox_grille" checked="checked" onclick="toogle_grille(this.checked);"/>
    				<script type="text/javascript">toogle_grille(true);</script>
    				<?php
    			}
    			else
    			{
    				?>
    				<input type="checkbox" name="checkbox_grille" id="checkbox_grille" onclick="toogle_grille(this.checked);"/>
    				<script type="text/javascript">toogle_grille(false);</script>
    				<?php
    			}
    			?>
    		</p>
    	</div>
    	<div class="bloc_bas">
    	</div>
    	</div>
    	<div id="jeu">
    	<?php 
    		$Map=array();
    		for($i=0;$i<30;$i++)
    		{
    			$Map[]=array();
    			for($j=0;$j<30;$j++)
    			{
    				$D=mysql_fetch_assoc(mysql_query('SELECT pseudo FROM membres WHERE posx='.$i.' AND posy='.$j.' AND connecte=1'));
    				$Map[$i][]=$D['pseudo'];
    			}
    		}
    		
    		$carte = array();
    		for($i=0; $i<30; $i++)
    		{
    			$carte[] = array();
    			for($j=0; $j<30; $j++)
    			{
    				$carte[$i][] = $i.', '.$j;
    				if(!empty($case_x) AND !empty($case_y))
    				{
    					$case_bouge  = $case_x.', '.$case_y;
    				}
    				else
    				{
    					$case_bouge  = '';
    				}
    				if($case_bouge == $carte[$i][$j] OR !empty($Map[$i][$j]))
    				{
    					echo '<a href="jeu.php?x='.$i.'&amp;y='.$j.'" class="case" id="id-'.$carte[$i][$j].'" ><img src="images/persos/test.png" width="18px" height="18px" alt="I" /></a>';
    				}
    				else
    				{
    					echo '<a href="jeu.php?x='.$i.'&amp;y='.$j.'" class="case" id="id-'.$carte[$i][$j].'"></a>';
    				}
    			}
    			echo'<br />';
    		}
    	?>
    	</div>
    	<div id="jeu_right">
    	<div class="bloc_haut">
    		<p>Réglages</p>
    	</div>
    	<div class="bloc_fond">
    		<p class="text centre">
    			
    		</p>
    	</div>
    	<div class="bloc_bas">
    	</div>
    	</div>
    
    <?php
    	require('bas.php');
    ?>
    


    defaut.js:
    function gEBI(e)
    {
    	return document.getElementById(e);
    }
    
    function gEBCN(e)
    {
    	return document.getElementsByClassName(e);
    }
    
    function souris(event)
    {
    	gEBI('x').innerHTML = event.clientX;
    	gEBI('y').innerHTML = event.clientY;
    }
    
    sfHover = function() 
    {
    	var sfEls = document.getElementById("menu").getElementsByTagName("LI");
    	for (var i=0; i<sfEls.length; i++) 
    	{
    		sfEls[i].onmouseover=function() 
    		{
    			this.className+="sfhover";
    		}
    		sfEls[i].onmouseout=function() 
    		{
    			this.className=this.className.replace(new RegExp("sfhover\\b"), "");
    		}
    	}
    }
    if (window.attachEvent) window.attachEvent("onload", sfHover);
    
    function toogle_grille(bool)
    {
    	var cases    = gEBCN('case');
    	var nb_cases = cases.length;
    	
    	if(bool)
    	{
    		for(var i=0; i<=nb_cases; i++)
    		{
    			cases[i].style.border = "1px solid rgb(175,175,175)";
    			cases[i].style.margin = "0";
    			
    			var neuf = cases[i].href.length - 9
    			var neuf_derniers = cases[i].href.substr(neuf);
    			
    			if(neuf_derniers == "&grille=0" || neuf_derniers == "&grille=1")
    			{
    				cases[i].href = cases[i].href.substr(cases[i].href.length - 1) + "1";
    			}
    			else
    			{
    				cases[i].href += "&grille=1";
    			}
    		}
    	}
    	else
    	{
    		for(var i=0; i<=nb_cases; i++)
    		{
    			cases[i].style.border = "0";
    			cases[i].style.margin = "1px 1px 1px 1px";
    			
    			if(neuf_derniers == "&grille=0" || neuf_derniers == "&grille=1")
    			{
    				cases[i].href = cases[i].href.substr(cases[i].href.length - 1) + "0";
    			}
    			else
    			{
    				cases[i].href += "&grille=0";
    			}
    		}
    	}
    }
    
    function toogle_stat(id, value)
    {
    	gEBI(id).style.display = value;
    }
    
    function verifierFormulaire()
    {
    	verifierPseudo();
    	verifierPasse();
    	verifierAvatar();
    	verifierSite();
    	verifierEmail();
    }
    	
    function verifierPseudo()
    {
    	if(document.getElementById('pseudo').value.length < 3 || document.getElementById('pseudo').value.length > 25)
    	{
    		document.getElementById('erreur_pseudo').style.display = "inline";
    		document.getElementById('pseudo').style.backgroundColor = "#fba";
    	}
    	
    	else
    	{
    		document.getElementById('erreur_pseudo').style.display="none";
    		document.getElementById('pseudo').style.backgroundColor = "white";
    	}
    }
    
    function verifierPasse()
    {
    	if(document.getElementById('passe').value.length < 3)
    	{
    		document.getElementById('erreur_passe').style.display="inline";
    		document.getElementById('passe').style.backgroundColor = "#fba";
    		document.getElementById('faible').style.display="none";
    		document.getElementById('moyen').style.display="none";
    		document.getElementById('fort').style.display="none";
    	}
    		
    	else
    	{
    		document.getElementById('erreur_passe').style.display="none";
    		document.getElementById('passe').style.backgroundColor = "white";
    		
    		var regexFaible   = /[a-zA-Z]/;
    		var regexNombre   = /[0-9]/;
    		var regexMoyen    = /[a-zA-Z0-9]/;
    		var regexSymboles = /[\.\$£¤\*ù%\^\[\]\\!\(\)\-\?\/\{\}¨§~#\|`@]/;
    		var regexFort     = /[a-zA-Z0-9\.\$_£¤\*ù%\^\[\]\\!\(\)\?\/\{\}¨§~#\|`@\-]/;
    		
    		// Symboles à échapper | . ^ $ ( ) [ ] - { } ? * + \ /
    		
    		
    		if(regexFaible.test(document.getElementById('passe').value) && !regexNombre.test(document.getElementById('passe').value))
    		{
    			document.getElementById('faible').style.display="inline";
    			document.getElementById('moyen').style.display="none";
    			document.getElementById('fort').style.display="none";
    		}
    			
    		
    		else if(regexNombre.test(document.getElementById('passe').value))
    		{
    			document.getElementById('faible').style.display="none";
    			
    			if(regexMoyen.test(document.getElementById('passe').value) && !regexSymboles.test(document.getElementById('passe').value))
    			{
    				document.getElementById('moyen').style.display="inline";
    				document.getElementById('fort').style.display="none";
    			}
    			
    			else if(regexSymboles.test(document.getElementById('passe').value))
    			{
    				document.getElementById('moyen').style.display="none";
    				
    				if(regexFort.test(document.getElementById('passe').value))
    				{
    					document.getElementById('faible').style.display="none";
    					document.getElementById('moyen').style.display="none";
    					document.getElementById('fort').style.display="inline";
    				}
    			}
    			
    		}
    		
    
    	}
    }
    
    function verifierAvatar()
    {
    	if(document.getElementById('avatar').value.length > 9)
    	{
    		document.getElementById('erreur_avatar').style.display = "none";
    		document.getElementById('avatar').style.backgroundColor = "white";
    		var regexAvatar = /https?:\/\/.+/;
    		
    		if(!regexAvatar.test(document.getElementById('avatar').value))
    		{
    			document.getElementById('erreur_avatar').style.display = "inline";
    			document.getElementById('avatar').style.backgroundColor = "#fba";
    		}
    		else
    		{
    			document.getElementById('erreur_avatar').style.display = "none";
    			document.getElementById('avatar').style.backgroundColor = "white";
    		}
    	}
    	else
    	{
    		document.getElementById('erreur_avatar').style.display = "none";
    		document.getElementById('avatar').style.backgroundColor = "white";
    	}
    }
    
    function verifierSite()
    {
    	if(document.getElementById('site').value.length > 9)
    	{
    		document.getElementById('erreur_site').style.display = "none";
    		document.getElementById('site').style.backgroundColor = "white";
    		var regexSite = /https?:\/\/.+/;
    		
    		if(!regexSite.test(document.getElementById('site').value))
    		{
    			document.getElementById('erreur_site').style.display = "inline";
    			document.getElementById('site').style.backgroundColor = "#fba";
    		}
    		else
    		{
    			document.getElementById('erreur_site').style.display = "none";
    			document.getElementById('site').style.backgroundColor = "white";
    		}
    	}
    	else
    	{
    		document.getElementById('erreur_site').style.display = "none";
    		document.getElementById('site').style.backgroundColor = "white";
    	}
    }
    
    function verifierNom()
    {
    	if(document.getElementById('nom').value.length < 2)
    	{
    		document.getElementById('erreur_nom').style.display = "inline";
    		document.getElementById('nom').style.backgroundColor = "#fba";
    	}
    	
    	else
    	{
    		document.getElementById('erreur_nom').style.display = "none";
    		document.getElementById('nom').style.backgroundColor = "white";
    	}
    }
    
    function verifierPrenom()
    {
    	if(document.getElementById('prenom').value.length < 2)
    	{
    		document.getElementById('erreur_prenom').style.display = "inline";
    		document.getElementById('prenom').style.backgroundColor = "#fba";
    	}
    	
    	else
    	{
    		document.getElementById('erreur_prenom').style.display = "none";
    		document.getElementById('prenom').style.backgroundColor = "white";
    	}
    }
    
    function verifierEmail()
    {
    	if(document.getElementById('email').value.length < 5)
    	{
    		document.getElementById('erreur_email').style.display = "inline";
    		document.getElementById('email').style.backgroundColor = "#fba";
    	}
    		
    	else
    	{
    		var regexEmail = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]{2,}\.[a-z]{2,5}$/;
    		
    		if(regexEmail.test(document.getElementById('email').value))
    		{
    			document.getElementById('erreur_email').style.display = "none";
    			document.getElementById('email').style.backgroundColor = "white";
    		}
    			
    		else
    		{
    			document.getElementById('erreur_email').style.display = "inline";
    			document.getElementById('email').style.backgroundColor = "#fba";
    		}
    			
    	}
    }
    


    Et la fonction en question dans ce même fichier:
    function toogle_grille(bool)
    {
    	var cases    = gEBCN('case');
    	var nb_cases = cases.length;
    	
    	if(bool)
    	{
    		for(var i=0; i<=nb_cases; i++)
    		{
    			cases[i].style.border = "1px solid rgb(175,175,175)";
    			cases[i].style.margin = "0";
    			
    			var neuf = cases[i].href.length - 9
    			var neuf_derniers = cases[i].href.substr(neuf);
    			
    			if(neuf_derniers == "&grille=0" || neuf_derniers == "&grille=1")
    			{
    				cases[i].href = cases[i].href.substr(cases[i].href.length - 1) + "1";
    			}
    			else
    			{
    				cases[i].href += "&grille=1";
    			}
    		}
    	}
    	else
    	{
    		for(var i=0; i<=nb_cases; i++)
    		{
    			cases[i].style.border = "0";
    			cases[i].style.margin = "1px 1px 1px 1px";
    			
    			if(neuf_derniers == "&grille=0" || neuf_derniers == "&grille=1")
    			{
    				cases[i].href = cases[i].href.substr(cases[i].href.length - 1) + "0";
    			}
    			else
    			{
    				cases[i].href += "&grille=0";
    			}
    		}
    	}
    }
    


    Merci de m'aider :) .
    Au revoir!
    • Partager sur Facebook
    • Partager sur Twitter

    L'important n'est pas de savoir maîtriser une technologie à la perfection, mais d'avoir une belle capacité d'adaptation.

      25 juillet 2009 à 20:42:55

      Tu sais que tu peux aussi modifier les cookies avec le JS. Ce serait un peu plus simple et logique non ?
      • Partager sur Facebook
      • Partager sur Twitter
        25 juillet 2009 à 20:47:31

        On peut? o_O ??
        Je cherche.
        • Partager sur Facebook
        • Partager sur Twitter

        L'important n'est pas de savoir maîtriser une technologie à la perfection, mais d'avoir une belle capacité d'adaptation.

          25 juillet 2009 à 20:50:26

          document.cookie=non+'='+valeur; Tu peux rajouter l'expiration, le path...
          • Partager sur Facebook
          • Partager sur Twitter
            25 juillet 2009 à 21:09:38

            Merci, je l'ai fait, le cookie est bien créé avec la bonne valeur, mais l'interprétation en PHP n'a pas l'air de fonctionner super...
            <label for="checkbox_grille">Afficher la grille</label>
            			<?php 
            			if($_COOKIE['grille'] == 1)
            			{
            				?>
            				<input type="checkbox" name="checkbox_grille" id="checkbox_grille" checked="checked" onclick="toogle_grille(this.checked);"/>
            				<script type="text/javascript">toogle_grille(true);</script>
            				<?php
            			}
            			else
            			{
            				?>
            				<input type="checkbox" name="checkbox_grille" id="checkbox_grille" onclick="toogle_grille(this.checked);"/>
            				<script type="text/javascript">toogle_grille(false);</script>
            				<?php
            			}
            			?>
            

            La case est bien cochée ou pas en fonction de la valeur du cookie, mais la grille est tout le temps affichée...
            • Partager sur Facebook
            • Partager sur Twitter

            L'important n'est pas de savoir maîtriser une technologie à la perfection, mais d'avoir une belle capacité d'adaptation.

              25 juillet 2009 à 21:32:43

              Ben alors, c'est pas le PHP, c'est ta fonction JS toogle_grille
              • Partager sur Facebook
              • Partager sur Twitter
                25 juillet 2009 à 21:40:31

                Je dirai plutôt que c'est l'appel car quand on coche, ou décoche, c'est cette fonction qui est appelée et elle marche très bien, mais l'appel est bien, aussi, je ne comprends pas...
                • Partager sur Facebook
                • Partager sur Twitter

                L'important n'est pas de savoir maîtriser une technologie à la perfection, mais d'avoir une belle capacité d'adaptation.

                  25 juillet 2009 à 21:43:11

                  Non, c'est un bug JS, tu dois avoir un bug dans la console JS qui te dit un truc genre element undefined parce que tu appelle la fonction avant que la grille n'existe je pense, c'est le coup classique.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    25 juillet 2009 à 21:47:30

                    Ah ok, donc je tente de refaire un appel à la fonction plus loin...
                    Merci, ça marche :D !
                    • Partager sur Facebook
                    • Partager sur Twitter

                    L'important n'est pas de savoir maîtriser une technologie à la perfection, mais d'avoir une belle capacité d'adaptation.

                    Ajouter une variable à la fin d'une URL

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown