Champ formulaire et Requete SQL

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Champ formulaire et Requete SQL

Re: Champ formulaire et Requete SQL

par Zaqen » 15 oct. 2019, 10:03

Bonjour,

Désolé j'étais parti ailleurs.... je m'y remets.
Ok pour la requete, c'est plus clair. Par contre j'ai ces infos sur deux tables, c'est ce qui m'ennui maintenant.

Re: Champ formulaire et Requete SQL

par Ryle » 02 sept. 2019, 12:02

Avec LIKE effectivement !

LIKE 'xxx%' = commence par "xxx"
LIKE '%xxx' = termine par "xxx"
LIKE '%xxx%' = contient "xxx"

Attention toutefois si tu fais des contrôles sur une partie de la valeur. Je ne sais pas comment tes informations sont consignées, mais par exemple si ton code manif est "M200" et que tu fais un like "M2%" tu trouveras bien M200, mais également M20, M27, M203 ... et cela risque peut être de te retourner une information erronée (mais une fois encore tout dépend de ton format de données :))

Re: Champ formulaire et Requete SQL

par Zaqen » 02 sept. 2019, 11:52

Ah ok je vois, merci.
comment puis-je véfier tout ou parti d'une valeur ?
Avec like ?

SELECT COUNT(*) AS resultat
FROM financeur
WHERE codemanif = 'AAA'
AND numerocandidat = 'BBB'
AND codefinanceur = 'CCC'

Re: Champ formulaire et Requete SQL

par Ryle » 02 sept. 2019, 11:39

Il te faut spécifier les valeurs que tu recherches dans ta clause WHERE. Le SQL est un langage relativement simple et s'écrit presque comme on le parle :
Tu as besoin de compter le nombre d'enregistrements
- qui se trouvent dans la table financeur
- pour lesquels le code manif est AAA
- et le code du candidat est BBB
- et le code du financeur est CCC
Reste plus qu'à le coder en SQL :)
SELECT COUNT(*) AS resultat 
FROM financeur
WHERE codemanif = 'AAA'
AND numerocandidat = 'BBB'
AND codefinanceur = 'CCC'
Remplace les AAA, BBB et CCC par les valeurs que tu veux tester :)

S'il y a un résultat au moins pour cette combinaison, ta requête retournera le nombre. Sinon elle indiquera 0 (et tu pourras enregistrer ton financement)

Re: Champ formulaire et Requete SQL

par Zaqen » 02 sept. 2019, 09:17

Bonjour Ryle,

Merci pour ta réponse.
comment puis-je faire pour tester la requête dans phpmyadmin par exemple via le module sql.
J'ai testé ça mais je n'ai pas de retour
SELECT COUNT(*) AS resultat
FROM financeur
WHERE codemanif
AND numerocandidat
AND codefinanceur ;

Re: Champ formulaire et Requete SQL

par Ryle » 30 août 2019, 17:16

Ok, donc si je comprends bien :
- les candidats ont un id unique qui est dans la colonne numerofinanceur de ta table candidat, (il aurait peut être mieux valu l'appeler codecandidat pour être cohérent)
- les manif ont un id unique qui est dans la colonne codemanif de ta table manifestation
- le financeur à un code et fait le lien entre tout ça, dans la table financeur

Donc si un financeur (codefinanceur), finance un candidat (numerofinanceur) pour une manifestation (codemanif), on va retrouver un enregistrement avec ces 3 informations dans ta table financeur. Du coup pour savoir si un financeur finance déjà un candidat pour une manifestation donnée, il te faut effectivement un formulaire dans lequel tu vas récupérer ces 3 informations ou moins si tu connais déjà le code financeur à l'avance parce qu'on est sur sa fiche par exemple).

Si on combine ça avec la requête précédente :
$sql = " SELECT COUNT(*) AS resultat 
  FROM financeur
  WHERE codemanif = " . $codeManif . "
  AND numerocandidat = " . $codeCandidat . "
  AND codefinanceur = " . $codeFinanceur;
En supposant que tous tes codes sont des nombres (sinon il faut des apostrophes autour des valeurs) et que $codeManif contient le code de la manif sélectionné par l'utilisateur, $codeCandidat le numéro du candidat et $codeFinanceur l'identifiant du financeur.

