Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3046 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Formulaire et bases de données

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Formulaire et bases de données

n°1970768
chamallowe​tte
Posté le 03-03-2010 à 08:48:51  profilanswer
 

Bonjour,  
 
Dans le cadre d'un stage en entreprise, je souhaiterais créer une interface de "Recherche automatique" qui fonctionnerait sur ce principe :  
L'outil de recherche automatique propose une ou plusieurs solutions à l'utilisateur, en fonction des critères qu'il lui aura renseigné.  
L'utilisateur choisit ses critères via plusieurs menus déroulants (sous forme de formulaire html).  
 
Plus conctrètement :  
 
L'utilisateur (ou client) souhaiterais commander un système à l'entreprise, qui en possède de nombreux (adaptés à telle ou telle situation). Pour l'aider à faire son choix, et afin qu'il n'ait pas besoin d'éplucher le catalogue en détail, l'entreprise proposerait un outil de recherche automatique (sur son site web). Le formulaire comporterait les champs suivants :  
- Type de machine (choix possibles : A22, H11, B15, etc...)  
- Vitesse d'utilisation (choix possibles : <100 m/mn, <300 m/mn ou >300 m/mn)  
- Domaine d'application (choix possibles : emballage carton, emballage bois, etc...)  
- Type de système (choix possibles : statique ou dynamique)  
- Système dépendant du sens de rotation? (choix possibles : oui ou non)  
 
L'utilisateur n'étant pas obligé de sélectionner un choix pour chaque champs du formulaire.  
Une fois qu'il a fait son choix, il clique sur le bouton "Rechercher" et devrait atterir sur une page lui donnant le ou les noms de systèmes qui conviennent à son besoion.  
C'est la partie que je ne sais pas réaliser (le formulaire html étant déjà créé).  
Ayant quelques vagues notions en BDD, je me doute qu'elles seront nécessaire pour rendre mon formulaire viable, mais je ne vois même pas comment partir... Quelles tables créer? Avec quelles entités? Comment lier tout ça?...etc.  
 
J'espère que quelqu'un pourra m'aider, c'est très important que je réussisse à réaliser ce formulaire, étant donné que l'idée parraît très intéressante à l'entreprise.  
 
Merci d'avance! :-)
 

mood
Publicité
Posté le 03-03-2010 à 08:48:51  profilanswer
 

n°1970774
rufo
Pas me confondre avec Lycos!
Posté le 03-03-2010 à 09:27:35  profilanswer
 

