Compteur

Eléphanteau du PHP | 10 Messages

05 nov. 2013, 23:47

Mon code de compteur compte le nombre de clique mais ne redirige pas... HELP svp
<?php
 
    $id = (isset($_GET['id'])) ? abs(intval($_GET['id'])) : 0;
    // ouverture de connexion mysql
    $usr = '...';
    $db = '...';
    $pwd = '...';
    $host = '...';
 
    mysql_connect($host, $usr, $pwd);
    mysql_select_db($db);
     
    $req = sprintf("UPDATE liens SET compteur=(compteur +1) WHERE id='%d';",$id);
 
    if (mysql_query($req))
    {
        // compteur incrémenté, on récupère l'URL et on envoie la page
        $req_url = sprintf("SELECT url FROM liens WHERE id='%d';",$id);
 
        $url = mysql_query($req_url);
		if (mysql_num_rows($url) == 1);
        {
            header("Location : ".$url);
        };
    };
	var_dump($id, $req, $req_url, $url);
    mysql_close( );
?>

Mammouth du PHP | 2278 Messages

06 nov. 2013, 10:02

Le manuel dit :"N'oubliez jamais que header() doit être appelée avant que le moindre contenu ne soit envoyé, soit par des lignes HTML habituelles dans le fichier, soit par des affichages PHP. Une erreur très classique est de lire un fichier avec include ou require, et de laisser des espaces ou des lignes vides, qui produiront un affichage avant que la fonction header() ne soit appelée. Le même problème existe avec les fichiers PHP/HTML standards."
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

ViPHP
ViPHP | 2577 Messages

06 nov. 2013, 10:07

Hypothèse 1 : tu ne passes pas par l'appel de la fonction header()
Hypothèse 2 : $url ne contient pas ce qu'il faut.

edit :
Hypothèse 3 : cf sirakawa
Mais je parie sur l'hypothèse 2

Eléphanteau du PHP | 10 Messages

06 nov. 2013, 22:33

Il y a bien quelque chose dans $url
Image

Il n'y a pas de fonctions html avant mon code comme tu peur le voir :)

Eléphanteau du PHP | 10 Messages

07 nov. 2013, 18:44

Merci, voila le bon code:
<?php
 
    $id = (isset($_GET['id'])) ? abs(intval($_GET['id'])) : 0;
    // ouverture de connexion mysql
    $usr = '...';
    $db = '...';
    $pwd = '...';
    $host = '...';
 
    mysql_connect($host, $usr, $pwd);
    mysql_select_db($db);
 
    $req = sprintf("UPDATE liens SET compteur=(compteur +1) WHERE id='%d';",$id);
 
    if (mysql_query($req))
    {
        // compteur incrémenté, on récupère l'URL et on envoie la page
        $req_url = sprintf("SELECT url FROM liens WHERE id='%d';",$id);
 
        $url = mysql_query($req_url);
                if (mysql_num_rows($url) == 1)
        {
            $data = mysql_fetch_array($url);
			header("Location: http://".$data['url']);
        };
    };
        var_dump($id, $req, $req_url, $url);
    mysql_close( );
?>