Lorsque tu exécutes cette requête, le résultat est un nombre, s'il vaut 0 c'est que le financeur ne finance par l'utilisateur pour cette manifestation, s'il est de 1 c'est qu'il le finance déjà (et s'il est supérieur à 1, c'est qu'il y a eu une erreur quelque part et que ton financeur finance plusieurs fois le même candidat pour la même manifestation ;))

Re: Champ formulaire et Requete SQL

par Zaqen » 30 août 2019, 12:20

C'est sympa.

Alors j'ai une table candidat, une table financeur, une table manifestation


détail des colonnes de ma table candidat :
numerofinanceur varchar(20) utf8_bin
nomc varchar(20) utf8_bin
adresse (idem)
codepostal (idem)
telephone (idem)
email (idem)

détail des colonnes de ma table financeur
numerofinanceur varchar(20) utf8_bin
codemanif varchar(20) utf8_bin
codefinanceur varchar(20) utf8_bin
nom (idem)
adresse (idem)
codepostal (idem)
telephone (idem)
email (idem)

détail des colonnes de ma table manifestation

codemanif varchar(20) utf8_bin
libellemanif varchar(20) utf8_bin

ce sont des tables importées depuis un outils qui ma converti les tables access vers mysql


J'ai un formulaire qui fonctionne ou l'on saisi les informations d'un financeur qui m'alimente ma table financeur
ça marche bien, j'aimerai mettre un champ de saisie d'un nom de candidat et que ça me controle si le candidat pour
la manifestation (x) est déjà associé à un financeur.

J'espère que vous pourrez m'aider

Re: Champ formulaire et Requete SQL

par Ryle » 29 août 2019, 11:32

Donne nous le détail de la table dans laquelle du stockes l'information permettant de savoir qu'un financeur finance un candidat (les colonnes et leur type), on pourra plus facilement t'aider :)

Re: Champ formulaire et Requete SQL

par Zaqen » 28 août 2019, 16:18

Bon et bien je n'y arrive pas...
Je tourne en rond...
Je cherche...

Re: Champ formulaire et Requete SQL

par Zaqen » 28 août 2019, 12:07

Ryle, Merci, je teste ça tout de suite en adaptant.
;-)

Re: Champ formulaire et Requete SQL

par Ryle » 28 août 2019, 11:55

Les informations demandées étaient pour rendre la chose plus simple à comprendre en fonction des tables et des colonnes que tu utilises, mais tant pis, allons y comme ça :)

Voici la requête à utiliser à compléter comme tu peux avec les informations manquantes :
SELECT COUNT(*) AS resultat 
  FROM jeNeSaisPasDansQuelleTableEstLInformationNiSIlFautFaireDesJointuresAvecDAutresTables 
  WHERE LaChampDeLaManifestation = 'LaManifestation'
  AND LeChampDuCandidat = 'LeCandidat' 
  AND LeChampDuFinanceur = 'LeFinanceur'
Si "resultat" contient 1 ou plus, c'est que ton financeur est déjà associé à ton candidat pour cette manifestation.

Re: Champ formulaire et Requete SQL

par Zaqen » 28 août 2019, 10:33

Bonjour,

Ma question était sur la construction de la requete... pas sur une éventuelle table manquante... ;-)
Je continue à chercher

Re: Champ formulaire et Requete SQL

par Ryle » 27 août 2019, 14:21

Hello !

Tu annonces 4 tables, mais moi je n'en compte que 3 ;)
Où se fait le lien entre le candidat et le financeur (et la manifestation) ? est-ce la 4e table ?
Dans ce cas il te suffit d'interroger celle-ci pour rechercher s'il existe un enregistrement correspondant à ton candidat et à ton financeur. S'il y en a un (ou plus mais ça ne devrait pas être le cas) c'est que ton association financeur/candidat existe déjà :)

Champ formulaire et Requete SQL

par Zaqen » 26 août 2019, 16:24

Bonjour,

Je travaille sur une petite application que je passe en php et qui tournait sur access. Elle permet de gérer des candidats et des financeur pour une manifestation définie.

Il y'à une chose que j'aimerai bien faire, mais je ne suis pas assez fort pour le réaliser.

J'ai une base mysql avec 4 tables

1 table manifestation
1 table candidat
1 table financeur

un financeur ne peut pas avoir plus d'un candidat à financer pour une manifestation donné

Comment faire pour construire la requete SQL qui va aller vérifier si mon Financeur (F) n'est pas déjà associé à un candidat (C) pour une manifestation (M)

je ne vois pas.