Faut que tu modélises ton processus (commandes, devis, facturation...) + les produits qui vont être proposés. Le nb de tables et leur contenu va grandement dépendre de la finesse de modélisation de tout ça (par ex, tu veux peut-être simplement permettre de créer une commande mais après, c'est un autre outil qui va gérer la facturation).
 
Tu peux regarder un peu le soft Astres (cf ma signature) : il est écrit en php/html/javascript/css (donc les technos dont tu auras besoin) + une BD de 66 tables (c'est pas énorme). Dans ce soft, y'a plusieurs moteurs de recherche multi-critères (c'est le nom qu'on donne à ce que tu veux faire), du plus simple (ex : celui des news) au plus compliqué (ex : celui des demandes de travaux).
 
Maintenant, si c'est pour faire de la vente en ligne, pas la peine de réinventer la roue : regardes le produit GPL Magento ;) Il permet de modéliser n'importe quel produit, d'organiser un catalogue, d'avoir un moteur de recherche comme tu le veux et permet, of course, de faire de la vente et suivre tout le processus de vente...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°1970778
chamallowe​tte
Posté le 03-03-2010 à 09:51:45  profilanswer
 

Avant tout, merci pour ta réponse.
 
Je me suis certainement mal exprimée, mais en fait il n'est pas question de vente/commande en ligne. L'outil servirait au client uniquement pour l'aider à choisir son système en lui proposant une ou plusieurs possibilités correspondant à son besoin. La démarche de commande sera a effectuer par le client comme il le fait actuellement.
 
Dans ce cas, comment faut-il que je procède?
Je dois créer une table produit comportant les différents critères ou bien une table par critères ou bien d'autres tables? Et que dois-je faire ensuite?

n°1970793
rufo
Pas me confondre avec Lycos!
Posté le 03-03-2010 à 10:38:01  profilanswer
 

Donc t'as pas la partie commande, donc pas de Magento. Mais tout le reste que je t'ai dit reste bon. Faut modéliser ton catalogue de produits -> faire le MCD (modèle conceptuel de données). Pour ça, regardes la méthode Merise (ça pourra t'aider), mais si t'es pas familier des BD, tu as de grandes chances de te planter :/ Tu peux regarder quand même comment Magento a fait (principe d'entités et d'attributs de différents types). Tu peux regarder aussi la partie des champs personnalisés dans mon soft Astres, largement inspiré de celui du logiciel Mantis.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°1972481
chamallowe​tte
Posté le 10-03-2010 à 09:15:33  profilanswer
 

Je dois décidément être au niveau zéro en base de donnée, tout cela me semble être du charabia...! :-/
 
Peut-être que quelqu'un pourra m'aider plus précisément si je vous donne le code de mon formulaire...
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
   <head>
       <title>Les systèmes de dévidage</title>
       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
       <link rel="stylesheet" media="screen" type="text/css" title="css" href="css3.css" />
   </head>
   <body>
 
<div id="en_tete">
   <p>
   <img src="bannieregde.png" alt="Bannière cfl" />
</p>
 
 
</div>
 
<div id="menu">
 
   <div class="element_menu">
       <h3>Retour accueil</h3>
       <ul>
           <li><a href="page1menu.html">Lien</a></li>
           
       </ul>
   </div>
 
   <div class="element_menu">
       <h3>Catalogue d'informations</h3>
       <ul>
           <li><a href="page2.html">Lien</a></li>
           
       </ul>
   </div>
 
   <div class="element_menu">
       <h3>Outil de recherche</h3>
       <ul>
           <li><a href="page3.html">Lien</a></li>
         
       </ul>
   </div>
</div>
 
<div id="corps">        
 
 
<h2>Vous souhaitez trouver le système de dévidage qui correspond à vos besoins ?<br/></h1>
       <h4><em>Veuillez sélectionner un critère parmis les menus déroulant suivants, puis cliquez sur "soumettre la requête"</em><br/><br/><br/></h1>
<form method="post" action="traitement.php">
   <p>
       <label for="conditionnement">Type de conditionnement ?</label><br />
       <select name="conditionnement" id="conditionnement">
               <option value="non">Non défini</option>
           <optgroup label="Bobines plastique">
               <option value="25LBS">25LBS</option>
               <option value="10LBS">10LBS</option>
               <option value="5LBS">5LBS</option>
               <option value="AM20">AM20</option>
               <option value="AM5">AM5</option>
               <option value="B15">B15</option>
               <option value="B20">B20</option>
               <option value="B3">B3</option>
               <option value="B6">B6</option>
               <option value="B30">B30</option>
               <option value="BB20">BB20</option>
               <option value="BB35">BB35</option>
               <option value="BB40">BB40</option>
               <option value="BP3">BP3</option>
               <option value="BP4">BP4</option>
               <option value="BP50">BP50</option>
               <option value="BS15">BS15</option>
               <option value="BS60">BS60</option>
               <option value="E200">E200</option>
               <option value="E400">E400</option>
               <option value="EG30">EG30</option>
               <option value="FT60">FT60</option>
               <option value="GB2">GB2</option>
               <option value="J55">J55</option>
               <option value="K355">K355</option>
               <option value="M70P">M70P</option>
           </optgroup>
           <optgroup label="Bobines bois">
               <option value="B100">B100</option>
               <option value="B150">B150</option>
               <option value="B300">B300</option>
               <option value="B301">B301</option>
               <option value="B500">B500</option>
               <option value="B510">B510</option>
               <option value="MJ100">MJ100</option>
               <option value="MP100">MP100</option>
               <option value="MP50">MP50</option>
               <option value="MP110">MP110</option>
               <option value="MP120">MP120</option>
               <option value="MP90">MP90</option>
               <option value="MR100">MR100</option>
           </optgroup>
           <optgroup label="Futs carton">
               <option value="C780">C780</option>
               <option value="P500">P500</option>
               <option value="PPH760">PPH760</option>
               <option value="P1537">P1537</option>
               <option value="P604">P604</option>
               <option value="P608">P608</option>
           </optgroup>
           <optgroup label="Tourets bois">
               <option value="R250">R250</option>
               <option value="R260">R260</option>
               <option value="R400">R400</option>
               <option value="R500">R500</option>
               <option value="R510">R510</option>
               <option value="R700">R700</option>
               <option value="R709">R709</option>
               <option value="RM700">RM700</option>
               <option value="RP300">RP300</option>
               <option value="RP250">RP250</option>
               <option value="RP560">RP560</option>
               <option value="SIG">SIG</option>
           </optgroup>
           <optgroup label="Tourets bois (bande collée)">
               <option value="T09">T09</option>
               <option value="T13">T13</option>
               <option value="T15">T15</option>
               <option value="T17">T17</option>
               <option value="TD09">TD09</option>
               <option value="TD08">TD08</option>
               <option value="Z400">Z400</option>
               <option value="Z6495">Z6495</option>
               <option value="Z7770">Z7770</option>
           </optgroup>
       </select>
   </p>
   <p>
       <label for="utilisation">Type d'utilisation ?</label><br />
       <select name="utilisation" id="utilisation">
               <option value="non">Non défini</option>
           <optgroup label="Utilisations">
               <option value="Brochage">Brochage</option>
               <option value="Cerclage">Cerclage</option>
               <option value="Emballage bois">Emballage bois</option>
               <option value="Emballage carton">Emballage carton</option>
               <option value="Agrafe (fil plat)">Agrafe (fil plat)</option>
               <option value="Agrafe (fil rond)">Agrafe (fil rond)</option>
               <option value="Soudure">Soudure</option>
               <option value="Trombone">Trombone</option>
               <option value="Rayon">Rayon</option>
               <option value="Armature (cable)">Armature (cable)</option>
               <option value="Armature (gaine)">Armature (gaine)</option>
               <option value="Armature (tuyau)">Armature (tuyau)</option>
               <option value="Ressort">Ressort</option>
               <option value="Liens">Liens</option>
               <option value="Façonage">Façonage</option>
               <option value="Brosse">Brosse</option>
               <option value="Grillage">Grillage</option>
               <option value="Crochet">Crochet</option>
               <option value="Chaîne">Chaîne</option>
               <option value="Fibre">Fibre</option>
               <option value="Reliure">Reliure</option>
               <option value="Rivet">Rivet</option>
               <option value="Epingle">Epingle</option>
               <option value="Cintre">Cintre</option>
               <option value="Autre">Autre</option>
           </optgroup>
       </select>
   </p>
   <p>
       <label for="devidage">Type de dévidage ?</label><br />
       <select name="devidage" id="devidage">
               <option value="non">Non défini</option>
           <optgroup label="Devidage">
               <option value="Statique">Statique</option>
               <option value="Dynamique">Dynamique</option>
           </optgroup>
       </select>
   </p>
   <p>
       <label for="vitesse">Vitesse de dévidage ?</label><br />
       <select name="vitesse" id="vitesse">
               <option value="non">Non défini</option>
           <optgroup label="Vitesse">
               <option value="<100m/min"><100m/min</option>
               <option value="<300m/min"><300m/min</option>
               <option value=">300m/min">>300m/min</option>
           </optgroup>
       </select>
   </p>
   <p>
       <label for="sens">Système dépendant du sens de rotation ?</label><br />
       <select name="sens" id="sens">
               <option value="non">Non défini</option>
               <option value="Oui">Oui</option>
               <option value="Non">Non</option>
           </optgroup>
       </select>
   </p>
   <p>
       <label for="pac">Possibilité de dévider "par à-coup" ?</label><br />
       <select name="pac" id="pac">
               <option value="non">Non défini</option>
               <option value="Oui">Oui</option>
               <option value="Non">Non</option>
           </optgroup>
       </select>
   </p>
   <p>
       <label for="sag">Possibilité de dévider en "stop and go" ?</label><br />
       <select name="sag" id="sag">
               <option value="non">Non défini</option>
               <option value="Oui">Oui</option>
               <option value="Non">Non</option>
           </optgroup>
       </select>
   </p>
 
   <p>
       <br/><br/><input type="submit" /> <input type="reset" />
   </p>
 
</form>
</div>
    </body>
</html>
 
 
Je suis certaine qu'il y avait beaucoup plus simple, mais c'est mon premier code html alors j'ai fait au mieux... En tout cas ça semble correspondre à ce que je veux.
C'est la partie qui consiste à le rendre viable qui me pose problème.
J'aimerais qu'en cliquant sur "soumettre la requete", l'utilisateur arrive sur une page où on lui propose les différents systèmes qui correspondent à tous les critères qu'il aura renseigné dans le formulaire.
 
En espérant pouvoir bénéficier d'une aide précise (en commençant depuis le tout début)...
 
Merci de vous intéresser à mon problème!

n°1972507
rufo
Pas me confondre avec Lycos!
Posté le 10-03-2010 à 09:58:00  profilanswer
 

Vaut mieux que tu donnes le code php qui génère ta page web, le code html nous sert à rien. Et c'est pas la peine de commencer à coder quoi que ce soit si t'as pas modélisé ta BD. Si les notions de MCD ou MLD te disent rien, oui, t'es au niveau 0 et il faudra t'y mettre un minium (pas la peine forcément d'apprendre Merise ou ce qu'est la forme 3NF). :/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°1972524
chamallowe​tte
Posté le 10-03-2010 à 10:21:09  profilanswer
 

Justement, je n'ai pas de code php, c'est bien là le problème ! J'ai codé ma page en html et avec du css. Mais pas de php.
Apparament je n'aurais pas du commencer comme ça... Je crois que je suis mal partie pour aboutir à quelque chose... :-(
 
Sinon, je n'ai pas non plus le niveau 0, j'ai commencé le cours de BDD avant mon stage mais je sais simplement écrire le MCD et MLD pour un exemple simple, mais dans le cas de mon projet, je n'y arrive pas...

n°1972597
rufo
Pas me confondre avec Lycos!
Posté le 10-03-2010 à 11:30:43  profilanswer
 

Clair, t'as apparemment tout à refaire :/
1) analyser les données à gérer et voir les relations entre elles
2) faire le MCD et le faire valider (prendre des ex concrets du plus simple au plus complexe avec des personnes qui sont dans la boîte depuis longtemps et ont de l'expérience)
3) implémenter dans un SGBD (si t'es en php, Mysql est un bon choix) ton MCD
4) définir la logique métier (les process = enchaînement de tâches/actions) et les faire valider
5) définir la charte graphique et la faire valider
6) implémenter les process en PHP/XHTML/CSS et faire tester régulièrement par un ou plusieurs futurs utilisateurs
7) rajouter du javascript non intrusif pour améliorer l'ergonomie de l'IHM
 
