8726 sujets

Développement web côté serveur, CMS

Bonjour,

Je suis pas au top niveau PHP, je devrais même dire que je débute.
J’essaie de faire en sorte que lorsque l'on clique sur un bouton. Une variable ayant par exemple comme valeur "0", reçoit "+1" comme valeur.

Je sais pas si un genre de fonction Onclick existe en PHP mais si ce n'est pas le cas par quel moyen devrais-je procéder ?

Voici une photo en exemple:
http://mesimag.es/images/2013/12/06/button.jpg

Je pensais par procéder de la sorte:

<?php $btn1 = '<div id="btn-red"></div>'; echo $btn1; ?>
<span id="number"><?php $number = 0; echo $number; ?></span>
<?php	
	if(isset($btn1))
	{
		$number = $number + 1; 
	}
?>


Mais il ne se passe rien et je cale à ce niveau la.
Je vous remercie d'avance de me mettre sur la bonne route.

Au plaisir, Numi
Modifié par gamenumi (06 Dec 2013 - 16:00)
Bonjour,

En pur php c'est pas possible, le php est un langage serveur et non client. Du coup, tout ce qui si passe sur ta fenetre du style les onclick, il ne les détecte pas.

Il faut utiliser une fonction ajax afin que ton script php puisse recevoir l'info.
En jQuery ça donnerai

$('#btn-red').click(function(e){
          var DATA = "btn-click";
				
				$.ajax({
					type: "POST",
					url: "url de ton script",
					data: DATA,
					cache: false,
					success: function(data){
					  $("#number").html(data); 
					   
					}
				});    
				return false;
			});

});


voilà j'espère t'avoir aidé Smiley biggrin
Modifié par Peter-L (06 Dec 2013 - 19:43)
Peter-L a écrit :

En pur php c'est pas possible, le php est un langage serveur et non client. Du coup, tout ce qui si passe sur ta fenetre du style les onclick, il ne les détecte pas.


