Récupérer une variable dans la base de donnée

Résolu/Fermé
cs_lerenardduweb Messages postés 8 Date d'inscription samedi 14 mai 2005 Statut Membre Dernière intervention 2 décembre 2017 - 28 mars 2014 à 19:02
 cs_lerenardduweb - 30 mars 2014 à 11:31
Bonjour,

J'ai dans une base de donnée un table truc_topics dans laquelle la colonne topic_id enregistre toutes les pages existantes sur un forum phpBB.

En phpBB cette variable est appelée par {topic_id} côté html ou par $topic_id côté php.

J'ai du mettre en place un système de vote en php, j'inclu ma ligne d'appel à la fonction ainsi dans mon fichier html :

<!-- PHP -->
notation ($topic_id, $ip_vote);
<!-- ENDPHP -->

Mais ça ne fonctionne pas, la variable $topic_id n'est pas prise en compte entre les balises ouvrantes et fermantes php. L'id de la page consultée par la personne qui vote n'est donc pas communiquée au script php qui du coup ne fonctionne plus.

Quelqu'un connaîtrait-il une solution ?

Merci de votre lecture.
A voir également:

11 réponses

Anonyme209 Messages postés 678 Date d'inscription samedi 6 octobre 2012 Statut Membre Dernière intervention 22 décembre 2020 15
28 mars 2014 à 19:05
Bonjour,
La base de données est une base de données mysql?
0
cs_lerenardduweb Messages postés 8 Date d'inscription samedi 14 mai 2005 Statut Membre Dernière intervention 2 décembre 2017
28 mars 2014 à 19:19
Bonsoir Anonyme209,

Oui Mysql, j'ai oublié de le préciser.
0
Anonyme209 Messages postés 678 Date d'inscription samedi 6 octobre 2012 Statut Membre Dernière intervention 22 décembre 2020 15
28 mars 2014 à 19:29
Déjà, il faut se connecter à la base de données. Code php:

mysql_connect("hostname", "identifiant", "motdepasse");
mysql_select_db("nomdelabasededonnees");


Ensuite, pour récupérer une variable dans une table, c'est ce code:

$nouvellevariablephp = mysql_query("SELECT variable FROM table");
0
cs_lerenardduweb
28 mars 2014 à 20:00
C'est ce que je fais, mais ça ne fonctionne pas.
Voici le php de la fonction, en entier sauf les info sur la db.

//Fonction pour l'ip
function getIp()
{
if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
{
$ip_vote = $_SERVER['HTTP_X_FORWARDED_FOR'];
}
elseif(isset($_SERVER['HTTP_CLIENT_IP']))
{
$ip_vote = $_SERVER['HTTP_CLIENT_IP'];
}
else
{
$ip_vote = $_SERVER['REMOTE_ADDR'];
}
return $ip_vote;
}
//Ip utilisateur
$ip_vote = getIp();

//Connexion à la base de données
mysql_connect("$nom_du_serveur","$nom_utilisateur","$passe");
//Vérification d'accès à la base de données
mysql_select_db("$nom_de_la_base") or die ('Erreur :'.mysql_error());

$topic_id = mysql_query("SELECT topic_id FROM cuisine_topics");

//Fonction pour la notation
function notation($id_vote,$ip_vote){

//L'utilisateur a t'il déja voté?
$deja_voter = mysql_query("SELECT ip FROM note WHERE ip = '".mysql_real_escape_string($ip_vote)."' AND id_page = '".mysql_real_escape_string($id_vote)."'");

//L'utilisateur n'a pas voté, on montre le formulaire
if(mysql_num_rows($deja_voter) == 0)
{
echo ' <form name="monform" id="monform" method="post"> <label>Noter cet article</label> <select name="note" onchange="javascript:submit(this)"> <option value="">Note</option> <option value="0">0</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> </select> </form> ';
}

//Si action de valider et que la note est différent de vide
if(isset($_POST['note']) && $_POST['note'] != NULL){
//On vérifie si le cookie existe et si tel est le cas, c'est que l'utilisateur tente de voter plusieurs fois
if(isset($_COOKIE["deja_voter"]) && $_COOKIE["deja_voter"] == $id_vote){
die ("Un seul vote autorisé ... merci!"); }

//Note de l'utilisateur
$note = $_POST['note'];
//Insertion en BDD
$insert = mysql_query("INSERT INTO note (id_page, note, ip) VALUES ('$id_vote', '$note', '$ip_vote') ");

//Si il y a une erreur
if(!$insert) {
die('Requête invalide : ' . mysql_error());
}
//Tout est ok, on informe et on redirige
else{

echo 'Merci d\'avoir note cet article! <br/> Chargement en cours <img alt="Loading" src="images/images-vote/loading.gif" style="width:32px;height:32px;"/> <script type="text/javascript"> document.getElementById("monform").innerHTML = ""; window.setTimeout(function(){self.location.href="'.$_SERVER['REQUEST_URI'].'";},3000); </script>';

}
}

//Combien d'utilisateurs ont votés?
$nombre_vote = mysql_query("SELECT id FROM note WHERE id_page = '".mysql_real_escape_string($id_vote)."'");
$total_vote = mysql_num_rows($nombre_vote);
if($total_vote != 0){
echo '<span class="review hreview-aggregate">Nombre de vote : <span class="count">'.$total_vote.'</span><br/>';

}

//Total des votes des utilisateurs
$calcul_vote = mysql_query("SELECT SUM(note) AS totalmoyenne FROM note WHERE id_page = '".mysql_real_escape_string($id_vote)."'");
$data = mysql_fetch_array($calcul_vote);
$total_calcul_vote = $data['totalmoyenne'];
if($total_calcul_vote != 0){
echo 'Total des votes : <span class="rating">'.$total_calcul_vote.'</span></span><br/>';
}

//Moyenne des votes des utilisateurs
if($total_vote != NULL && $total_calcul_vote != NULL){
$moyenne = number_format($total_calcul_vote/$total_vote, 2, ',', '');
//Si les 2 chiffres après la virgule sont 2 zéros, on les suppriment pour obtenir un entier
echo 'Note : '.str_replace(',00','',$moyenne).'/5';
//On affiche les étoiles
for($i=1; $i<=$moyenne;$i++){
echo '<img alt="'.$i.'" src="images/images-vote/etoile.png" style="width:32px;height:32px;"/>';
}
}
else{
echo 'Aucun vote pour le moment.';
}
}
?>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Anonyme209 Messages postés 678 Date d'inscription samedi 6 octobre 2012 Statut Membre Dernière intervention 22 décembre 2020 15
29 mars 2014 à 12:16
Regarde directement dans la base de données pour voir si les données sont bien enregistrées. Pour récupérer l'ip d'un visiteur, tu n'as pas besoin de passer par cette fonction:

