je rencontre un problème au niveau de l'exécution d'une requête SQL et je ne
vois pas où est ma coquille . Avec le débuggage, je sais ce qui cloche mais
je vois pas comment m'en sortir ...
Voici mon code perl qui consiste à récupérer le status de mes comptes
utilisateurs (que je coche via des checkboxs sur la page qui liste les
comptes). A préciser que le status c'est une lettre :Y pour activer / N pour
désactiver.
sub Activity
{
my ($id_user) =@_;
print "Dans la fonction";
$sql= "SELECT activity_user FROM users WHERE id_user=$id_user";
$var = $dbh -> selectrow_array($sql);
return $var;
}
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Flatman
* "Slyv" wrote: | | Bonjour à tous, | | je rencontre un problème au niveau de l'exécution d'une requête SQL et je ne | vois pas où est ma coquille . Avec le débuggage, je sais ce qui cloche mais | je vois pas comment m'en sortir ... | | Voici mon code perl qui consiste à récupérer le status de mes comptes | utilisateurs (que je coche via des checkboxs sur la page qui liste les | comptes). A préciser que le status c'est une lettre :Y pour activer / N pour | désactiver. | | sub Activity | { | my ($id_user) =@_; | print "Dans la fonction"; | $sql= "SELECT activity_user FROM users WHERE id_user=$id_user"; | $var = $dbh -> selectrow_array($sql); | return $var; | } | | for($i=0;$i<$longueur;$i++) | { | print "tour de boucle $i" | $result=&Activity($line[$i]); ^^^^^ quelle est la valeur de $line... ??? | print $result; | } | | qui produit l'output suivant : | | tour de boucle 0Dans la fonctionN | tour de boucle 1Dans la fonction | tour de boucle 2Dans la fonction | | Comme vous pouvez le constater, je ne récupère la valeur que lors du premier | tour de boucle et je comprends pas pourquoi | | une idée ? | | Merci par avance | | Slyv | |
-- Erik
* Life is wonderful with Emacs and Perl *
* "Slyv" <ffadventure@free.fr> wrote:
|
| Bonjour à tous,
|
| je rencontre un problème au niveau de l'exécution d'une requête SQL et je ne
| vois pas où est ma coquille . Avec le débuggage, je sais ce qui cloche mais
| je vois pas comment m'en sortir ...
|
| Voici mon code perl qui consiste à récupérer le status de mes comptes
| utilisateurs (que je coche via des checkboxs sur la page qui liste les
| comptes). A préciser que le status c'est une lettre :Y pour activer / N pour
| désactiver.
|
| sub Activity
| {
| my ($id_user) =@_;
| print "Dans la fonction";
| $sql= "SELECT activity_user FROM users WHERE id_user=$id_user";
| $var = $dbh -> selectrow_array($sql);
| return $var;
| }
|
| for($i=0;$i<$longueur;$i++)
| {
| print "tour de boucle $i"
| $result=&Activity($line[$i]);
^^^^^ quelle est la valeur de $line... ???
| print $result;
| }
|
| qui produit l'output suivant :
|
| tour de boucle 0Dans la fonctionN
| tour de boucle 1Dans la fonction
| tour de boucle 2Dans la fonction
|
| Comme vous pouvez le constater, je ne récupère la valeur que lors du premier
| tour de boucle et je comprends pas pourquoi
|
| une idée ?
|
| Merci par avance
|
| Slyv
|
|
* "Slyv" wrote: | | Bonjour à tous, | | je rencontre un problème au niveau de l'exécution d'une requête SQL et je ne | vois pas où est ma coquille . Avec le débuggage, je sais ce qui cloche mais | je vois pas comment m'en sortir ... | | Voici mon code perl qui consiste à récupérer le status de mes comptes | utilisateurs (que je coche via des checkboxs sur la page qui liste les | comptes). A préciser que le status c'est une lettre :Y pour activer / N pour | désactiver. | | sub Activity | { | my ($id_user) =@_; | print "Dans la fonction"; | $sql= "SELECT activity_user FROM users WHERE id_user=$id_user"; | $var = $dbh -> selectrow_array($sql); | return $var; | } | | for($i=0;$i<$longueur;$i++) | { | print "tour de boucle $i" | $result=&Activity($line[$i]); ^^^^^ quelle est la valeur de $line... ??? | print $result; | } | | qui produit l'output suivant : | | tour de boucle 0Dans la fonctionN | tour de boucle 1Dans la fonction | tour de boucle 2Dans la fonction | | Comme vous pouvez le constater, je ne récupère la valeur que lors du premier | tour de boucle et je comprends pas pourquoi | | une idée ? | | Merci par avance | | Slyv | |
-- Erik
* Life is wonderful with Emacs and Perl *
kurtz le pirate
In article , Flatman wrote:
::* "Slyv" wrote: ::| ::| Bonjour à tous, ::| ::| je rencontre un problème au niveau de l'exécution d'une requête SQL et je ::| ne ::| vois pas où est ma coquille . Avec le débuggage, je sais ce qui cloche mais ::| je vois pas comment m'en sortir ... ::| ::| Voici mon code perl qui consiste à récupérer le status de mes comptes ::| utilisateurs (que je coche via des checkboxs sur la page qui liste les ::| comptes). A préciser que le status c'est une lettre :Y pour activer / N ::| pour ::| désactiver. ::| ::| sub Activity ::| { ::| my ($id_user) =@_; ::| print "Dans la fonction"; ::| $sql= "SELECT activity_user FROM users WHERE id_user=$id_user"; ::| $var = $dbh -> selectrow_array($sql); ::| return $var; ::| } ::| ::| for($i=0;$i<$longueur;$i++) ::| { ::| print "tour de boucle $i" ::| $result=&Activity($line[$i]); :: ^^^^^ quelle est la valeur de $line... ??? ::| print $result; ::| } ::| ::| qui produit l'output suivant : ::| ::| tour de boucle 0Dans la fonctionN ::| tour de boucle 1Dans la fonction ::| tour de boucle 2Dans la fonction ::| ::| Comme vous pouvez le constater, je ne récupère la valeur que lors du ::| premier ::| tour de boucle et je comprends pas pourquoi ::| ::| une idée ? ::| ::| Merci par avance ::| ::| Slyv ::| ::|
très intéressante ta réponse flatman !
In article <m2ll0bxxmy.fsf@flatsoft.no-ip.info>,
Flatman <flatman@swing.be> wrote:
::* "Slyv" <ffadventure@free.fr> wrote:
::|
::| Bonjour à tous,
::|
::| je rencontre un problème au niveau de l'exécution d'une requête SQL et je
::| ne
::| vois pas où est ma coquille . Avec le débuggage, je sais ce qui cloche mais
::| je vois pas comment m'en sortir ...
::|
::| Voici mon code perl qui consiste à récupérer le status de mes comptes
::| utilisateurs (que je coche via des checkboxs sur la page qui liste les
::| comptes). A préciser que le status c'est une lettre :Y pour activer / N
::| pour
::| désactiver.
::|
::| sub Activity
::| {
::| my ($id_user) =@_;
::| print "Dans la fonction";
::| $sql= "SELECT activity_user FROM users WHERE id_user=$id_user";
::| $var = $dbh -> selectrow_array($sql);
::| return $var;
::| }
::|
::| for($i=0;$i<$longueur;$i++)
::| {
::| print "tour de boucle $i"
::| $result=&Activity($line[$i]);
:: ^^^^^ quelle est la valeur de $line... ???
::| print $result;
::| }
::|
::| qui produit l'output suivant :
::|
::| tour de boucle 0Dans la fonctionN
::| tour de boucle 1Dans la fonction
::| tour de boucle 2Dans la fonction
::|
::| Comme vous pouvez le constater, je ne récupère la valeur que lors du
::| premier
::| tour de boucle et je comprends pas pourquoi
::|
::| une idée ?
::|
::| Merci par avance
::|
::| Slyv
::|
::|
::* "Slyv" wrote: ::| ::| Bonjour à tous, ::| ::| je rencontre un problème au niveau de l'exécution d'une requête SQL et je ::| ne ::| vois pas où est ma coquille . Avec le débuggage, je sais ce qui cloche mais ::| je vois pas comment m'en sortir ... ::| ::| Voici mon code perl qui consiste à récupérer le status de mes comptes ::| utilisateurs (que je coche via des checkboxs sur la page qui liste les ::| comptes). A préciser que le status c'est une lettre :Y pour activer / N ::| pour ::| désactiver. ::| ::| sub Activity ::| { ::| my ($id_user) =@_; ::| print "Dans la fonction"; ::| $sql= "SELECT activity_user FROM users WHERE id_user=$id_user"; ::| $var = $dbh -> selectrow_array($sql); ::| return $var; ::| } ::| ::| for($i=0;$i<$longueur;$i++) ::| { ::| print "tour de boucle $i" ::| $result=&Activity($line[$i]); :: ^^^^^ quelle est la valeur de $line... ??? ::| print $result; ::| } ::| ::| qui produit l'output suivant : ::| ::| tour de boucle 0Dans la fonctionN ::| tour de boucle 1Dans la fonction ::| tour de boucle 2Dans la fonction ::| ::| Comme vous pouvez le constater, je ne récupère la valeur que lors du ::| premier ::| tour de boucle et je comprends pas pourquoi ::| ::| une idée ? ::| ::| Merci par avance ::| ::| Slyv ::| ::|
très intéressante ta réponse flatman !
Antoun
Slyv wrote:
sub Activity { my ($id_user) =@_; print "Dans la fonction"; $sql= "SELECT activity_user FROM users WHERE id_user=$id_user"; $var = $dbh -> selectrow_array($sql); return $var;
sub Activity
{
my ($id_user) =@_;
print "Dans la fonction";
$sql= "SELECT activity_user FROM users WHERE id_user=$id_user";
$var = $dbh -> selectrow_array($sql);
return $var;
sub Activity { my ($id_user) =@_; print "Dans la fonction"; $sql= "SELECT activity_user FROM users WHERE id_user=$id_user"; $var = $dbh -> selectrow_array($sql); return $var;
par ailleurs, c'est une très mauvaise idée de re-lancer la requête à chaque tour de boucle. A moins que tu aies vraiment une liste énorme de users, il est bcp + plus efficace de lancer la requête d'ensemble et d'exploiter le résultat ligne par ligne :
my $liste_users = join("', '", @line) ; # génère une liste du genre Toto', 'Titi', 'Tata # qui ne demande qu'à s'insérer dans ta requête $sql = "SELECT activity_user FROM users WHERE id_user IN ('$liste_users')" ;
Je connais très mal les connexions Perl/BDD, donc il y a peut-être des améliorations à apporter à mon utilisation de $dbh et consorts ; mais pour la démarche d'ensemble, je n'ai aucun doute !
Antoun
par ailleurs, c'est une très mauvaise idée de re-lancer la requête à
chaque tour de boucle. A moins que tu aies vraiment une liste énorme de
users, il est bcp + plus efficace de lancer la requête d'ensemble et
d'exploiter le résultat ligne par ligne :
my $liste_users = join("', '", @line) ;
# génère une liste du genre Toto', 'Titi', 'Tata
# qui ne demande qu'à s'insérer dans ta requête
$sql = "SELECT activity_user
FROM users
WHERE id_user IN ('$liste_users')" ;
Je connais très mal les connexions Perl/BDD, donc il y a peut-être des
améliorations à apporter à mon utilisation de $dbh et consorts ; mais
pour la démarche d'ensemble, je n'ai aucun doute !
par ailleurs, c'est une très mauvaise idée de re-lancer la requête à chaque tour de boucle. A moins que tu aies vraiment une liste énorme de users, il est bcp + plus efficace de lancer la requête d'ensemble et d'exploiter le résultat ligne par ligne :
my $liste_users = join("', '", @line) ; # génère une liste du genre Toto', 'Titi', 'Tata # qui ne demande qu'à s'insérer dans ta requête $sql = "SELECT activity_user FROM users WHERE id_user IN ('$liste_users')" ;
Je connais très mal les connexions Perl/BDD, donc il y a peut-être des améliorations à apporter à mon utilisation de $dbh et consorts ; mais pour la démarche d'ensemble, je n'ai aucun doute !
Antoun
Patrick Texier
Le Sun, 30 Oct 2005 12:01:29 +0100, Antoun a écrit :
Je connais très mal les connexions Perl/BDD, donc il y a peut-être des améliorations à apporter à mon utilisation de $dbh et consorts ; mais pour la démarche d'ensemble, je n'ai aucun doute !
Effectivement, il manque une méthode execute entre prepare et fetchrow. Il est plus que conseillé de tester les erreurs (mise au point, serveur SQL en rade, base modifiée mais pas la requête...) de toutes les commandes envoyés.
Je connais très mal les connexions Perl/BDD, donc il y a peut-être des
améliorations à apporter à mon utilisation de $dbh et consorts ; mais
pour la démarche d'ensemble, je n'ai aucun doute !
Effectivement, il manque une méthode execute entre prepare et fetchrow.
Il est plus que conseillé de tester les erreurs (mise au point, serveur
SQL en rade, base modifiée mais pas la requête...) de toutes les
commandes envoyés.
Je connais très mal les connexions Perl/BDD, donc il y a peut-être des améliorations à apporter à mon utilisation de $dbh et consorts ; mais pour la démarche d'ensemble, je n'ai aucun doute !
Effectivement, il manque une méthode execute entre prepare et fetchrow. Il est plus que conseillé de tester les erreurs (mise au point, serveur SQL en rade, base modifiée mais pas la requête...) de toutes les commandes envoyés.