Impossible de recueillir l'addresse ip a partir dun base mysql!

nico20011caus Messages postés 37 Date d'inscription jeudi 23 décembre 2004 Statut Membre Dernière intervention 14 février 2009 - 9 nov. 2007 à 01:54
nico20011caus Messages postés 37 Date d'inscription jeudi 23 décembre 2004 Statut Membre Dernière intervention 14 février 2009 - 12 nov. 2007 à 23:55
Bonjour,
 J'ai un site internet qui à php5 et un serveur mysql. Le probleme c'est que je ne suis pas capable de recueillir l'addresse ip a partir de ma base de donnée. Alors tout commence que quand une personne rentre sur le site la présence est écrite dans la base de donnée une nouvelle donnée est alors insérer pour ce coin la pas de probleme tout est envoyé correctement ainsi que l'addresse ip. Ensuite je veut recueillir l'addresse ip parce que il a des donnée qui sont envoyé au debut et je veut avoir une donnée differente c'est pour sa que je passe par l'addresse ip pour que le site affiche ce que l'utilisateur à voulu. voici ce qui me pose probleme en sachant que je suis connecter à la base de donnée:

<?

$ip=$_SERVER["REMOTE_ADDR"];

$comp_theme=mysql_query("SELECT theme
FROM control WHERE ip=".(int)$ip);?>

Ce qui me pose probleme c'est le $comp_theme=mysql_query("SELECT theme FROM control WHERE ip=.(int)$ip");

c'est à cause de WHERE ip... que sa marche pas mais c'est lessentiel sinon ben tout les donnée vont etre afficher puis ben sa fait plusieurs page differente sur une page! aidez moi s.v.p

12 réponses

cs_putch Messages postés 624 Date d'inscription mardi 6 mai 2003 Statut Membre Dernière intervention 14 décembre 2009 1
9 nov. 2007 à 11:01
salut !

une adresse IP est une chaine '192.168.0.1' par un entier ...
bref vire la casse (int)

++
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
9 nov. 2007 à 12:25
0
nico20011caus Messages postés 37 Date d'inscription jeudi 23 décembre 2004 Statut Membre Dernière intervention 14 février 2009
9 nov. 2007 à 23:40
Virer la case de quel façon? je ne comprend pas...
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
10 nov. 2007 à 02:45
Salut,

C'est pas la casse (avec deux S), mais le transtypage. En anglais, cast. La casse, c'est majuscule/minuscule.

Tu as deux possibilités :
- soit tu veux absolument stocker les ip sous forme d'entiers, auquel cas tu dois convertir ton IP en entier avec ip2long (la fonction inverse est long2ip)
- soit tu t'en fiches et tu peux stocker les ip sous forme de chaine de 15 caractères maxi, auquel cas il faut enlever les (int) et t'assurer que la colonne ip de ta table stocke bien des chaines VARCHAR(15)

Par ailleurs, dans ta requête SQL, assure-toi que les chaines de caractères sont entourées de guillemets. Sinon, ça déconne.
0

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

Posez votre question
cs_jalfr Messages postés 5 Date d'inscription dimanche 11 novembre 2007 Statut Membre Dernière intervention 20 novembre 2007
11 nov. 2007 à 14:14
Salut nico !

En clair, voila ce qu'il faut que tu fasse:

<?

$ip=$_SERVER["REMOTE_ADDR"];

$comp_theme=mysql_query("SELECT theme
FROM control WHERE ip=".$ip);

?>

Voila :)
0
nico20011caus Messages postés 37 Date d'inscription jeudi 23 décembre 2004 Statut Membre Dernière intervention 14 février 2009
11 nov. 2007 à 17:28
ok merci je vais essayer!!
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
11 nov. 2007 à 17:32
En fait, c'est pas clair...

Parce que si la colonne ip dans ta base est de type int, ben ça marchera pas.
Mais en faisant ça, oui :
$comp_theme=mysql_query("SELECT theme FROM control WHERE ip=".ip2long($ip);
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
11 nov. 2007 à 17:35
Oups. Correction :
$comp_theme=mysql_query('SELECT theme FROM control WHERE ip='.ip2long($ip));

Et puis le code donné par jalfr comporte une erreur qui empêchera la requête de s'exécuter...
Il faut mettre les chaines de caractères entre guillemets, sinon MySQL n'aime pas.
0
nico20011caus Messages postés 37 Date d'inscription jeudi 23 décembre 2004 Statut Membre Dernière intervention 14 février 2009
11 nov. 2007 à 17:56
Sa marche pas quand je met le mysql_fetch_assoc() il dise messamble que c,est bon mais je pense que c'est a cose du int qui est enlever pcq quand je le met il met aucun message derreur mais ya rien qui affiche, mai sj'ai deja reussi avec ip2long() alors je vais l'utiliser.

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /usr/local/www/apache22/data/test/test.php on line 8
0
cs_jalfr Messages postés 5 Date d'inscription dimanche 11 novembre 2007 Statut Membre Dernière intervention 20 novembre 2007
11 nov. 2007 à 17:58
Re!

Euh... où il y a pas de guillemet :s ?

++
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
11 nov. 2007 à 18:06
@jalfr
Ici :
$comp_theme=mysql_query("SELECT theme FROM control WHERE ip=".$ip);

La bonne requête, en admettant que la colonne ip soit de type texte :
$comp_theme=mysql_query("SELECT theme FROM control WHERE ip='".$ip."'");

En gros, la requête MySQL suivante est incorrecte :
SELECT theme FROM control WHERE ip=127.0.0.1;

Par contre, celle-ci est correcte :
SELECT theme FROM control WHERE ip='127.0.0.1';
0
nico20011caus Messages postés 37 Date d'inscription jeudi 23 décembre 2004 Statut Membre Dernière intervention 14 février 2009
12 nov. 2007 à 23:55
daccord je vais essayer quand je vais avoir le temps je vous en dira des nouvelles.
0
Rejoignez-nous