You have an error in your SQL syntax ..........
Fermé
t671
Messages postés
1459
Date d'inscription
lundi 25 février 2008
Statut
Membre
Dernière intervention
19 novembre 2024
-
30 nov. 2016 à 15:40
nagaD.scar Messages postés 4272 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023 - 30 nov. 2016 à 18:04
nagaD.scar Messages postés 4272 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023 - 30 nov. 2016 à 18:04
A voir également:
- You have an error in your sql syntax near ' '' at line 1
- Aux in - Forum Audio
- Dc in - Forum Audio
- Line in ✓ - Forum Matériel & Système
- Playback error reconnect in 3s (1/5) francais - Forum Box et Streaming vidéo
- The requested url was rejected. please consult with your administrator. ✓ - Forum Réseaux sociaux
4 réponses
nagaD.scar
Messages postés
4272
Date d'inscription
samedi 8 septembre 2007
Statut
Membre
Dernière intervention
4 janvier 2023
252
30 nov. 2016 à 15:48
30 nov. 2016 à 15:48
Salut,
Le message d erreur est assez explicite, un echo de ta requête t aurai mis sur la voie si tu ne le vois pas directement.
Donc dans ta requete:
Il y a deux erreurs:
- Le
soit
soit
Le premier problème sera corrigé.
- le
Test et confirme si c est ok.
naga
Le message d erreur est assez explicite, un echo de ta requête t aurai mis sur la voie si tu ne le vois pas directement.
Donc dans ta requete:
$query4 = 'SELECT id,num_indiv,famille,nom,prenom,date_naissance,date_dc FROM individus WHERE num_indiv LIKE '.$tonarray[$i]['conjoint'].' ORDER BY (SUBSTRING('.$tonarray[$i]['date_mariage'].', -4) ASC)';
Il y a deux erreurs:
- Le
LIKE '.$tonarray[$i]['conjoint'].': d'une part il manque les quotes (c'est un string), et d'autre part l utilisation du like inclu un joker .. ce n est pas une obligation mais faire un like sur une chaine fixe est une hérésie ! mécréant! ^^. Plus sérieusement, en mettant
soit
WHERE num_indiv LIKE "'.$tonarray[$i]['conjoint'].'%" ORDER BY
soit
WHERE num_indiv = "'.$tonarray[$i]['conjoint'].'" ORDER BY
Le premier problème sera corrigé.
- le
ORDER BY (SUBSTRING('.$tonarray[$i]['date_mariage'].', -4) ASC)': même remarque pour le string: manque les quotes. Donc:
ORDER BY (SUBSTRING("'.$tonarray[$i]['date_mariage'].'", -4) ASC)'
Test et confirme si c est ok.
naga
t671
Messages postés
1459
Date d'inscription
lundi 25 février 2008
Statut
Membre
Dernière intervention
19 novembre 2024
11
30 nov. 2016 à 16:19
30 nov. 2016 à 16:19
Merci naga, mais le tri sur date_mariage (du plus loin au plus prêt) ne se fait toujours pas :o(
jordane45
Messages postés
38308
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
30 nov. 2016 à 16:35
30 nov. 2016 à 16:35
Bonjour,
Je pense, en regardant ton message d'erreur... que tu as stocké tes dates dans un champ varchar ....
Sauf que pour stocker des dates en BDD ... il existe des champs de type DATE .... et c'est sur ce type de champ que tu peux trier des dates ......
Je pense, en regardant ton message d'erreur... que tu as stocké tes dates dans un champ varchar ....
Sauf que pour stocker des dates en BDD ... il existe des champs de type DATE .... et c'est sur ce type de champ que tu peux trier des dates ......
t671
Messages postés
1459
Date d'inscription
lundi 25 février 2008
Statut
Membre
Dernière intervention
19 novembre 2024
11
>
jordane45
Messages postés
38308
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
Modifié par t671 le 30/11/2016 à 16:43
Modifié par t671 le 30/11/2016 à 16:43
Effectivement, j'ai stocké mes dates en VARCHAR, car elles peuvent avoir la forme :
JJ janvier AAAA
février AAAA
AAAA
vers AAAA ..............
Et donc, pour les trier, je prends les 4 derniers caractères, soit AAAA.
JJ janvier AAAA
février AAAA
AAAA
vers AAAA ..............
Et donc, pour les trier, je prends les 4 derniers caractères, soit AAAA.
jordane45
Messages postés
38308
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
>
t671
Messages postés
1459
Date d'inscription
lundi 25 février 2008
Statut
Membre
Dernière intervention
19 novembre 2024
Modifié par jordane45 le 30/11/2016 à 17:03
Modifié par jordane45 le 30/11/2016 à 17:03
Les dates se stockent au format DATE dans un CHAMP DATE.
Après... tu peux jouer avec l'AFFICHAGE ... mais la donnée elle est toujours stockée dans le bon format ......
Passer par un varchar est une grosse erreur.....
Après... tu peux jouer avec l'AFFICHAGE ... mais la donnée elle est toujours stockée dans le bon format ......
Passer par un varchar est une grosse erreur.....
t671
Messages postés
1459
Date d'inscription
lundi 25 février 2008
Statut
Membre
Dernière intervention
19 novembre 2024
11
>
jordane45
Messages postés
38308
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
30 nov. 2016 à 17:01
30 nov. 2016 à 17:01
Oui, mais peu importe ! Je fais de toute façon mon test sur un champ. Et je compare ces champs !
jordane45
Messages postés
38308
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
>
t671
Messages postés
1459
Date d'inscription
lundi 25 février 2008
Statut
Membre
Dernière intervention
19 novembre 2024
30 nov. 2016 à 17:04
30 nov. 2016 à 17:04
......
En attendant... si tu veux voir ce qui ne va pas dans ta requête... fais donc un ECHO de celle ci .. puis testes la DIRECTEMENT dans ta BDD (via phpmyadmin par exemple)
En attendant... si tu veux voir ce qui ne va pas dans ta requête... fais donc un ECHO de celle ci .. puis testes la DIRECTEMENT dans ta BDD (via phpmyadmin par exemple)
t671
Messages postés
1459
Date d'inscription
lundi 25 février 2008
Statut
Membre
Dernière intervention
19 novembre 2024
11
30 nov. 2016 à 17:28
30 nov. 2016 à 17:28
Si je fais un "echo $query4", il m'affiche
SELECT id,num_indiv,famille,nom,prenom,date_naissance,date_dc FROM individus WHERE num_indiv = "4792" ORDER BY (SUBSTRING("28 mai 1787", -4)) ASCSELECT id,num_indiv,famille,nom,prenom,date_naissance,date_dc FROM individus WHERE num_indiv = "4795" ORDER BY (SUBSTRING("1782", -4)) ASC
Le premier mariage enregistré dans la base est bien le num_indiv 4792 en 1787.
Le second mariage ajouté dans la base est bien le num_indiv 4795 en 1782.
En résultat je veux afficher celui en 1782 puis en 1787, ce qui n'est pas le cas actuellement !
Si je le test directement via ma BDD il ne reconnait pas $tonarray = array();
SELECT id,num_indiv,famille,nom,prenom,date_naissance,date_dc FROM individus WHERE num_indiv = "4792" ORDER BY (SUBSTRING("28 mai 1787", -4)) ASCSELECT id,num_indiv,famille,nom,prenom,date_naissance,date_dc FROM individus WHERE num_indiv = "4795" ORDER BY (SUBSTRING("1782", -4)) ASC
Le premier mariage enregistré dans la base est bien le num_indiv 4792 en 1787.
Le second mariage ajouté dans la base est bien le num_indiv 4795 en 1782.
En résultat je veux afficher celui en 1782 puis en 1787, ce qui n'est pas le cas actuellement !
Si je le test directement via ma BDD il ne reconnait pas $tonarray = array();
jordane45
Messages postés
38308
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
30 nov. 2016 à 17:31
30 nov. 2016 à 17:31
Si je le test directement via ma BDD il ne reconnait pas $tonarray = array();
.... ce que tu dois tester directement dans phpmyadmin... c'est pas le code PHP ... mais la requête que tu as obtenu en faisant le ECHO ;......
nagaD.scar
Messages postés
4272
Date d'inscription
samedi 8 septembre 2007
Statut
Membre
Dernière intervention
4 janvier 2023
252
30 nov. 2016 à 18:04
30 nov. 2016 à 18:04
je reviens du coup, mais tu veux faire le tri depuis un varchar donc?
Je remets pas en question de ton choix même si je ne suis pas d'accord avec toi mais bref.
en fait j avais pas regardé ton order, tu tries avec une valeur fixe puisque issue de php, et non d une colonne de ta base de donnée.
du coup essaie plutot :
en supposant que date_dc correspond a la date de mariage.
naga
Je remets pas en question de ton choix même si je ne suis pas d'accord avec toi mais bref.
en fait j avais pas regardé ton order, tu tries avec une valeur fixe puisque issue de php, et non d une colonne de ta base de donnée.
du coup essaie plutot :
ORDER BY (SUBSTRING(date_dc, -4) ASC)
en supposant que date_dc correspond a la date de mariage.
naga