Un simple lien avec une variable GET, à l'ancienne. Smiley cligne
Modifié par jb_gfx (06 Dec 2013 - 20:23)
Bonjour, désolé du temps de réponse (J'ai eu un w-e particulier).
Merci pour vos suggestions, je vais maintenant y remédier.

Merci.
J'arrive à comprendre à peu près, mais j'ai pas tout bien assimiler donc je n'arrive toujours pas à avoir un résultat. La fonction Ajax je ne sais pas vraiment l'utiliser (honte à moi Smiley sweatdrop ).

Si vous pouvez juste me mettre sur le droit chemin je vous en serais reconnaissant, merci.
Salut Smiley biggrin

Alors sans passer par de l'ajax tu peux faire comme le propose @jd_gfx, juste un lien en "GET" vers ton script php, regarde:

<a href="tonscript.php?click=1"><img id="#btn-red" src="../images/btn-red"/></a>



et tu traites dans ton script php de la manière suivante:

<?php
if (isset($_GET["click"])) {
     $number += 1;
    echo "<div id='number'>".$number."</div>";
    exit();
}


Voilà, bon aprés faut que tu arrange en fonction de ton cas mais l'idée est là Smiley cligne
Dis moi si ça te conviens...
Alors oui merci beaucoup, mais avant que je clique sur le bouton ça m'affiche rien, et juste après quand je clique ça m'affiche "1". Mais quand je re-clique ça reste à 1 ça va pas à 2.

J'ai procédé comme ça:

<a href="?click=1"><div id="btn-red"></div></a>
<?php $number= 0; ?>
<?php
	if (isset($_GET["click"])) {
	$number += 1;
	echo "<div id='number'>".$number."</div>";
	}
?>


Mais j'ai pas bien compris à quoi servait le click=1 dans la balise "a"
Si on mettaient 2, 3 ou juste "click" ça changerais quoi ?
ça changerai rien, c'est juste pour dire à ton script php que quelqu'un à cliqué sur le bouton.

Aprés est ce que le total de variable $number est stockée quelque part dans une db? parce que là tu définis $number = 0;
Donc forcément 0 +1 = 1.

le But est de stocker dont ton total pour qu'à chaque clic, tu ajoutes +1 à ton ancien total
Ah biensur je me disais, justement c'est la dessus que je flanche le plus.
ça serait stocké dans une "db sql" je suppose ?
oui voilà, aprés si tu n'as que cette petite donnée à garder en mémoire il vaut mieux que tu utilises un fichier text dans lequel tu utilise la fonction file_put_contents('file.txt',$value)
D'accord je ne connaissais pas cette fonction,
j'ai essayé:

<a href="?click=1"><div id="btn-red"></div></a>
<?php $number= 0; ?>
<?php							
	if (isset($_GET["click"])) {
	file_put_contents("test.txt", $number += 1);
	}
	echo file_put_contents("test.txt", $number);
	?>


ça ne fonctionne toujours pas, mais est ce que je suis sur la bonne voie ?
Oui j'ai essayé, mais ça me fait une erreur "Undefined variable: number".

J'aimerais que de base, ma variable soit à zéro, et qu'elle change à chaque clique de +1.
mais j'aimerais pas que ça redémarre à zéro. Et pourtant c'est ce qu'il se passe Smiley ohwell .
Dans l'ordre, si quelqu'un a cliqué sur le bouton, tu dois :

-> récupérer la variable dans le fichier test.txt
-> incrémenter la variable
-> remettre la variable dans le fichier
-> afficher la nouvelle valeur.

Pour l'instant, tu :
-> fixe la variable à 0
-> si quelqu'un a cliqué sur le bouton, tu incrémentes la variable en la mettant dans le fichier
-> tu affiches la valeur du fichier

Pour comprendre comment marche file_put_content : http://fr2.php.net/file_put_contents
Modifié par Lothindil (10 Dec 2013 - 14:23)
Lothindil a écrit :

-&gt; si quelqu'un a cliqué sur le bouton, tu incrémentes la variable en la mettant dans le fichier
-&gt; tu affiches la valeur du fichier


Non. Actuellement il n'incrémente pas la variable, il la met à 1. Et il n'affiche pas la variable mais le retour de la fonction fil_put_content, soit un booléen qui vaut toujours 1.
Bonjour,

Je sais que ça fait longtemps que le sujet n'a pas été alimenté, mais ne serait-il pas mieux de passer par $_SESSION?
Ainsi pas besoin d'aller chercher quoi que ce soit dans un fichier!
ça dépend ^^

Si la valeur du bouton dépend uniquement de 1 utilisateur, le $_SESSION se justifie parfaitement. (dans le cas où on veut scorer le nombre de fois quelqu'un a appuyé sur un bouton).

Si la valeur du bouton est la même pour tout le monde, le fichier est nécessaire, la session étant personnelle. (dans le cas d'un bouton de vote par exemple)
Bonjour, c'est un peu tard pour répondre mais je me posais la même question !
Une troisième possibilité : utiliser un formulaire avec seulement des boutons transparents pour utiliser une variable dans la même page php. les 2 boutons ont l'apparence d'un lien:

Ici je voulais faire un tri différent dans la même page avec ma requête posgresql.

echo '<form name="inputTri" action="" method="POST">';
echo '<input type="submit" name="vtri" value="Tri par titre" class="button-link">';
echo '<input type="submit" name="vtri" value="Tri par éditeur" class="button-link">';
echo '</form>';

if (!empty($_POST['vtri'])){
$tri=$_POST['vtri'];

switch ($tri){
case 'Tri par titre':
$tri="titre"; // champ de la table
break;

case 'Tri par éditeur':
$tri="editeur"; // champ de la table
break;
}
}

$query = "SELECT *, * FROM etc... avec $tri

et le style :

.button-link {
color: #dc7d07;
background-color: transparent;
cursor: pointer;
text-decoration: underline;
border-color: transparent;
-webkit-border-radius: 0;
-moz-border-radius: 0;
border-radius: 0;
}

.button-link:hover {
text-decoration: none;
color: #a7aa8b;
background-color: transparent;
}