Aller au contenu

Ndeko

Actif
  • Compteur de contenus

    10
  • Inscrit(e) le

  • Dernière visite

Réputation sur la communauté

0 Neutre
  1. Ndeko

    débuter le php

    Pour m'être mis au php très récemment, je confirme que PhpDébutant est vraiment bien fait ;-) J'ai pu rapidement apprendre les bases du langage.
  2. J'ai résolu mon pb !! <div id="recherche_fr-ln"> <form action="#resultat_fr_ln" method="post"> <input type="Text" name="mot2" size="20" /> <input type="Submit" value="Traduire" /> </form> </div> <div id="resultat_fr_ln"> <?php if(isset($_POST['mot2'])) { $mot = $_POST['mot2']; $db = mysql_connect('localhost', 'pgrouselle', '300197'); mysql_select_db('lingala',$db); $sql = "SELECT mot_ln,mot_fr,mot_cat FROM dictionnaire,variantes_fr WHERE variante_fr='$mot' AND variantes_fr.id_mot = dictionnaire.id_mot ORDER BY 'mot_fr' "; $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); if(mysql_num_rows($req) == 0) { echo '<p>Désolé, ce mot ne figure pas dans le dictionnaire.</p>'; } else { echo '<dl>'; while($data = mysql_fetch_array($req)) { echo '<dt>'.$data['mot_fr'].' ['.$data['mot_cat'].']</dt> <dd>'.$data['mot_ln']; $data_ex = $data['mot_fr']; $sql_ex = "SELECT exemple_ln,exemple_fr FROM dictionnaire,exemples WHERE mot_fr='$data_ex' AND exemples.id_mot = dictionnaire.id_mot"; $req_ex = mysql_query($sql_ex) or die('Erreur SQL !<br />'.$sql_ex.'<br />'.mysql_error()); while($data = mysql_fetch_array($req_ex)) { echo '<br />'.$data['exemple_fr'].' : '.$data['exemple_ln']; } echo '</dd>'; } echo '</dl>'; mysql_close(); } } ?> </div>
  3. Ndeko

    Eviter les balises vides

    Merci Ldo, cela m'a aidé effectivement : en essayant d'utiliser "if (mysql_num_rows..." , j'avais oublié de refermer des accolades. Moralité : je placerai désormais toutes mes accolades sur des lignes isolées, et les indenterai par des tabulations !
  4. Ndeko

    Eviter les balises vides

    J'ai un formulaire de recherche, + l'affichage des résultats sous la forme d'une liste de définition. <div id="formulaire_recherche> <form action="#resultat" method="post"> <input type="Text" name="mot" size="20" /> <input type="Submit" value="Traduire" /> </form> </div> <div id="resultats"> <?php if(isset($_POST['mot'])) { $mot = $_POST['mot']; $db = mysql_connect('localhost', 'user', '***'); mysql_select_db('base',$db); $sql = "SELECT ... FROM dictionnaire,fr_entree WHERE fr_entree_val='$mot' AND fr_entree.id_mot = dictionnaire.id_mot ORDER BY 'mot_fr' "; $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); echo '<dl>'; while($data = mysql_fetch_array($req)) { echo '<dt>'.$data['mot_fr'].' ('.$data['mot_cat'].')</dt><dd>'.$data['mot_ln'].'</dd>'; } echo '</dl>'; mysql_close(); } ?> </div> Le problème que je n'arrive pas à résoudre : Si aucun enregistrement ne correspond à la requête, la page html affichera : Autrement dit des balises dl vides. Ce qui n'est pas top... Comment peut-on éviter cela ? J'ai essayé plusieurs trucs, sans succès. Je pense m'être approché d'une solution en utilisant mysql_num_rows() , mais n'y suis pas arrivé... A l'aide, svp ! -- Pascal Grouselle
  5. Bon, après plusieurs tentatives pour ce faire, je sèche encore... Voici donc ce à quoi je souhaite aboutir : Lorsque l'utilisateur saisit un mot lingala dans le formulaire, on lui donne 1) la traduction de ce mot en français (exemple : limpa : pain), et cela quelle que soit l'orthographe qu'il a pu utiliser lors de sa saisie (lipa, limpa) 2) une ou des phrases-exemples traduites (exemple : Nalingi limpa. : J'aime le pain.) Pour cela j'ai créé 3 tables : dictionnnaire : ..id_mot..|..mot_ln..|..mot_fr.. ..1.......|..limpa...|..pain.... ..2.......|..kopo....|..verre... variantes : ..id_var..|..id_mot..|..variante.. ..1.......|..1............|..lipa... ..2.......|..1............|..limpa... ..3.......|..1............|..mapa... ..4.......|..1............|..mampa... exemples : ..id_ex..|..id_mot..|ex_ln..............|..ex_fr.. ..1.......|..1............|..Nalingi lipa...|..J'aime le pain... ..2.......|..1............|..kolia lipa......|..manger du pain... L'idée, pour une requête = à lipa, ou limpa, ou mapa, ou mampa, c'est d'afficher ce mot dans sa graphie correcte puis sa traduction : limpa : pain , puis les exemples qui lui sont associés. J'ai franchi le cap de la première étape grâce aux conseils d'Anonymus, mais je n'arrive pas à formuler la requête qui puisse afficher les exemples. Merci pour votre aide ! -- Pascal Grouselle
  6. J'ai constaté, dans un tri alphabétique sur des mots allemands, que mysql trie les entrées en plaçant ö après o, ä après a, etc. Exemple (fautif) : modern Motor mögen Au lieu de (exact) : modern mögen Motor Dans le manuel mysql, j'ai lu ceci à ce propos : Je veux bien..., mais qui pourrait m'expliquer comment on "démarre mysqld avec --default-character-set=latin1_de" ? Et est-ce que le choix de ce jeu de caractères peut générer d'autres problèmes pour des mots français, cette fois-ci (je pense aux voyelles accentuées). Merci ! -- Pascal Grouselle http://perso.wanadoo.fr/pascal.grouselle/
  7. Convaincu !!! J'ai fait des essais, et cela tourne bien. Merci pour tes conseils. Cela permet de surcroît d'utiliser une requête avec le signe =, du type : WHERE ... = ... , au lieu de LIKE '$mot %' OR LIKE '% $mot' . [1 espace avant et après %] et donc, on évite, sur une requête portant par exemple sur "la", d'afficher toutes les entrées portant sur des noms féminins ("la table, la maison, la voiture, etc....") Je m'oriente donc vers la création des tables suivantes (j'ai aussi éclaté les tables de variantes portant sur l'une et l'autre langue) : 1) dictionnaire (id_mot, mot_fr, mot_ln) 2) entree_fr (id_entree_fr, entree_valeur_fr, id_mot_fr) 3) entree_ln (id_entree_ln, entree_valeur_ln, id_mot_ln) Je vais à présent exploiter les tabels reliées pour créer des tables contenant des phrases-exemples. Car à un même mot du dictionnaire peuvent être associés plusieurs exemples. A creuser... Merci encore, tu m'as apporté un éclairage précieux sur cette pratique ! -- Pascal Grouselle
  8. OK, mais je ne pensais pas procéder comme cela, mais plutôt comme ceci, dans une table unique effectivement : a) placer toutes les entrées possibles dans un seul champ fr_entree, ou ln_entree, séparées par des espaces + virgules Exemples : ln_entree : limpa , lipa , mapa , mampa fr_entree : le pain , un pain , du pain , les pains , des pains avoir dans les champs de sortie correspondants des libellés du style : ln_sortie : limpa (nom, pluriel : mampa) fr_sortie : pain (nom masculin, pluriel : pains) c) faire porter la requête sur ln_entree, ou fr_entree, selon la page html du dictionnaire (français-lingala ou lingala-français) , avec une requête du type : WHERE ln_entree LIKE '$mot %' //pour une chaîne de caractères présente au début d'un champ OR ln_entree LIKE '% $mot' //pour une chaîne présente à la fin d'un champ OR ln_entree LIKE '$mot' //pour une chaîne srtictement égale au champ OR ln_entree LIKE '% $mot %' // pour une chaîne présente à l'intérieur d'un champ Sauf erreur de ma part, donc, je ne pense pas devoir créer un nouveau champ à chaque fois que j'introduis une nouvelle variante dans la table. Cela étant, ton idée de tables séparées me plaît bien aussi. Cela me rappelle, par comparaison, les css externes aux fichiers html. Mais j'ai toujours du mal à en percevoir les points forts par rapport à ma première solution. Je suis prêt à "sauter le pas", mais j'aimerais le faire en pleine conscience de ce que je fais ! Si tu peux m'éclairer, merci !! -- Pascal Grouselle
  9. Ta suggestion est intéressante. Mais je ne saisis pas bien l'avantage qu'il y a de saisir les variantes dans une table à part, plutôt que dans un champ à part. De plus, peux-tu m'expliquer à quoi sert ton champ "langue", présente dans les deux tables ? Merci ! -- Pascal Grouselle
  10. Bonjour, Comme je suis nouveau sur ce forum, quelques mots de présentation pour commencer. J'arrive ici depuis la liste de diffusion des Pompeurs. Je ne suis pas du tout un pro de la création web (mais principal adjoint de collège : rien à voir donc, encore que...), mais je crée, dans mon temps libre, un site perso sur le lingala, une langue africaine. Je me suis mis au php/mysql depuis quelques temps. Pour m'initier, j'ai "suivi" les leçons proposées sur PhpDébutant, qui m'ont semblé fort bien faites. Qu'en pensez-vous ? Mon projet actuellement : créer un dictionnaire bilingue français-lingala en php/mysql. L'idée est d'utiliser un formulaire de recherche pour obtenir le - ou les - équivalent(s) d'un mot ou d'une expression d'une langue à l'autre. Mais mon souci est de proposer un outil intuitif, qui rende mon contenu *accessible* quelles que soient (ou presque) les connaissances de l'utilisateur en grammaire et en orthographe. Je ne voudrais pas, par exemple pour obtenir la traduction de "se laver", lui faire subir une mention du genre : "Pour les verbes pronominaux, entrez leur forme simple, sans pronom personnel, et à l'infinitif". Parce que ça, déjà, pour un certain nombre d'utilisateurs, c'est de l'hébreu. Ou de l'israélien. Ou du Raélien, comme vous voudrez ! Par ailleurs, dans le sens lingala-français, se pose la question de l'orthographe du lingala, qui n'est pas codifiée, et présente souvent des variantes à côté d'un usage académiquement plus reconnu. Si un utilisateur a par exemple rencontré dans ses lectures le mot "mapa" (pains au pluriel), il faut pouvoir le ramener à la forme de ce mot au singulier : "lipa", et mieux encore à l'orthographe la plus correcte : "limpa". Après divers tâtonnements, j'ai pensé m'en tirer de la façon suivante : La table ('ln_fr') : Avoir 5 champs : id, fr_entree, fr_sortie, ln_entree, ln_sortie Dans fr_entree et ln_entree, je compte placer toutes les entrées que l'utilisateur saisira *probablement*. Exemple avec "limpa" : limpa , lipa , mampa , mapa . Et du côté français : le pain , un pain , du pain , les pains , des pains . (Sans aller trop loin non plus : je ne pourrais pas non plus grand chose pour celui qui écrira "du paim" !) Dans fr_sortie et ln_sortie, je compte placer les définitions telles qu'elles s'afficheront lorsqu'on aura lancé une requête portant sur les champs d'entrée. Exemple pour une recherche où on a saisi lipa, ou limpa, ou mapa, ou mampa, on obtiendrait à l'écran : limpa (pluriel : mampa) : le pain (pluriel : les pains) Le code (le choix des balises html reste à améliorer, j'en suis conscient.) : <div id="recherche"> <form action="#resultat" method="post"> <input type="Text" name="mot" size="20" /> <input type="Submit" value="Traduire" /> </form> </div> <div id="resultat"> <?php if(isset($_POST['mot'])) { $mot = $_POST['mot']; $db = mysql_connect('localhost', 'root'); mysql_select_db('ln_fr',$db); $sql = "SELECT ln_sortie,fr_sortie FROM lingala WHERE ln_entree LIKE '$mot %' OR ln_entree LIKE '% $mot' OR ln_entree LIKE '$mot' OR ln_entree LIKE '% $mot %' "; $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); while($data = mysql_fetch_array($req)) { echo $data['ln_sortie'].' : '.$data['fr_sortie'].'<br />'; } mysql_close(); } ?> </div> Qu'en pensez-vous ? Voyez-vous des méthodes plus pertinentes ? Merci beaucoup de me donner votre point de vue ! -- Pascal Grouselle
×
×
  • Créer...