function getIp()
{
    if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
    {
        $ip_vote = $_SERVER['HTTP_X_FORWARDED_FOR'];
    }
    elseif(isset($_SERVER['HTTP_CLIENT_IP']))
    {
        $ip_vote = $_SERVER['HTTP_CLIENT_IP'];
    }
    else
    {
        $ip_vote = $_SERVER['REMOTE_ADDR'];
    }
    return $ip_vote;
}

Seul ce petit bout de code suffit

$ip_vote = $_SERVER['REMOTE_ADDR'];
0
cs_lerenardduweb Messages postés 8 Date d'inscription samedi 14 mai 2005 Statut Membre Dernière intervention 2 décembre 2017
Modifié par cs_lerenardduweb le 29/03/2014 à 15:36
Merci pour le bout de code ;-)

Elles ne risquent pas d'être enregistrées puisque le script ne lit pas la variable, donc il est impossible de voter.
Le système de notation n'apparaît que si une id page existe.
0
Anonyme209 Messages postés 678 Date d'inscription samedi 6 octobre 2012 Statut Membre Dernière intervention 22 décembre 2020 15
29 mars 2014 à 16:41
Et ça, ce n'est pas du code qui enregistre les données dans la base de données?:
$insert = mysql_query("INSERT INTO note (id_page, note, ip) VALUES ('$id_vote', '$note', '$ip_vote') ");
0
cs_lerenardduweb Messages postés 8 Date d'inscription samedi 14 mai 2005 Statut Membre Dernière intervention 2 décembre 2017
29 mars 2014 à 17:02
Si mais soit je mets une numéro de page bidon :

<!-- PHP --> 
notation ('28', $ip_vote);
<!-- ENDPHP -->
Et dans ce cas les 5 étoiles apparaissent et je clique sur clle que je souhaite pour donner une note et ça enregistre.

Ou soit je choisis ce code :
<!-- PHP --> 
notation ($topic_id, $ip_vote);
<!-- ENDPHP -->

Et là le système de notation n'apparaît plus, car le premier argument n'est pas correctement renseigné, je ne peux donc plus voter.
0
Anonyme209 Messages postés 678 Date d'inscription samedi 6 octobre 2012 Statut Membre Dernière intervention 22 décembre 2020 15
29 mars 2014 à 17:53
A quoi sert
".mysql_real_escape_string($ipvote)."


mysql_query("SELECT ip FROM note WHERE ip = '".mysql_real_escape_string($ip_vote)."' AND id_page = '".mysql_real_escape_string($id_vote)."'");

moi pour récupérer des données, j'utilise ça et ça marche très bien:
mysql_query("SELECT ip FROM note WHERE ip = \"$ip_vote\" AND id_page = \"$id_vote\"");
0
cs_lerenardduweb
29 mars 2014 à 19:11
Oui je sais, je modifierai le code plus tard (ce n'est pas moi qui l'ai fait), mais pour le moment je cherche surtout à pouvoir récupérer l'ID de ma page généré par une variable phpbb afin de l'utiliser en php.
0
J'ai trouvé.
Merci quand même.
Il fallait quelqu'un qui connaisse vraiment bien le phpbb car en fait c'est la variable phpbb qu'il fallait récupérer en php.
0