rediriger un visiteur en fonction de son code posta

putu
Invité n'ayant pas de compte PHPfrance

01 nov. 2006, 14:58

Salut, je souhaite rediriger le visiteur en fonction de son code postal: soit son code postal figure bien dans la bdd et il sera redirigé vers pageY, soit il n'y figure pas et il sera redirigé vers la pageZ. QQ'un peut-il m'éclaircir sur mon code qui redirige à chaque fois vers pageY ? Merci d'avance

Voici mon code:

<?php
require("conf/connex.php");
$cp=$HTTP_POST_VARS['cp'];

$requete="SELECT cp FROM matable WHERE cp = '$cp'";

$link = mysql_connect($hostname, $username, $password);
$result = mysql_db_query($database, $requete);
mysql_close($link);


if ($result <> 0){
header("Location:pageY.html");
}
else {
header("Location:pageZ.html");

}
?>

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

01 nov. 2006, 15:34

Tout d'abord, il y a pas mal d'éléments obsolètes dans ton code.

Je te suggère de le corriger en remplaçant :
- HTTP_POST_VARS par $_POST
- mysql_db_query() par mysql_query()

Ensuite, il y a quelques retouches à apporter...
require("conf/connex.php");
$cp = $_POST['cp'];

$link    = mysql_connect($hostname, $username, $password);
$requete = "SELECT count(*) FROM matable WHERE cp = '".$cp."'";
$result  = mysql_query($requete);
$nb      = mysql_result($result, 0);
mysql_close($link);

header("Location:page".($nb>0 ? "Y" : "Z").".html");

putu
Invité n'ayant pas de compte PHPfrance

01 nov. 2006, 15:47

Albat, je viens de tester ton code, mais le serveur me renvoi 2 warning:

le 1er sur cette ligne: $nb = mysql_result($result, 0);
mysql_result(): supplied argument is not a valid MySQL result resource

le 2ème sur cette ligne: header("Location:page".($nb>0 ? "Y" : "Z").".html");
Cannot add header information - headers already sent by

Merci de ton aide.

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

01 nov. 2006, 16:06

  1. Curieux... :shock:
    À tout hasard, remplace :
    $result  = mysql_query($requete); 
    par :
    $result  = mysql_query($requete) or die("C'est ici que ça gauffre !"); 
    pour chercher d'où ça peut venir.
  2. Qu'y a-t-il dans ta page avant ce script ?
    Le fichier connex.php à inclure contient-il des echo, des print, des lignes blanches ?

Eléphant du PHP | 50 Messages

01 nov. 2006, 16:09

Hello!

Pour le première, regarde que tes noms de table etc soient corrects. c'est peut-être ça.

Pour la seconde, voici un topic qui pourra t'intéresser: http://www.phpfrance.com/forums/viewtop ... ready+sent
Santé Sans Frontières - http://www.ssf-bg.org

ViPHP
ViPHP | 1961 Messages

01 nov. 2006, 16:13

Bonjour,

Je crois qu'il manque un espace apr les 2 points
 header("Location: page".($nb>0 ? "Y" : "Z").".html"); 
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

01 nov. 2006, 16:20

:arrow: Ajoloca
Bien vu, mais l'espace après le Location: semble finalement facultatif.
Je viens de tester cet exemple qui fonctionne parfaitement.
$a=1;
header("location:".($a>0 ? "http://www.phpfrance.com" : "http://www.google.fr"));

Eléphant du PHP | 50 Messages

01 nov. 2006, 16:21

Possible, mais pour compléter le topic que j'ai mis dans le lien, il faut même que la balise <?php soit à la PREMIERE ligne de la page PHP.

Peut-être que c'est seulement ça.

A plus
Santé Sans Frontières - http://www.ssf-bg.org

ViPHP
ViPHP | 1961 Messages

01 nov. 2006, 16:37

Re,
@albat
J'ai deux serveurs, un sous Linux (FC5), l'autre sous Win-XP. Sur Linux ça marche, sur XP non. BIZzzz.......
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

01 nov. 2006, 16:46

:shock:
Je suis sous XP et ça ne bugue pourtant pas. :-k

Va falloir songer à un exorcisme en profondeur... :langue:

putu
Invité n'ayant pas de compte PHPfrance

01 nov. 2006, 16:50

Merci, le problème est résolu!
Il m'a suffit de remplacer la ligne de code :
$result = mysql_query($requete);
par celle-ci:
$result = mysql_db_query($database, $requete);

pour que cela fonctionne bien.

Merci pour ton code Albat. :wink:

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

01 nov. 2006, 16:53

Les anciennes fonctions sont acceptées et pas les nouvelles ???

Quelles versions de PHP et de MySQL utilises-tu ? :-k

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

01 nov. 2006, 17:30

Aaaaah, je crois avoir compris !

Ta façon de faire :
$link    = mysql_connect($hostname, $username, $password);
$requete = "SELECT count(*) FROM matable WHERE cp = '".$cp."'";
$result  = mysql_db_query($db, $requete); 
$nb      = mysql_result($result, 0);
Ma façon de faire :
$serveur = mysql_connect($host, $user, $pass) or die("Connexion au serveur impossible");
$base    = mysql_select_db($db, $serveur) or die("Connexion à la base de données impossible");
$requete = "SELECT count(*) FROM matable WHERE cp = '".$cp."'";
$result  = mysql_query($requete);
$nb      = mysql_result($result, 0);
Je précise la base, une fois pour toutes, dès le début.
Je n'ai donc pas besoin de le faire à chaque exécution d'une requête.