Récupérer l'id d'un topic

WRInaute discret
Bonjour,

J'ai mis en place un système de notation pour un site de recettes en phpBB3 (seo).

Il ne me manque plus qu'une seule chose : le numéro de page.

Le code php fonctionne ainsi en html :

Code:
	<!-- PHP -->
             notation ('10',$ip_vote);
            <!-- ENDPHP -->

10 étant dans l'exemple le numéro de page.
Sur phpbb on ne peut évidemment pas faire ainsi, je verrai mieux :

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

Et dans la fonction du script :

Code:
function get_post_id( $post )
{
	$topic_id=$post;
	$topic_id=str_replace('.html', '', $topic_id);
	$pos = strrpos($topic_id, 't');
	$topic_id = (int) substr($topic_id, $pos+1, 30);
// sans Seo = $topic_id = (int) substr($topic_id, $pos+2, 30);
	return $topic_id;
}

Code que j'ai récupéré sur le web car je ne suis pas très bon en codage.

Mais ça marche pas, il doit me manquer quelque chose.

Merci
 
Nouveau WRInaute
Bonjour,

Peux-tu indiquer ce que contient la variable $post ? Ajoute "echo $post;" dans la fonction get_post_id :
Code:
function get_post_id( $post )
{
   echo $post;
   $topic_id=$post;
   $topic_id=str_replace('.html', '', $topic_id);
   $pos = strrpos($topic_id, 't');
   $topic_id = (int) substr($topic_id, $pos+1, 30);
// sans Seo = $topic_id = (int) substr($topic_id, $pos+2, 30);
   return $topic_id;
}

Comme ça on pourra voir ce qui cloche dans cette fonction.
 
WRInaute discret
Bah c'est un bout de code que j'avais et ajouté en désespoir de cause mais je crois que ça n'aurait pas fonctionné.
A force on en vient à faire n'importe quoi en espérant que ça marche.

Je n'y connais rien de rien en codage et sur les forum spécialisés à ce sujet dont je ne citerai pas le nom ici ils ont pour habitude de répondre "Tu crois pas qu'on va le faire à ta place".
Honnêtement c'est un peu ce que j'attends, je ne sais pas le faire, et si je demande de l'aide c'est que justement je n'y arrive pas, autrement...je ne peux pas l'inventer cette variable, j'en suis incapable.

Alors en fait un script de vote construit ainsi :


Code:
<?php
 
//Variable de connexion BDD
$nom_du_serveur ="blablabla";
$nom_de_la_base ="blablabla";
$nom_utilisateur ="blablabla";
$passe ="blablabla";
 
//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());

 
//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.';
    }
}
?>

Est appelé dans la page comme ceci :

Code:
  <!-- PHP -->
             notation ('numero de la page', $ip_vote);
            <!-- ENDPHP -->

Moi je cherche à faire pour phpBB :

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

Ben, je n'y arrive pas.

Et à part tenter au petit bonheur la chance je n'y arriverai pas, c'est comme demander à un plombier de se mettre à la couture :lol:

Merci
 
Discussions similaires
Haut