Variable dans URL pour requête SQL

Fermé
NOa - 13 févr. 2012 à 17:20
 NOa - 14 févr. 2012 à 11:20
Bonjour,

voici mon petit problème. J'ai une base de donnee (nom, prenom, adresse, numero) et je souhaite faire en sorte que selon l'url que je tape, cela fasse une requete et affiche le resultat. Je m'explique :

mondomaine.com/test.php?Phone=01234656789

donnera un résultat sql (voir le code)

mondomaine.com/test.php?Phone=0987654321

donnera un résultat sql encore different


j'ai fait un bout de code permettant de faire la requete sql :

<?php
// on se connecte à notre base
$base = mysql_connect ('xxxxx', 'xxxxx', 'xxxxx');
mysql_select_db ('ma_base', $base) ;
?>
<html>
<head>
<title></title>
</head>
<body>
<?php

// lancement de la requete (dans ce cas présent cette requête est dirigée vers un numero precis, mais je voudrais que ce numero soit celui de la varibale dans l url)
$sql = 'SELECT * FROM ma_table WHERE Phone = "0123456789"';

// on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());

// on recupere le resultat sous forme d'un tableau
$data = mysql_fetch_array($req);

// on libère l'espace mémoire alloué pour cette interrogation de la base
mysql_free_result ($req);
mysql_close ();
?>
Détails de la requête :<br /><br />
<em>Nom, Prenom</em> : <strong><?php echo $data['LastName']; ?> <?php echo $data['FirstName']; ?></strong><br />
<em>Adresse</em> : <strong><?php echo $data['Address']; ?></strong><br />
<em>Telephone</em> : <strong><?php echo $data['Phone']; ?></strong><br />
<em>Portabale</em> : <strong><?php echo $data['Cell']; ?></strong><br />
<em>Fax</em> : <strong><?php echo $data['Fax']; ?></strong><br />
</body>
</html>

(l'affichage dans variable marche

Je sent que je vais me faire incendier parceque je suis totalement nul en php, mais bon espérons qu'une âme charitable daigne m'aider !

En vous remerciant.

2 réponses

Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
14 févr. 2012 à 11:10
Bonjour,

Les variables passées dans l'URL sont accessibles en php dans le tableau $_GET[].

Donc, dans ton cas, $_GET'Phone'] te donne le numéro de téléphone.
Ensuite, il faut se protéger, parce que suivant ce qui est mis dans la variable Phone, on peut faire exécuter n'importe quelle requête à ta base de données.
Il faut également gérer le cas où cette variable n'est pas du tout donnée dans l'URL, en utilisant la commande isset().

Pour ça, il existe la fonction mysql_real_escape_string().

Du coup, ton code devient :

// lancement de la requete (dans ce cas présent cette requête est dirigée vers un numero precis, mais je voudrais que ce numero soit celui de la varibale dans l url)
$phone = isset($_GET['Phone']) ? mysql_real_escape_string($_GET['Phone']) : '';
$sql = 'SELECT * FROM ma_table WHERE Phone = "'.$phone.'"';
1
Et bah merci, ça marche niquel de niquel :D

ça me donne envie d'approfondir mon apprentissage sur le php et mysql !

Encore merci, bonne journée.
0