| dimanche 12 novembre 2000 - 09h49 Bonjour, Je voudrais savoir comment faire pour récupérer des informations enregistrées dans DATABASE.DAT en les affichant sur une page où je choisis l'endroit des résultats. Je veut dire une adresse du genre : http://www.mondomaine.com/cgi-bin/monscript.cgi?login=dachu Dès qu'on va sur cette adresse, je voudrais que le cgi recherche dans le DATABASE le login DACHU et affiche toutes les informations concernant ce login sur une page que je prédéfinie. J'ai déjà visionné le COURS 4, mais ce n'est pas vraiment ce que je veux... Merci, Bien à vous, Damien Duchenne
| |
| dimanche 12 novembre 2000 - 17h17 Bonjour, Il s'agit d'une recherche comme dans le cours 4 : il faut rechercher le login dans chaque ligne de la base de données et si on l'a trouvé on regarde si c'est le login. En vitesse voici ce que ca donnerait (je n'ai pas testé) #!G:/Prg_internet/Perl/bin/perl.exe $db = "database.dat"; require "cgi-lib.pl"; &ReadParse(*in); print &PrintHeader; $login = $in{login}; open (DATABASE, "<$db") || die "Can't open $db: $!\n"; @LINES=<DATABASE>; close(DATABASE); $SIZE=@LINES; for ($i = 0; $i <= $SIZE; $i++) { $_=$LINES[$i]; if (/$login/) { # trouvé enregistrement qui contient la clé ($nom,$prenom,$rue,$no,$cp,$localite,$pays) = split(/\|/,$_); if ($nom =~ /$login/) { #le nom contient le login print "$nom,$prenom,$rue,$no,$cp,$localite,$pays<br>\n"; } } } Cela compare le 1er champ de votre base de données avec le login passé en parametre.
| |
| dimanche 12 novembre 2000 - 18h25 Merci, Il fonctionne, mais j'ai deux problèmes : le cgi traite l'information indéfiniment et pas comme je veux. Quand je tape l'adresse, il affiche la page avec toutes les informations (ce qui veut dire que ça fonctionne), mais il les affichent indéfiniment et pas comme je veux. Je voudrais que les infos s'affichent avec des tableaux, des choix de la taille et du caractère du texte,... Et aussi, evidemment, que ça s'affiche une seule fois !!!!!!! Merci, Bien à vous, Damien Duchenne
| |
| dimanche 12 novembre 2000 - 21h16 Bonjour, Chez moi il n'affiche pas les infos indéfiniment. Il n'affiche que la ou les lignes contenant ce que je lui ai demandé. Pour l'affichage qui n'est pas comme vous voulez, c'est un autre problème. Regardez le cours 4, ou il y a une mise en page avec des cellulles de tableau et inspirez vous en. Au lieu de faire un simple print avec tout a la queu leu leu, faites quelque chose du genre print <<FIN; <font face="Arial">$nom, $prenom, ...</font> FIN Amicalement, Frédéric
| |
| vendredi 17 novembre 2000 - 18h17 Bonjour, Ca fait plusieurs fois que j'essaye, mais il n'accepte pas le chmod 755... Quel chmod dois-je mettre ? Voici mon script, regardez si ce n'est pas une faute de ma part qui rend impossible son exécution : #!/usr/bin/perl $db = "database.dat"; require "cgi-lib.pl"; &ReadParse(*in); print &PrintHeader; $pseudo = $in{c}; open (DATABASE, "<$db") || die "Can't open $db: $!\n"; @LINES=<DATABASE>; close(DATABASE); $SIZE=@LINES; for ($i = 0; $i <= $SIZE; $i++) { $_=$LINES[$i]; if (/$pseudo/) { # trouvé enregistrement qui contient la clé ($a, $b, $c) = split(/\|/,$_); if ($a =~ /$pseudo/) { #le nom contient le pseudo print <<FIN; <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> <meta name="GENERATOR" content="Microsoft FrontPage 4.0"> <meta name="ProgId" content="FrontPage.Editor.Document"> <title>$pseudo$</title> <style type="text/css">A:link { TEXT-DECORATION: none } A:visited { TEXT-DECORATION: none } A:active { TEXT-DECORATION: none } A:hover { TEXT-DECORATION: underline } </style> <script language="JavaScript"> <!--Toujours Plus De Javascript --> <!-- http://fafaworld.ifrance.com --> <!-- function click() { if (event.button==2) { alert('Trop curieux ;-)') } if (event.button==1+2) { alert('Trop curieux ;-)') } } document.onmousedown=click // --> </script> </head> <body> <script language="JavaScript1.2"> if (document.all) document.body.style.cssText="background:white url(http://carami.multimania.com/images/arriere_plan.gif) no-repeat fixed center center" </script> <p align="center"><font face="Times New Roman"><b><i>$c <$b $a>...</i></b></font></p> <p align="center"><font face="Times New Roman"><a href="http://foaler.citeglobe.com/cgi-bin/CarAmi/Ecrire/champs.cgi?email=$email_sender&nompersonne=$b+$a" OnMouseOver="self.status='Envoyer un message à $b';return true;" OnMouseOut="self.status=' ';return true;">Cliquez ici pour envoyer un message à cette personne</a></font></p> <div align="center"> <table border="0" cellpadding="0" width="75%"> <tr> <td bgcolor="#FF6600"> <p align="left"><font face="Times New Roman">Nom :</font></p> </td> <td bgcolor="#FF9933"> <p align="left"><font face="Times New Roman">$a</font></p> </td> </tr> <tr> <td bgcolor="#FF6600"> <p align="left"><font face="Times New Roman">Prénom :</font></p> </td> <td bgcolor="#FF9933"> <p align="left"><font face="Times New Roman">$b</font></p> </td> </tr> <tr> <td bgcolor="#FF6600"> <p align="left"><font face="Times New Roman">Pseudo Caramail :</font></p> </td> <td bgcolor="#FF9933"> <p align="left"><font face="Times New Roman">$c</font></p> </td> </tr> <tr> <td bgcolor="#FF6600"> <p align="left"><font face="Times New Roman">E-mail :</font></p> </td> <td bgcolor="#FF9933"> <p align="left"><font face="Times New Roman">$email_sender$</font></p> </td> </tr> <tr> <td bgcolor="#FF6600"> <p align="left"><font face="Times New Roman">Sexe :</font></p> </td> <td bgcolor="#FF9933"> <p align="left"><font face="Times New Roman">$d</font></p> </td> </tr> <tr> <td bgcolor="#FF6600"> <p align="left"><font face="Times New Roman">Date de naissance :</font></p> </td> <td bgcolor="#FF9933"> <p align="left"><font face="Times New Roman">$e</font></p> </td> </tr> <tr> <td bgcolor="#FF6600"> <p align="left"><font face="Times New Roman">Ville :</font></p> </td> <td bgcolor="#FF9933"> <p align="left"><font face="Times New Roman">$f</font></p> </td> </tr> <tr> <td bgcolor="#FF6600"> <p align="left"><font face="Times New Roman">Pays :</font></p> </td> <td bgcolor="#FF9933"> <p align="left"><font face="Times New Roman">$g</font></p> </td> </tr> <tr> <td bgcolor="#FF6600"> <p align="left"><font face="Times New Roman">Langue :</font></p> </td> <td bgcolor="#FF9933"> <p align="left"><font face="Times New Roman">$h</font></p> </td> </tr> <tr> <td bgcolor="#FF6600"> <p align="left"><font face="Times New Roman">Recherche :</font></p> </td> <td bgcolor="#FF9933"> <p align="left"><font face="Times New Roman">$i</font> </p> </td> </tr> <tr> <td bgcolor="#FF6600"> <p align="left"><font face="Times New Roman">Emploi :</font></p> </td> <td bgcolor="#FF9933"> <p align="left"><font face="Times New Roman">$j</font></p> </td> </tr> <tr> <td bgcolor="#FF6600"> <p align="left"><font face="Times New Roman">Etat civil :</font></p> </td> <td bgcolor="#FF9933"> <p align="left"><font face="Times New Roman">$k</font> </p> </td> </tr> <tr> <td bgcolor="#FF6600"> <p align="left"><font face="Times New Roman">Taille :</font></p> </td> <td bgcolor="#FF9933"> <p align="left"><font face="Times New Roman">$l cm</font></p> </td> </tr> <tr> <td bgcolor="#FF6600"> <p align="left"><font face="Times New Roman">Poids :</font></p> </td> <td bgcolor="#FF9933"> <p align="left"><font face="Times New Roman">$m kg</font></p> </td> </tr> <tr> <td bgcolor="#FF6600"> <p align="left"><font face="Times New Roman">Yeux :</font></p> </td> <td bgcolor="#FF9933"> <p align="left"><font face="Times New Roman">$n</font></p> </td> </tr> <tr> <td bgcolor="#FF6600"> <p align="left"><font face="Times New Roman">Cheveux :</font></p> </td> <td bgcolor="#FF9933"> <p align="left"><font face="Times New Roman">$o</font></p> </td> </tr> <tr> <td bgcolor="#FF6600"> <p align="left"><font face="Times New Roman">Nationalité :</font></p> </td> <td bgcolor="#FF9933"> <p align="left"><font face="Times New Roman">$p</font></p> </td> </tr> <tr> <td bgcolor="#FF6600"> <p align="left"><font face="Times New Roman">Fumeur :</font></p> </td> <td bgcolor="#FF9933"> <p align="left"><font face="Times New Roman">$q</font> </p> </td> </tr> <tr> <td bgcolor="#FF6600"> <p align="left"><font face="Times New Roman">Plats favoris :</font></p> </td> <td bgcolor="#FF9933"> <p align="left"><font face="Times New Roman">$r</font></p> </td> </tr> <tr> <td bgcolor="#FF6600"> <p align="left"><font face="Times New Roman">Préférences musicales :</font></p> </td> <td bgcolor="#FF9933"> <p align="left"><font face="Times New Roman">$s</font></p> </td> </tr> <tr> <td bgcolor="#FF6600"> <p align="left"><font face="Times New Roman">Préférences de films :</font></p> </td> <td bgcolor="#FF9933"> <p align="left"><font face="Times New Roman">$t</font></p> </td> </tr> <tr> <td bgcolor="#FF6600"> <p align="left"><font face="Times New Roman">Ce que je préfère :</font></p> </td> <td bgcolor="#FF9933"> <p align="left"><font face="Times New Roman">$u</font></p> </td> </tr> <tr> <td bgcolor="#FF6600"> <p align="left"><font face="Times New Roman">Ce que je déteste :</font></p> </td> <td bgcolor="#FF9933"> <p align="left"><font face="Times New Roman">$v</font></p> </td> </tr> <tr> <td bgcolor="#FF6600"> <p align="left"><font face="Times New Roman">Hobbies :</font></p> </td> <td bgcolor="#FF9933"> <p align="left"><font face="Times New Roman">$w</font></p> </td> </tr> <tr> <td bgcolor="#FF6600"> <p align="left"><font face="Times New Roman">Numéro ICQ :</font></p> </td> <td bgcolor="#FF9933"> <p align="left"><font face="Times New Roman">$x</font></p> </td> </tr> <tr> <td bgcolor="#FF6600"> <p align="left"><font face="Times New Roman">Informations supplémentaires :</font></p> </td> <td bgcolor="#FF9933"> <p align="left"><font face="Times New Roman">$y</font></p> </td> </tr> </table> </div> </body> </html> FIN } } } Merci, Bien à vous, Damien Duchenne
| |
| vendredi 17 novembre 2000 - 22h04 Bonjour, a première vue, je ne vois pas de problèmes. Qu'est ce qui vous fait croire que c'est un probleme de chmod ? Essayez en faisant commencer votre script par #!/usr/bin/perl use CGI; use CGI::Carp qw(fatalsToBrowser); # le suite du script ... cela devrait afficher dans le browser certaines erreurs.
| |
| samedi 18 novembre 2000 - 16h44 Bonjour, Tout d'abord je voudrais vous remercier pour tout ce que vous faites pour moi ! Voilà, j'ai pu localiser l'erreur... Maintenant, j'ai un autre problème, voyez vous-même en allant à l'adresse : http://foaler.citeglobe.com/cgi-bin/TestCGI/test6.cgi?login=dachu En tout cas, ça ressemble déjà à quelque chose ! Merci, Bien à vous, Damien Duchenne
| |
| samedi 18 novembre 2000 - 23h00 Bonjour, y a comme qui dirait un probleme oui mais sans le script je ne peux rien faire. Essayer d'imprimer régulierement la valeur de $i de facon a voir combien de fois il passe dans la boucle for par exemple.
| |
| dimanche 19 novembre 2000 - 10h21 Bonjour, Je vous ai envoyé le CGI par e-mail... J'ai essayé de changer la valeur $i, mais ça ne change rien. Je ne comprend vraiment rien à ce cgi... Je vous laisse, Merci beaucoup ;-) Damien Duchenne
| |
| jeudi 23 novembre 2000 - 20h50 Bonjour, Je ne comprend pas ce que vous voulez dire par plittez la ligne. Pour rappel, voici l'e-mail que vous m'aviez envoyé : Ca pouvait difficilement fonctionner, vous faites : for ($i = 0; $i <= $SIZE; $i++) { $_=$LINES[$i]; if (/$pseudo/) { # trouvé enregistrement qui contient la clé ($a, $b, $c, $email_sender, $d, $e, $f, $g, $h, $i, $j, $k, $l, $m, $n, $o, $p, $q, $r, $s, $t, $u, $v, $w, $x, $y) = split(/\|/,$_); ... vous plittez la ligne et mettez le contenu dans des variables a b c d f g h i j k l ... bien sauf que $i est déja utilisé par la boucle for $i n'est jamais plus grand que $SIZE et donc ne s'arrete jamais. soit vous remplacez $i dans le split soit vous le changez dans le for et le remplacez par une variable qui n'est pas utilisée. Je ne comprend pas vraiment ce que vous vouliez dire... Merci de m'expliquer un peu plus en détails... Merci, Damien Duchenne
| |
| vendredi 24 novembre 2000 - 00h51 Bonjour, la fonction split permet de séparer une chaine de caractères suivant un caractère bien défini. Dans ce cas ci il s'agit du caractère | Vous séparez donc votre ligne vous placez chaque élément dans des variables que vous avez décidé d'appeler suivant les lettre de l'alphabet ($a, $b, $c, $d, ...$v, $y). Vous mettez donc une partie du contenu de votre ligne dans la variable $i qui est justement celle qui est utilisée pour parcourir chaque ligne du fichier : for ($i = 0; $i <= $SIZE; $i++) comme vous changez chaque fois ca valeur, $i ne peux jamais etre plus grand que $SIZE et donc le for ne s'arrete jamais. Quand on programme, il faut toujours faire attention a ne pas écraser le contenu de variables que l'on utilise.
| |
| vendredi 24 novembre 2000 - 18h48 Donc, si je comprend bien, je dois arriver à ça : for ($i = 0; $i <= $SIZE; $i++) { $_=$LINES[$i]; if (/$pseudo/) { # trouvé enregistrement qui contient la clé ($a|$b|$c|$email_sender|$d|$e|$f|$g|$h|$i|$j|$k|$l|$m|$n|$o|$p|$q|$r|$s|$t|$u|$v|$w|$x|$y) = split(/\|/,$_); if ($a =~ /$pseudo/) Si c'est pas ça, je sens que je vais devenir fou ;-) J'essaye de me lancer dans la programmation, mais j'avoue que ce n'est pas des plus facile... Mais avec vous, j'apprend beaucoup et je vous en remercie ! Bien à vous, Damien Duchenne
| |
| samedi 25 novembre 2000 - 12h07 Bonjour, non vous ne devez pas arriver a ca, sinon ca ne fonctionnera pas :-) vous utilisez la variable $i pour 2 choses différentes : parcourir le fichier et pour contenir un élément d'un ligne de ce fichier. Ces 2 utilisations sont incompatibles, vous devez donc changer le nom d'une des 2 variables $i et le remplacer par autre chose. Cela donnerait quelque chose comme : for ($ligne = 0; $ligne <= $SIZE; $ligne++) { $_=$LINES[$ligne]; if (/$pseudo/) { # trouvé enregistrement qui contient la clé ($a, $b, $c, $email_sender, $d, $e, $f, $g, $h, $i, $j, $k, $l, $m, $n, $o, $p, $q, $r, $s, $t, $u, $v, $w, $x, $y) = split(/\|/,$_); j'ai remplacé le $i qui était dans le for par $ligne qui n'est utilisé nulle part d'autre (enfin je pense).
|