Tout au long de ce travail, rédiger les docs (Dossier de spécs, dossier de conception, MUT, manuel d'exploitation, dossier de tests...).


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°1974899
chamallowe​tte
Posté le 18-03-2010 à 14:06:41  profilanswer
 

Je relance le sujet car j'ai essayé d'avancer mais je suis toujours bloquée...
 
Je pensais avoir trouvé la solution en créant une unique table "système" comportant un champ "id" et un champ "nom", ainsi que des champs correspondant aux critères du formulaire et en écrivant ma requête ainsi :
 

Citation :

<?php
mysql_query('SELECT *  
FROM systeme  
WHERE machine="' . $_POST['type_machine'] . '"
AND vitesse="' . $_POST['vitesse'] . '"
AND application="' . $_POST['type'] . '"
AND type="' . $_POST['type_systeme'] . '"
AND sensrotation="' . $_POST['dependant_sens'] . '"');


 
Le problème, c'est que les champs "type de machine" et "domaine d'application" peuvent comporter plusieurs entrées pour un même système... C'est-à-dire qu'un même système peut être addapté sur plusieurs machines et peut être utilisé pour plusieurs applications. Comment l'écrire dans ma base de donnée? Je pourrais faire comme ça :  
 
Id | Nom | Machine | Vitesse | Application | Type | SensRotation
1  | Système A | H11 | 300 m/min | emballage carton | statique | Non
2  | Système A | B16 | 300 m/min | emballage carton | statique | Non
3  | Système A | H11 | 300 m/min | emballage bois     | statique | Non
4  | Système A | H11 | 300 m/min | rayonnage            | statique | Non
etc...
Et vu le nombre de systèmes de que je dois classer, je n'aurais pas fini...!
 
Alors j'ai pensé créer plusieurs tables : "machine", "application" et "système".
 
Le MLD donnerait :
 
Machine (Id, Nom)
Application (Id, Nom)
Système (Id, Nom, Vitesse, Type, SensRotation)
 
Or, mes 2 cardinalités sont "n vers n", je dois donc créer 2 nouvelles tables :
 
Convient (id_application, id_machine, nombre_application)
Nécessite (id_conditionnement, id_système, nombre_système)
 
 
Pensez-vous que je devrais plutôt continuer comme ça, ou bien créer une unique table "système" ?
 
Ensuite, si je garde les tables que j'ai trouvé à partir du MLD, comment rentrer tout ça dans Phpmyadmin? Pour les tables "machine", "application" et "système", pas de problème, mais pour les 2 autres :  
Faut-il que je les créé manuellement aussi?  
Et au niveau syntaxe, comment dois-je écrire les clés étrangères?  
Et comment déterminer 2 clés primaires? (le logiciel n'en prend qu'une seule)
 
 
Merci d'avance, j'ai vraiment besoin de votre aide, je dois programmer ça pour demain...!  :sarcastic:

n°1974916
rufo
Pas me confondre avec Lycos!
Posté le 18-03-2010 à 14:41:19  profilanswer
 

les relations n-n, on y trouve comme clé primaire la "concaténation" des 2 clés étrangères (les id) + éventuellement des champs complémentaires. Je vois donc pas pourquoi tu as le champ "nombre_xxx".


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
mood
Publicité
Posté le 18-03-2010 à 14:41:19  profilanswer
 

n°1974933
chamallowe​tte
Posté le 18-03-2010 à 15:15:21  profilanswer
 

J'étais persuadée qu'il fallait ajouter également un attribut supplémentaire faisant le lien entre les deux, autant pour moi!
 
Et quant au reste, qu'en penses-tu ? J'ai eu raison de créer ces 3 tables ou est-ce que j'aurais pu créer une seule table "système" ?
 
Et saurais-tu répondre à mes questions concernant le passage du MLD à la création des tables sur phpmyadmin (syntaxe, création des deux nouvelles tables...)
 
Merci! :-)

n°1974953
rufo
Pas me confondre avec Lycos!
Posté le 18-03-2010 à 16:03:45  profilanswer
 

Ben le lien, c'est justement avec les clés étrangères. Si tu donnes l'id de la machine, tu vas trouver dans la table "Convient" tous les id d'applications associés à la machine.
 
Pour rappel, dans une structure de BD, il faut éviter la duplication d'une même info. Si on la trouve dans plusieurs tables, c'est quelle doit très probablement faire elle-même l'objet d'une table à part entière (ex avec l'application ou le conditionnement). S'il y a des relations n-n, là aussi, faut une table par relation.
 
Pour phpmyadmin, faut tout créer à la mano. Pour la clé primaire sur 2 champs, tu vas dans l'onglet "structure" de la table et dans la partie (vers le bas) "index", tu mets 2 dans le champ "Créer une clef sur" puis cliquer sur exécuter. Là, tu sélectionnes les 2 champs. La clé primaire s'appelle alors forcément PRIMARY. L'autre solution (c'est ce que je fais pas je suis pas sûr que ça soit top), c'est de créer une clé primaire "bidon" en auto_incrémenté et déclarer un index sur chaque clé étrangère.
 
Si t'es en myisam (le plus probable), la notion de clé étrangère n'existe pas, pas plus que les relations entre les tables. Moi, les clés étrangères, je les mets à la fin de la table avec un index (si c'est pertinent) et je les nomme de la même manière que dans la table où elles sont définies comme clé primaire.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°1975849
chamallowe​tte
Posté le 22-03-2010 à 08:43:18  profilanswer
 

Bonjour,
 
Ma dernière semaine de stage étant déjà entamée, je sollicite à nouveau l'aide de toute personne qui voudra bien m'en apporter... Dans l'idéal, il faudrait que j'aie terminé la programmation de l'outil de recherche demain soir...
 
Rappel :
J'ai créé ma base de données, que j'ai appelé "systemes_devidage", dans laquelle j'ai créé 3 tables : "systeme", "conditionnement", "application" ainsi que 2 tables provenant de mes deux cardinalités "n vers n" : "convient" et "nécessite".
 
Le MLD ressemble à ça :
 
Machine (Id, Nom)  
Application (Id, Nom)  
Système (Id, Nom, Vitesse, Type, SensRotation)  
Convient (id_application, id_conditionnement)  
Nécessite (id_conditionnement, id_système)  
 
Je souhaiterais relier ma base de donnée à un formulaire de recherche, de sorte que suivant les critères renseignés dans le formulaire (menus déroulants), l'utilisateur trouve les systèmes correspondant à son besoin.
 
Etant étudiante en école d'ingénieur, j'ai également sollicité l'aide d'un de mes professeur (de base de données), qui m'a répondu cela :
 
Vous devez joindre les tables :
1. Listez les tables requises dans la clause FROM
2. Indiquez les critères de jointure dans la clause WHERE
 
au lieu de faire
 
SELECT nom
FROM systeme
WHERE ...
 
faites
 
SELECT nom
FROM systeme, necessite, conditionnement, convient, application
WHERE systeme.id = necessite.id_systeme
 AND necessite.id_conditionnement = conditionnement.id
 AND conditionnement.id = convient.id_conditionnement
 AND application.id = convient.id_application
 AND ...
 
Ensuite, il reste à revoir les critères "conditionnement" et
"application". Je vous conseille de faire des selecteurs HTML, que vous
générerez à l'aide d'un simple "select id, nom from conditionnement" :
 
<select name="id_conditionnement">
 <option value="1">Nom du conditionnement 1</option>
 <option value="2">Nom du conditionnement 2</option>
 <option value="3">Nom du conditionnement 3</option>
 ...
</select>
 
Vous aurez alors $_POST['id_conditionnement'] au lieu de
$_POST['conditionnement']
 
Même chose pour "application".
 
Du coup vous n'aurez plus besoin des tables "conditionnement" et
"application" dans la requete de recherche :
 
SELECT nom
FROM systeme, necessite, convient
WHERE systeme.id = necessite.id_systeme
 AND necessite.id_conditionnement = convient.id_conditionnement
 AND necessite.id_systeme = $_POST['id_systeme']
 AND convient.id_conditionnement = $_POST['id_conditionnement']
 AND ...

 
Mais j'avoue ne pas comprendre grand chose...
A quoi cela sert-il concrètement d'utiliser des sélecteurs html? Et où dois-je les écrire, dans la page html du formulaire ou dans la page php? Parmis tout ça, qu'est-ce que je dois écrire, concrètement?
 
Merci de bien vouloir m'aider à déchiffrer tout ça...et me donner votre avis, peut-être y a-t-il plus simple...?
 
Merci d'avance!  :)

n°1975868
rufo
Pas me confondre avec Lycos!
Posté le 22-03-2010 à 10:09:50  profilanswer
 

Pourtant, ton prof a été sympa car il t'a presque tout mâché le boulot. Juste un reproche pour les équi-jointures que lui fait dans le WHERE alors que c'est mieux d'utiliser INNER JOIN dans la clause FROM.
 
Les champs dans l'IHM du moteur de recherche prennent "la forme" de leur modélisation dans la BD :
- un champ texte libre dans une table de la BD va généralement se traduire par un input type text dans l'IHM. Un champ dont les valeurs proviendraient d'une liste de valeurs finies (un enum ou une clé étrangère pointant sur une table) va se traduire plutôt par une liste déroulante. Des champs de type oui/non par des boutons radio.
Ex :  
tu recherches sur le nom d'un client -> champ texte
tu recherches sur le type de conditionnement d'une machine -> liste déroulante
 
Pour la construction de la requête SQL, tu peux regarder le code source de mon appli Astres (cf ma signature) : y'a plusieurs ex de moteurs de recherche, du plus simple (recherche d'appels constructeurs) au plus compliqué (recherche de demandes de travaux).
 
Maintenant, tu dis que t'es en école d'ingé : école d'informatique? Et en quelle année? Parce que ça me fait un peu peur que tu sois pas capable de 'en sortir avec ce que t'as dit ton prof :/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°1975903
chamallowe​tte
Posté le 22-03-2010 à 12:01:54  profilanswer
 

rufo a écrit :

Maintenant, tu dis que t'es en école d'ingé : école d'informatique? Et en quelle année? Parce que ça me fait un peu peur que tu sois pas capable de 'en sortir avec ce que t'as dit ton prof :/


 
Non, heureusement pour moi, je suis dans le domaine de la conception mécanique (première année)...^^
On a fait très peu d'info jusqu'à présent, juste la base en langage C et la base en BDD...voilà aussi pourquoi mon prof m'a autant mâché le travail!
 
La majeur partie de mon stage est dans la mécanique, mais j'ai ce petit outil qui nécessite des connaîssances en informatique que je n'ai pas (j'ai appris exprès pour ça le langage html et les base du php...d'où mes déboires actuelles... :)  
 
Merci pour tes infos complémentaire, je vais voir ce que je peux faire...


Message édité par chamallowette le 22-03-2010 à 12:03:22
n°1976200
chamallowe​tte
Posté le 23-03-2010 à 10:29:24  profilanswer
 

Si j'ai bien compris :
 
- J'ai modifié la page de code de mon formulaire initial comme cela :
 

Citation :

  <p>
       <label for="conditionnement">Type de conditionnement ?</label><br />
       <select name="id_conditionnement">
               <option value="non">Non défini</option>
           <optgroup label="Bobines plastique">
               <option value="2">25 LBS</option>
               <option value="1">10 LBS</option>
               <option value="4">AM 20</option>
               <option value="5">B3</option>
               <option value="6">B6</option>
               <option value="11">BB 20</option>
               <option value="12">BB 35</option>
               <option value="13">BB 40</option>
               <option value="17">BP 3</option>
               <option value="18">BP 4</option>
               <option value="19">BP 50</option>
               <option value="20">BS 15</option>
               <option value="21">BS 60</option>
               <option value="23">E 200</option>
               <option value="24">EG 30</option>
               <option value="25">FT 60</option>
               <option value="26">GB 2</option>
               <option value="27">J 55</option>
               <option value="28">K 355</option>
           </optgroup>
           <optgroup label="Bobines bois">
               <option value="7">B 150</option>
               <option value="8">B 300</option>
               <option value="31">MP 100</option>
               <option value="32">MP 100K</option>
               <option value="29">MP 50</option>
               <option value="33">MP 110C</option>
               <option value="34">MP 120K</option>
               <option value="30">MP 90</option>
           </optgroup>
           <optgroup label="Futs carton">
               <option value="22">C780</option>
               <option value="35">P500</option>
               <option value="39">PPH760</option>
               <option value="36">P1537</option>
               <option value="37">P604</option>
               <option value="38">P608</option>
           </optgroup>
           <optgroup label="Tourets bois">
               <option value="40">R 260</option>
               <option value="41">R 400</option>
               <option value="42">R 500</option>
               <option value="43">R 700</option>
               <option value="10">B-SIG</option>
           </optgroup>
           <optgroup label="Tourets bois (bande collée)">
               <option value="46">T09</option>
               <option value="47">T13</option>
               <option value="48">T15</option>
               <option value="49">T17</option>
               <option value="51">TD09</option>
               <option value="50">TD08</option>
               <option value="52">Z400</option>
               <option value="53">Z6495</option>
           </optgroup>
       </select>
   </p>
   <p>
       <label for="application">Type d'application ?</label><br />
       <select name="id_application">
               <option value="non">Non défini</option>
           <optgroup label="Applications">
               <option value="1">Brochage</option>
               <option value="2">Cerclage</option>
               <option value="3">Emballage bois</option>
               <option value="4">emballage carton</option>
               <option value="5t">agrafe fil plat</option>
               <option value="6">Agrafe fil rond</option>
               <option value="7">Soudure</option>
               <option value="8">Trombone</option>
               <option value="9">Rayon</option>
               <option value="10">Armature cable</option>
               <option value="11">Armature gaine</option>
               <option value="12">Armature tuyau</option>
               <option value="13">Armature divers</option>
               <option value="14">Ressort</option>
               <option value="15">Liens</option>
               <option value="16">Façonage</option>
               <option value="17">Brosse</option>
               <option value="18">Grillage</option>
               <option value="19">Crochet</option>
               <option value="20">Chaîne</option>
               <option value="21">Reliure</option>
               <option value="22">Rivet</option>
               <option value="23">Epingle</option>
               <option value="24">Cintre</option>
               <option value="25">Sommier</option>
               <option value="26">Autre</option>
           </optgroup>
       </select>


   </p>
 
- J'ai tenté d'écrire ma page de code pour le traitement du formulaire :
 

Citation :

<?php
try
{
 $bdd = new PDO('mysql:host=localhost;dbname=systemes_devidage', 'root', '');
}
catch(Exception $e)
{
        die('Erreur : '.$e->getMessage());
}
 
if (isset($_POST['id_conditionnement']))
{
 
$reponse = $bdd->query('SELECT nom  
FROM systeme, necessite, convient  
WHERE systeme.id = necessite.id_systeme  
 AND necessite.id_conditionnement = convient.id_conditionnement  
 AND convient.id_conditionnement ="' . $_POST['id_conditionnement'] . '"
 AND convient.id_application ="' . $_POST['id_application'] . '"
 AND type="' . $_POST['type'] . '"
 AND vitesse="' . $_POST['vitesse'] . '"
 AND sens="' . $_POST['sens'] . '"
 AND pac="' . $_POST['pac'] . '"
 AND sag="' . $_POST['sag'] . '"
')or die(print_r($bdd->errorInfo()));
 
die(var_dump($reponse));
 
while ($donnees = $reponse->fetch())
{
echo $reponse['nom'] . '<br/>';
}
 
 
$reponse->closeCursor();
}
?>


 
- J'ai testé en choisissant des critères dans les menus déroulants puis j'ai cliqué sur "rechercher" afin de voir si -par miracle- le code fonctionnait, et voilà le message d'erreur :
 

Citation :

object(PDOStatement)#2 (1) { ["queryString"]=> string(315) "SELECT nom FROM systeme, necessite, convient WHERE systeme.id = necessite.id_systeme AND necessite.id_conditionnement = convient.id_conditionnement AND convient.id_conditionnement ="non" AND convient.id_application ="non" AND type="non" AND vitesse="non" AND sens="0" AND pac="0" AND sag="0" " }


 
Si je l'ai bien compris, ça semble normal puisque dans mon formulaire, j'ai ajouté la possibilité de laisser un champ "Non défini", que j'ai appelé "non".  
 
Voilà ma question : comment prendre en compte le fait que l'utilisateur ne soit pas obligé de sélectionner un critère pour chaque champ ? (la valeur initiale de chaque champ est "Non défini" ).  
 
Merci d'avance...  :)

n°1976205
rufo
Pas me confondre avec Lycos!
Posté le 23-03-2010 à 10:35:02  profilanswer
 

Regardes le fichier /Astres/AowFollow/SearchConstructorCall.php de mon appli Astres. T'as toutes les réponses. En gros, faut juste faire un test si le champ est vide ou, pour une liste déroulante, que la valeur est 0 (ou vide).
 
ps : j'espère que le contenu de tes listes déroulantes est généré automatiquement via une boucle php qui prend les valeurs dans les tables de ta BD? T'as pas fait du code html statique, rassures-moi?


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°1976217
chamallowe​tte
Posté le 23-03-2010 à 10:45:59  profilanswer
 

rufo a écrit :

ps : j'espère que le contenu de tes listes déroulantes est généré automatiquement via une boucle php qui prend les valeurs dans les tables de ta BD? T'as pas fait du code html statique, rassures-moi?


 
J'ai bien peur que si... Le truc c'est que j'ai appris avec le site du zero et que dans un premier temps, on apprenait à faire un formulaire en html/css, puis à le rendre utilisable via le php... Du coup dans la première partie, j'avais déjà réalisé mon formulaire, sans php.
Mais si ce n'est que c'est beaucoup plus long et répétitif, au final ça ne change rien, si? Surtout que ça ne m'arrange pas trop d'avoir à le refaire, vu comme je galère en php... :sweat:  
 
Je vais essayer de jeter un oeil au fichier dont tu me parles, en espérant que j'arrive à le téléchager parce que je n'ai pas accès a beaucoup de chose sur le PC de l'entreprise et mes droits sont très limités... -_-'

n°1976267
rufo
Pas me confondre avec Lycos!
Posté le 23-03-2010 à 12:13:35  profilanswer
 

Ben le pb c'est que si tu fais un formulaire de recherche dont les critères ne prennent pas en compte ce qu'il y a dans le bd, c'est pas la peine, c'est naze et pas utilisable pour l'entreprise :/
 
Et vu ton niveau en php, laisse tomber mon appli, tu vas pas y comprendre grand chose...
 
Pour rappel, avant de se lancer dans toute activité, on vérifie que :
1) on a les compétences
2) on a les outils.
 
Pour le 1), on peut les acquérir, faut vérifier par contre qu'on a le temps pour le faire et s'assurer que c'est à sa portée. Manifestement, tu n'a pas pris soin de vérifier ce point et j'ai l'impression que tu n'en as plus le temps. Là, tu t'es lancée dans un dév mettant en jeu une BD, du html et du PHP et tu n'as pas les bases pour les 3 :/ C'est le genre de technos qui nécessitent pour les bases plusieurs semaines (surtout quand on vient pas d'une école d'info) et pour bien maîtriser, plusieurs années :/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Formulaire et bases de données

 

Sujets relatifs
pb insertion champ vide dans BDD via formulaire (PHP/SQL) [Résolu]Formulaire et macro sous Word 2007
Mail automatique (PHP si possible) depuis données SQL[Résolu] Liste déroulante php/sql n'affichant pas toutes les données.
Fonction "copier/coller des champs" dans un formulaire[SQL Server 2008]Lié des tables entre 2 Bases - possible ?
[Powershell]Utilisation d'un script powershell via un formulairepb encodage - formulaire de contact
problème d'extraction de donnéesPHP dans formulaire et $_POST je dois cliquer deux fois ...
Plus de sujets relatifs à : Formulaire et bases de données


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR