8768 sujets

Développement web côté serveur, CMS

Bonjour,

Voici un problème que je n'arrive pas à résoudre, l'adresse IP des votant ne s'inscris pas dans la db (VARCHAR (15)).

Je collecte l'IP ainsi :

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();


Et je l'enregistre ainsi :

//Insertion en BDD	
     $insert = mysql_query('INSERT INTO note (id_page, note, ip) VALUES (" '.$id_vote.' ", " '.$note.' ", " '.$ip_vote.' ") ');


Tout le reste est bien enregistré, l'identifiant du vote, la note et le numéro de la page obtenu ainsi:

		<!-- PHP -->
                     $topic_id = request_var('t', 0);
                     notation ($topic_id,$ip_vote);
					 		                             <!-- ENDPHP -->


L'IP en revanche ne s'enregistre pas mais elle apparaît bien si je fait un echo.

echo $ip_vote;
echo "IP vote :".$ip_vote.; 

Dans les 2 cas l'ip s'affiche.

Je veux bien un coup de main. Smiley smile

Merci
Modifié par chipset (01 Apr 2014 - 10:59)
Bonsoir,

Voilà :

-- Structure de la table `note`

CREATE TABLE IF NOT EXISTS `note` (

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `id_page` int(11) NOT NULL,

  `note` int(11) NOT NULL,

  `ip` varchar(15) COLLATE latin1_general_ci NOT NULL,

  PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=1 ;
D'accord, tu peux afficher la requête avant de l'exécuter, pour voir quelques sont les valeurs mises? Essaies après de l'exécuter directement sur le serveur mysql, et regarde le retour que te donne mysql. Regarde la doc pour afficher les erreurs en utilisant les fonctions mysql_*, ceci dit en passant il serait plus que judicieux de ne pas utiliser ces fonctions mais de passer à un truc plus approprié, pdo_mysql, mysqli par exemple.
[i]Essaies après de l'exécuter directement sur le serveur mysql, et regarde le retour que te donne mysql. Regarde la doc pour afficher les erreurs en utilisant les fonctions mysq[/i],

Tu penses qu'il faut que je lance une requête directement depuis mysql ?

[b] ceci dit en passant il serait plus que judicieux de ne pas utiliser ces fonctions mais de passer à un truc plus approprié, pdo_mysql, mysqli par exemplel[/b]

Oui je sais, mais avant de réécrire un script je préférerai être certain qu'il fonctionne.

Merci Smiley biggrin
Modifié par chipset (31 Mar 2014 - 20:21)
Oui, le but c'est que tu affiches la requête générée par PHP, ça te permettra de voir si les valeurs sont bonnes, s'il n'y a pas d'erreur de syntaxe.
Mais je ne sais pas le faire ça, je ne maîtrise pas mysql.
Que dois-je envoyer au juste comme requête ?

Merci
C'est réglé, j'appelai 2 fois la fonction ds la même page.
J'ai dû faire des tests et j'ai oublié de supprimer l'include.

Merci
A++ Smiley cligne