Page 1 sur 1

Problème requête

Posté : 02 nov. 2008, 21:28
par sylvaing26
J'effectue une requete sur ma table SQL et mon $nbr est toujours null alors que j'ai des enregistrements dans ma table
<?php include("connect_panier.php");
			MYSQL_CONNECT($serveur,$utilisateur,$mdp) or die ("Connexion impossible");
			MYSQL_SELECT_DB($db) or die ("Connexion à la base $base impossible");
			$numero_commande = "1";
			$sql = mysql_query("SELECT * FROM '1'");
			$nbr = mysql_num_rows($sql);
			if(!isset($nbr)){
			echo "<p style=\"margin-top:20px; margin-bottom:0;\" align=\"center\"><font face=\"Arial\" color=\"#990000\"><span style=\"font-size:10pt;\">$numero_commande $nbr Vous n'avez aucun article dans votre panier</span></font></p>";
			}
			else{
			include("corps_panier.php");
			echo $nbr;
			}
			echo $nbr;
			?>

Posté : 02 nov. 2008, 21:43
par Ryle
mysql_num_rows() te retourne le nombre d'enregistrements trouvés par ta requête ou FALSE en cas d'erreur. Si tu n'obtiens pas un nombre, c'est qu'il y a eu une erreur.

S'il y a une erreur, c'est vraissemblablement que le paramètre que tu lui passes n'est pas bon. Cela veut dire que ta variable $sql ne contient pas une Ressource correcte. Cela veut dire que le résultat de mysql_query() n'est pas bon. Ce qui veut dire qu'il y a un problème avec ta requête.

Tu peux le vérifier en testant le résultat de mysql_query(), et connaitre les messages d'erreur éventuels avec un mysql_error() ou simplement en testant ta requête directement dans phpMyAdmin :)

Posté : 02 nov. 2008, 21:47
par sylvaing26
ca marche si je met SELECT * FROM `1` et dès que je passe une variable comme SELECT * FROM '$numerocommande' ca marche pu. Il veut les guillemets inverse lorsque j'ecrit `1`.
En revanche si j'ecrit un tout petit nom de variable avec les guillemets inversés tel que `$num` ca fonctionne ... :shock:

Posté : 03 nov. 2008, 01:03
par Ryle
Alors les apostrophes classique (') servent en SQL à délimiter une chaine de caractère. En revanche les apostrophes inversées (`) permettent à MySQL (et à lui uniquement) de protéger le nom d'une table ou d'un champ, ce qui permet (hélas ?) de leur donner n'importe quel nom.

Posté : 03 nov. 2008, 09:24
par albat
:!: J'ajouterai que :
- pour alléger l'écriture de la requête (et faciliter sa lecture)
- pour éviter d'utiliser des mots réservés (date, field, etc.) ou des noms avec des caractères compliqués (espaces, accents, etc.)
il est recommandé de ne pas utiliser les apostrophes pour les noms de tables et de champs.

Posté : 03 nov. 2008, 15:54
par sylvaing26
donc l'apostrophe inversée il faut sd'en servir uniquement pour les noms de table ?

Posté : 03 nov. 2008, 16:00
par zeus
Si tu arrives à ne pas l'utiliser, c'est que tu utilises que des noms standards. Donc, si tu ne l'utilises nul part, c'est le must ;)

Posté : 03 nov. 2008, 20:07
par sylvaing26
des noms standars c'est des noms sans chiffre et qui ne sont pas reservés ?
j'ai des tables ou s'est des numero et je dois les mettre donc c'est pas standar ?

Posté : 04 nov. 2008, 19:32
par albat
des noms standars c'est des noms sans chiffre et qui ne sont pas reservés ?
Les chiffres sont acceptés dans les noms de champs et de tables,
à condition que le 1er caractère soit une lettre.
exemples : table01, champ427 sont des noms valides.
j'ai des tables ou s'est des numero et je dois les mettre donc c'est pas standar ?
Gni ? :shock:

Posté : 07 nov. 2008, 22:42
par sylvaing26
Oula oui en efefet je reformule lol
J'ai des tables qui ont comme unique nom un chiffre. Il faut donc que je mette les guillemets inverse car il ne s'agit pas de noms standars

Posté : 08 nov. 2008, 00:07
par albat
Il vaut mieux que tu les renommes surtout ! :evil:

Les apostrophes inversées, c'est comme une couche de peinture sur un mur pourri :
ça paraît joli et sauve les apparences, mais ça s'écroulera sous peu.

Posté : 08 nov. 2008, 11:20
par sylvaing26
ca merite d'etre clair ! :roll: