8791 sujets

Développement web côté serveur, CMS

Bonsoir à tous.

Je suis en train de créer un site, et j'ai néanmoins un petit problème d'accès ou de lecture dans ma base de donné. Le bout de code que je vais vous montrer me permet de vérifier si l'url proposé par un formulaire $add au format http://www.monsite.com existe déja dans ma base de donnée.
Le problème c'est que la requete ne renvoie rien ( echo $result['id']; ), alors que je teste avec une url présente dans ma base de donnée.

$add = 'http://www.google.com';
$name = $_POST['name'];


$db = "button";
mysql_connect('localhost', 'root', 'root')or
die('Impossible de se connecter : ' . mysql_error());
mysql_select_db($db) or die ('Base de donnée inexistante !');
echo " 1 ";
echo $name.' '.$add;

$query = mysql_query('SELECT id FROM liste WHERE url=$add');
$result = mysql_fetch_array($query);
echo " 2 ";

echo $result['id'];

echo " 3 ";

if( 4>5 )
{
mysql_query("INSERT INTO liste (nom,url) VALUES ('$name','$add')");
echo 'Le site '.$name.' a bien été ajouté à notre liste à cette adresse : '.$add;
}
else
{
echo "Le site ".$name." est déjà enregistré dans notre liste.";
}

// on ferme la connexion à la base de données
mysql_close ();
echo " END";
?>


Merci

PS: Je suis concient que les conditions du if sont absurde, mais c'est temporaire
PS: les echo "1"; ... c'est pour savoir ou ca bloque.
Modifié par louzichon (07 Apr 2010 - 00:10)
Salut,

En tant que modérateur, je me dois de te faire remarquer que tu n'as malheureusement pas respecté l'une des Règles de base du forum qui est d'afficher les codes et exemples proprement à l'aide des boutons [ code]... ici ton code HTML, CSS, PHP, etc.[ /code] (sans espace après le crochet ouvrant).

upload/1-code.gif

Je te remercie par avance de bien vouloir éditer ton message afin de le rendre conforme à cette règle. Smiley cligne


Pour ce qui est de ta question la leçon 1 ou 2 de php doit certainement parler de la différence entre les quotes et les guillemets. Smiley murf

Un petit exemple :
$add = 'http://www.google.com';
echo '<p>$add</p>';
echo "<p>$add</p>";
echo '<p>'.$add.'</p>';
echo "<p>".$add."</p>";

J'en profite donc pour te signaler que, comme indiqué dans le topic : A lire avant de poster dans ce salon !, Alsacréations n'est pas le bon forum pour débuter en PHP. Tu pourrais regarder du côté de http://phpdebutant.org ou du site du Zéro pour les tutos et de php.net pour la doc.
Merci des conseils, mais je pense qu'il y a un mal entendu. J'ai essayé à plusieurs reprises de mettre mon code entre les balises [ code=php ] mais lors de l'affichage du message, mon code était supprimé. Serait-ce un bug de votre magnifique site fait par des PROs du Web ?




<php? echo "Mais non"; ?>
Il y a effectivement un bug (répertorié dans la to-do list) pour la mise en forme du code en php quand il commence par <?php (je sais : c'est un comble !) il suffit de mettre [ code=html]

Mais bon : cela ne change pas grand chose au fait que la ligne
$query = mysql_query('SELECT id FROM liste WHERE url=$add');
n'est pas prête de fonctionner...
J'ai remarqué que ça ne fonctionnait pas. J'ai essayer comme ca :

$query = mysql_query('SELECT id FROM liste WHERE url='.$add);


et ça ne fonctionne toujours pas (peut-être que c'est normale).

C'est pourquoi je vous demande de l'aide...!

Ps: j'ai édité mon premier post Smiley biggrin
Salut

 $query = mysql_query("SELECT id FROM liste WHERE url='$add' "); 


quand on compares des chaines on doit les entourés de ' en SQL

en PHP
les chaines entre "" voient les variables (entre autres) interprété
les chaines entre '' pas d'interprétation.

je t'aide mais c'est la base qui te manques. relis bien tes sources de php et mysql.
Modifié par CPascal (07 Apr 2010 - 00:09)
louzichon a écrit :
et ça ne fonctionne toujours pas (peut-être que c'est normale).
Oui puisque c'est une chaîne. Il faut faire :
SELECT id FROM liste WHERE url='http://www.google.com'
Donc d'un point de vue php et en rajoutant l'utilisation de mysql_real_escape_string pour se protéger des injections SQL :
$query = mysql_query("SELECT id FROM liste WHERE url='".mysql_real_escape_string($add)."' ");