Salutations!

Mon code de base consiste à insérer le IP et la date d'un visiteur mais j'ai décidé d'inclure la localisation "country" dans la base que j'ai préalablement inséré dans une table. Je me demandais comment je peux aller chercher dans une table le pays et de l'insérer dans mes statistiques.

Mon SELECT va bien chercher le «country» dans la table ip2country si c'est juste faire afficher avec foreach mais pas quand je chercher à insérer dans une autre table. Aucun message d'erreur affiché. Peut-être un problème avec INSERT et SELECT. J'ai besoin d'aide.

La partie requête:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
INSERT INTO stats_visites (ip , date_visite , pages_vues, range_start, range_end, country_code, country_name)
VALUES (:ip , :date , 1, :range_start, :range_end, :country_code, :country_name)
SELECT * FROM ip2country WHERE range_start <= :ip_long AND range_end  >= :ip_long LIMIT 1
ON DUPLICATE KEY UPDATE pages_vues = pages_vues + 1"

Le code complet:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$ip = $_SERVER['REMOTE_ADDR'];
$ip_long = sprintf("%u", ip2long($ip));
$date = date('Y-m-d');
 
$query = $con->prepare("
 
 INSERT INTO stats_visites (ip , date_visite , pages_vues, range_start, range_end, country_code, country_name)
 VALUES (:ip , :date , 1, :range_start, :range_end, :country_code, :country_name)
 SELECT * FROM ip2country WHERE range_start <= :ip_long AND range_end >= :ip_long LIMIT 1
 ON DUPLICATE KEY UPDATE pages_vues = pages_vues + 1");
 
$query->execute(array(
    ':ip' => $ip,
    ':date' => $date,
    ':range_start' => $range_start,
    ':range_end' => $range_end,
    ':country_code' => $country_code,
    ':country_name' => $country_name,
    ':ip_long' => $ip_long
));