2010-08-16 4 views
1

J'ai un site Web qui saisit une entrée aléatoire d'une base de données et l'affiche pour l'utilisateur. Voici le code que je suis actuellement en utilisant:Variantes PHP changeant dynamiquement

$rows = "SELECT * FROM xxx"; 
$rows1 = mysql_query($rows); 
$rows2 = mysql_numrows($rows1); 
$id= rand(1, $rows2); 

Cela génère un numéro d'identification qui est utilisé pour sélectionner une entrée de la base de données correspondante, et bien sûr il y a plus de php qui affiche l'entrée.

Pour l'utilisateur de générer une nouvelle entrée dans la base de données, ils cliquent sur un bouton qui actualise la page en utilisant ce code:

<form> 
<input type=button value="Show me another one" onClick="window.location.reload()"> 
</form> 

Cela fonctionne bien, mais il est à l'origine d'un problème avec Google Adsense; cela amène Adsense à enregistrer un grand nombre d'impressions de pages d'un utilisateur donné. Je n'ai pas eu de correspondance avec Google à ce sujet, mais il doit sembler que je joue le système pour les annonceurs qui paient "par impression". Je suis inquiet que cela se traduise par Google m'empêchant automatiquement de recevoir des revenus provenant de publicités "par impression", et peut entraîner la révocation de mon compte Adsense.

Donc, ma question est de savoir comment faire un bouton qui va tirer une entrée différente de la base de données sans actualiser la page? Essentiellement, je dois trouver un moyen de changer la variable "$ id" après qu'un utilisateur clique sur le bouton.

+1

Ce que vous devez faire est de google pour « AJAX ". – deceze

+1

Vous devez également apprendre à sélectionner des entrées aléatoires à partir d'une base de données, votre chemin est terriblement coûteux. http://stackoverflow.com/search?q=%5Bmysql%5D+select+random+row – deceze

+0

ok je vais changer mon mysql donc c'est moins gaspilleur, mais il n'y a vraiment aucun moyen de le faire avec php? que diriez-vous de javascript? – John

Répondre

2

Vous avez plusieurs façons de réaliser ce que vous essayez de faire.

Si vous voulez le garder à la terre HTML et PHP, vous pouvez résoudre votre problème en ayant un IFRAME dans votre page, avec votre bouton de rechargement à l'intérieur. Bien sûr, vous n'insérez pas le tracker google dans la page ouverte par l'IFRAME. Vous pouvez cacher le mauvais style par défaut d'IFRAME avec un peu de CSS, de sorte qu'il ne ressort pas de votre page existante.

C'est loin d'être la meilleure façon de gérer cela.

Vous devriez, comme suggéré par deceze, recourir à Ajax pour récupérer dynamiquement de nouvelles informations via Javascript. Afin de gérer cela aussi facilement que possible, je vous suggère de choisir un framework Javascript pour y laisser tous les bits gênants.

Par exemple, avec jQuery, vous pouvez effectuer les opérations suivantes (HTML + javascript)

<!-- new content will appear in the div down below --> 
<div id="content-target"> 
</div> 

<form> 
    <input type="button" id="refresher" /> 
</form> 

<script type="text/javascript"> 
    $('#refresher').click(function(){ 
    $('#content-target').load('generator.php'); 
    return false; 
    }); 
</script> 

Vous devriez passer un peu de temps à apprendre un cadre JS. C'est un très bon investissement.

Pour jQuery: http://jquery.com/

Prototype: http://www.prototypejs.org/

MooTools: http://mootools.net/

Dojo: http://www.dojotoolkit.org/ (surpuissant pour ce type de script)