Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/12/2011, 09h43   #1
Futur Membre du Club
 
Inscription : février 2007
Messages : 44
Détails du profil
Informations personnelles :
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : février 2007
Messages : 44
Points : 17
Points : 17
Par défaut erreur sur requête mysql

Salut à tous.

Je viens vers vous car je rencontre un problème à formuler un requête Mysql (certainement toute simple mais...).
Voila dans une bdd avec une seule table de 2 colonnes (année chiffre).
J'aimerai avoir le chiffre correspondant à une année donnée.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php 
include('connect.php');
 
$sql = "SELECT * FROM `" . $DB_TABLE_NAME . "`";
//$sql*=*SELECT * FROM tab_maya WHERE dates ='$annee';
//$sql*= 'SELECT * FROM `tab_maya` WHERE `dates` =1928 ';
 
$req = mysql_query($sql) or die(mysql_error());
while ($chiffre = mysql_fetch_assoc($req))
   {
?>
 
 
<?php 
   }
?>
Voila ci-dessus le code

Si quelqu'un pouvait m'éclairer et surtout en m'expliquant cela serait vraiment sympa.

D'avance merci

@+

Naje83
naje83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/12/2011, 09h51   #2
Membre éprouvé
 
Homme
Ingénieur développement logiciels
Inscription : avril 2009
Messages : 501
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Service public

Informations forums :
Inscription : avril 2009
Messages : 501
Points : 490
Points : 490
Sous MySQL, ce qu'il faut mettre entre simples cotes ('), c'est une valeur fixe.
Par exemple, ta requete doit être :

Code :
1
2
 
SELECT * FROM tab_maya WHERE dates = '1928';
Ou en php (je n'en ai pas fait depuis longtemps...
Code :
$sql = 'SELECT * FROM tab_maya WHERE dates = `1928` ';
oneagaindoguys est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/12/2011, 10h02   #3
Futur Membre du Club
 
Inscription : février 2007
Messages : 44
Détails du profil
Informations personnelles :
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : février 2007
Messages : 44
Points : 17
Points : 17
Merci pour ta réponse rapide.
j'ai effectué la correction et je rencontre un message d'erreur :

Notice: Undefined variable: sql in C:\wamp\www\signe maya\index.php on line 17

ce qui correspond à la ligne de la gestion d'erreur mysql
naje83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/12/2011, 10h33   #4
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 029
Points : 18 331
Points : 18 331
Envoyer un message via MSN à CinePhil
1) Si le nom de la table ne comporte pas d'espace ni de caractères diacritiques ou autres fantaisies, bref, si elle est correctement nommée, ce qui semble être le cas (tab_maya) les apostrophes inversées sont inutiles.

Pourquoi t'embêter d'ailleurs à mettre le nom de la table dans une variable dans ton premier essai de requête ?

2) Évite de relancer la guerre des étoiles !

3) En PHP, protège tes variables utilisées dans les requêtes pour éviter les injections SQL.

4) Tu dis que ta table comporte une colonne appelée "année" (au passage, éviter les lettres accentuées dans les nom de tables ou de colonnes) mais dans ta requête tu utilises une colonne appelée "dates" !

5) De quel type est la colonne "dates" ? INTEGER ou DATE ?

Si c'est un entier, inutile d'entourer la valeur cherchée par des apostrophes puisque ce n'est pas une chaîne de caractères.
Code :
1
2
3
4
5
6
$sql = "
  SELECT chiffre
  FROM tab_maya
  WHERE dates = ".intval($annee);
 
$req = mysql_query($sql) OR die(mysql_error());
Si c'est une date, il faut extraire l'année de la date.
Code :
1
2
3
4
5
6
$sql = "
  SELECT chiffre
  FROM tab_maya
  WHERE EXTRACT(YEAR FROM dates) = ".intval($annee);
 
$req = mysql_query($sql) OR die(mysql_error());
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/12/2011, 17h31   #5
Futur Membre du Club
 
Inscription : février 2007
Messages : 44
Détails du profil
Informations personnelles :
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : février 2007
Messages : 44
Points : 17
Points : 17
Merci

J'ai trouvé...

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
//$annee = "1910";
?>
<?php 
include('connect.php');
$sql = "SELECT * FROM tab_maya WHERE annee ='1913'";
$req = mysql_query($sql) or die(mysql_error());
while ($chiffre = mysql_fetch_assoc($req))
   {
?>
 
<?php 
//echo $annee['annee'];
echo $chiffre['chiffre'];?> 
 
<?php 
   }
?>
@+

Naje83
naje83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h07.


 
 
 
 
Partenaires

Hébergement Web