8768 sujets

Développement web côté serveur, CMS

Bonjour j'ai un bouton sur un site "Voir le numéro de téléphone" quand la personne clic dessus on affiche alors le numéro rien de trop difficile !!!
La ou je bloque c'est que quand on clique sur "voir le nu..." je charge aussi une page PHP qui compte le nombre de clic via Mysql ! ci joint le code
<SCRIPT type="text/javascript">
function refreshtel() {
    setTimeout(function () {
    document.getElementById('tel').innerHTML = "<?php
    $atel = $row_artisans['tel_fixe'];
    $atel = str_replace('.', '', $atel);
    $atel = str_replace('-', '', $atel);
    $atel = str_replace('/', '', $atel);
    $atel = wordwrap($atel,2," ",1);
    echo "<div class='buttonsWrapper'><a href='tel:$atel' class='btn btn-green btn-lg btn-block'><h2 style='margin-bottom:0px;'>$atel</h2></a></div>";?>";
    },0);
}
</SCRIPT>
<div class='buttonsWrapper' id='tel'><a onclick='refreshtel();' class='btn btn-green btn-lg btn-block'><span class='fa fa-phone'></span> Voir le numéro de téléphone</a></div>

avez vous des pistes
Modérateur
Bonjour,

A la fin de ta fonction javascript, tu lances une requête AJAX déclenchant sur le serveur l'exécution d'un script php de ton choix (et donc par exemple un script php qui incrémente un compteur dans ta base de données).

Amicalement,
Modérateur
Salut,

bah non, c'est pas du tout bon. Tu récupères d'abords en javascript les clics et ensuite tu envoies au serveur via l'ajax. Smiley cligne

apriori, ton setTimeout ne sert à rien.

Au passage, ton code php peut être largement optimisé :

<?php
echo "<div class='buttonsWrapper'><a href='tel:$atel' class='btn btn-green btn-lg btn-block'><h2 style='margin-bottom:0px;'>wordwrap(strtr($row_artisans['tel_fixe'], ".-/", "   "),2," ",1)</h2></a></div>";?>";

Modifié par niuxe (14 Jan 2016 - 01:13)
Bonjour, merci pour les pistes j'ai optimisé le code mais toujours rien pour mon include ci j'ai les codes

<SCRIPT type="text/javascript">
function refreshtel() {
	document.getElementById('tel').innerHTML = "<?php
    $atel = wordwrap(strtr($row_artisans['tel_fixe'], ".-/", "   "),2," ",1);
    echo "<div class='buttonsWrapper'><a href='tel:$atel' class='btn btn-green btn-lg btn-block'><h2 style='margin-bottom:0px;'>$atel</h2></a></div>";?>";
    }
</SCRIPT>
<div class='buttonsWrapper' id='tel'><a onclick='refreshtel();' class='btn btn-green btn-lg btn-block'><span class='fa fa-phone'></span> Voir le numéro de téléphone</a></div>

Code a include quand on clic !
<?
require("compteur-params.inc.php");$connexion=mysql_connect($hote,$login,$mdp);mysql_select_db($bd,$connexion);$page=$row_offre['id_offre'];$req="select * from compteur_tel where page='$page'";$resultat=mysql_query($req,$connexion);$nb=mysql_num_rows($resultat);if($nb==1){$ligne=mysql_fetch_array($resultat);$nombre=++$ligne[nombre];$req_maj="UPDATE compteur_tel SET nombre='$nombre', date=now(), heure=curtime() WHERE page='$page' ";mysql_query($req_maj,$connexion);}
elseif($nb==0){$req_ins="INSERT INTO compteur_tel (page,nombre,date,heure) VALUES ('$page',1,now(),curtime() )";mysql_query($req_ins,$connexion);}
?>
C'est bien ce qu'on essaie de t'expliquer, il faut que ton script PHP qui doit être exécuté au clic soit appelé par une requête AJAX.
Bon j'ai trouver cela fonctionne !!! voir le code cela et propre ou peu mieux faire ?
<SCRIPT type="text/javascript">
function refreshtel() {
	document.getElementById('tel').innerHTML = "<?php
    $atel = wordwrap(strtr($row_artisans['tel_fixe'], ".-/", "   "),2," ",1);
    echo "<div class='buttonsWrapper'><a href='tel:$atel' class='btn btn-green btn-lg btn-block'><h2 style='margin-bottom:0px;'>$atel</h2></a></div>";?>";
    $.ajax({
       url : '../compteur_tel.php?page=<?php echo $row_offre['id_offre'];?>',
    });
    }
</SCRIPT>
<div class='buttonsWrapper' id='tel'><a onclick='refreshtel();' class='btn btn-green btn-lg btn-block'><span class='fa fa-phone'></span> Voir le numéro de téléphone</a></div>

Modifié par bibi67 (14 Jan 2016 - 14:39)
Une piste pour améliorer ton code : séparation du php et du javascrit et l'utilisation d'un gestionnaire d’événement (http://www.alsacreations.com/article/lire/578-La-gestion-des-evenements-en-JavaScript.html).

<script type="text/javascript">
var tel = document.getElementById('tel'), // Si tu utilises $.ajax, tu as jquery donc autant l'utiliser de bout en bout : $('#tel');
// On met en place l'évenement sur tous les a possédant la class a-tel présent dans le dom ou pas
$('a-tel').on('click',tel,function(){
	// On récupére les données
	var id = $(this).data('id'),
	tel = $(this).data('tel'),
	// Je comprend pas trop à quoi sert ton href tel:xx xx xx xx xx ? Pourquoi mettre le résultat dans une balise a ? => Que ce passe t'il au click ?
	content = '<div class="buttonsWrapper"><a href="tel:'+tel+'" class="btn btn-green btn-lg btn-block"><h2 style="margin-bottom:0px;">'+tel+'</h2></a></div>';
	tel.innerHTML = content; 
    $.ajax({
       url : '../compteur_tel.php',
       type : 'GET',
	   data : {page:id},
       dataType : 'json',
       success : function(resultat, statut){
           // Good
		   if(resultat){
			// Tout c'est bien passé
		   }else{
			// Erreur dans le traitement php
		   }
       },
       error : function(resultat, statut, erreur){
			// Good
       },
    });
});
</script>
<?php
	// Tu fais tous tes traitements php
	$atel = wordwrap(strtr($row_artisans['tel_fixe'], ".-/", "   "),2," ",1);
?>
<div class='buttonsWrapper' id='tel'>
	<a class='btn btn-green btn-lg btn-block a-tel' data-id="<?php echo $row_offre['id_offre'];?>" data-tel="<?php echo $atel; ?>">
		<span class='fa fa-phone'></span> 
		Voir le numéro de téléphone
	</a>
</div>

Et pour ton script compteur_tel.php

<?php
	// Tes traitements php
	...
	// Le retour
	$result = true || false; // Tu peux aussi faire un retour avec une string ou tout ce que tu veux.
?>
{
	result:"<?php echo $result; ?>"
}


Et la plupart des fonctions MySQL sont obsolète depuis php 5.5 et ont été supprimée en PHP 7.
Je te conseille de plutôt utiliser l'extension PDO_MYSQL :
http://php.net/manual/fr/ref.pdo-mysql.php
Et pour un tutoriel :
http://fmaz.developpez.com/tutoriels/php/comprendre-pdo/
Modifié par renard13 (17 Jan 2016 - 22:33)