Condition if
Fermé
isa.dama
-
Modifié le 7 janv. 2020 à 10:14
isa.dama Messages postés 30 Date d'inscription mardi 15 mai 2018 Statut Membre Dernière intervention 27 avril 2023 - 17 janv. 2020 à 15:12
isa.dama Messages postés 30 Date d'inscription mardi 15 mai 2018 Statut Membre Dernière intervention 27 avril 2023 - 17 janv. 2020 à 15:12
A voir également:
- Condition if
- Excel cellule couleur si condition texte - Guide
- Condition et excel - Guide
- Excel soustraction avec condition ✓ - Forum Excel
- Couleur texte avec la fonction si - Forum Excel
- Nbval avec condition ✓ - Forum Excel
5 réponses
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
7 janv. 2020 à 10:16
7 janv. 2020 à 10:16
Bonjour,
Le problème ne vient pas de ton if, mais de la fonction odbc_do qui ne renvoie pas le résultat de la requête, mais un pointeur vers ce résultat.
cf https://www.php.net/odbc_exec
D'après ce que j'en lis, il faut ensuite utiliser odbc_fetch_row pour récupérer la première ligne de résultat, puis odbc_result pour récupérer le champ qui t'intéresse dans cette ligne.
Ce qui donne :
Xavier
Le problème ne vient pas de ton if, mais de la fonction odbc_do qui ne renvoie pas le résultat de la requête, mais un pointeur vers ce résultat.
cf https://www.php.net/odbc_exec
D'après ce que j'en lis, il faut ensuite utiliser odbc_fetch_row pour récupérer la première ligne de résultat, puis odbc_result pour récupérer le champ qui t'intéresse dans cette ligne.
Ce qui donne :
$req_NbDoubl="SELECT COUNT(CodeAnalytique) FROM Doublon"; $requete_NbDoubl= odbc_do($conn, $req_NbDoubl) ; $nombre = odbc_fetch_row($requete_NbDoubl) ? odbc_result($requete_NbDoubl, 1) : 0; if($nombre > 0) ...
Xavier
jordane45
Messages postés
38319
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
30 novembre 2024
4 706
7 janv. 2020 à 10:16
7 janv. 2020 à 10:16
Bonjour,
N'as tu pas oublié de faire un FETCH de ton résultat de requête ?
N'as tu pas oublié de faire un FETCH de ton résultat de requête ?
isa.dama
Messages postés
30
Date d'inscription
mardi 15 mai 2018
Statut
Membre
Dernière intervention
27 avril 2023
13 janv. 2020 à 11:28
13 janv. 2020 à 11:28
Bonjour,
cela fait 3 jours que trouve pas la solution.
J'ai modifié le code en utilisant un fetch_objet mais le resultat me renvoi 0.
Pourtant, quand j'exécute la requete sur access je trouve 24 comme resultat.
Voici mon code
//calcul nombre de doublon
$reqNbDoublon= "SELECT COUNT (*) AS nb FROM Doublon";
$requete= odbc_exec($conn, $reqNbDoublon) ;
if($resultat= odbc_fetch_object($requete))
{
$nbDoublon =$resultat->nb;
echo $nbDoublon;
}
cela fait 3 jours que trouve pas la solution.
J'ai modifié le code en utilisant un fetch_objet mais le resultat me renvoi 0.
Pourtant, quand j'exécute la requete sur access je trouve 24 comme resultat.
Voici mon code
//calcul nombre de doublon
$reqNbDoublon= "SELECT COUNT (*) AS nb FROM Doublon";
$requete= odbc_exec($conn, $reqNbDoublon) ;
if($resultat= odbc_fetch_object($requete))
{
$nbDoublon =$resultat->nb;
echo $nbDoublon;
}
samyb2313
Messages postés
52
Date d'inscription
mercredi 23 février 2011
Statut
Membre
Dernière intervention
15 janvier 2020
5
14 janv. 2020 à 09:41
14 janv. 2020 à 09:41
Essaie peut être comme cela :
$reqNbDoublon= "SELECT COUNT (*) AS nb FROM Doublon"; $requete= odbc_exec($conn, $reqNbDoublon) ; $nb = 0; //j'initialise à 0 - Si la requete echoue, le nb sera a 0 while(odbc_fetch_row($requete)){ //Je parcours les lignes de résultat de la requète $nb=odbc_result($requete,1); //Je recupere mon resultat et l'affiche dans nb. } echo $nb; if ($nb > 0) $existDoublon = true; else $existDoublon = false;
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
isa.dama
Messages postés
30
Date d'inscription
mardi 15 mai 2018
Statut
Membre
Dernière intervention
27 avril 2023
14 janv. 2020 à 18:07
14 janv. 2020 à 18:07
Bonsoir,
je vous remercie pour votre réponse.
J'ai compris d’où vient le problème mais maintenant.
Dans mon code je vide la table doublon à chaque fois avant de la remplir avec une requête select count(*).
Malgré la présence de données dans la table Doublon (24 enregistrements) , le fecth_object affiche 0 au lieu de 24 comme si la partie delete venait après le remplissage de la table.
Le soucis maintenant c'est comment éviter ca?
Voici le code
//vider table doublon
$req_supDoubl="DELETE FROM Doublon ";
$requete_supDoubl = odbc_do($conn, $req_supDoubl) ;
//Recherche de doublons dans PointTemp et remplissage table Doublon
$req_doubl=("INSERT INTO Doublon
SELECT COUNT(*) AS nbr_doublon, CodeAnalytique, DatePointage, Matricule, TypePointage
FROM PointTemp
GROUP BY CodeAnalytique, DatePointage, Matricule, TypePointage
HAVING COUNT(*) > 1");
$requete_doubl = odbc_do($conn, $req_doubl) ;
//calcul nombre de doublon
$reqNbDoublon= "SELECT COUNT (*) AS nb FROM Doublon";
$requete= odbc_do($conn, $reqNbDoublon) ;
if($resultat= odbc_fetch_object($requete))
{
$nbDoublon =$resultat->nb;
}
echo ($nbDoublon);
je vous remercie pour votre réponse.
J'ai compris d’où vient le problème mais maintenant.
Dans mon code je vide la table doublon à chaque fois avant de la remplir avec une requête select count(*).
Malgré la présence de données dans la table Doublon (24 enregistrements) , le fecth_object affiche 0 au lieu de 24 comme si la partie delete venait après le remplissage de la table.
Le soucis maintenant c'est comment éviter ca?
Voici le code
//vider table doublon
$req_supDoubl="DELETE FROM Doublon ";
$requete_supDoubl = odbc_do($conn, $req_supDoubl) ;
//Recherche de doublons dans PointTemp et remplissage table Doublon
$req_doubl=("INSERT INTO Doublon
SELECT COUNT(*) AS nbr_doublon, CodeAnalytique, DatePointage, Matricule, TypePointage
FROM PointTemp
GROUP BY CodeAnalytique, DatePointage, Matricule, TypePointage
HAVING COUNT(*) > 1");
$requete_doubl = odbc_do($conn, $req_doubl) ;
//calcul nombre de doublon
$reqNbDoublon= "SELECT COUNT (*) AS nb FROM Doublon";
$requete= odbc_do($conn, $reqNbDoublon) ;
if($resultat= odbc_fetch_object($requete))
{
$nbDoublon =$resultat->nb;
}
echo ($nbDoublon);
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
15 janv. 2020 à 08:29
15 janv. 2020 à 08:29
Bonjour,
Je ne sais pas pourquoi les requêtes ne s'exécuteraient pas dans l'ordre.
Par contre, si tu fais l'INSERT juste avant, tu as une autre solution : récupérer le odbc_num_rows de l'INSERT, sans passer par une seconde requête :)
Ça deviendrait donc :
Xavier
Je ne sais pas pourquoi les requêtes ne s'exécuteraient pas dans l'ordre.
Par contre, si tu fais l'INSERT juste avant, tu as une autre solution : récupérer le odbc_num_rows de l'INSERT, sans passer par une seconde requête :)
Ça deviendrait donc :
//Recherche de doublons dans PointTemp et remplissage table Doublon $req_doubl=("INSERT INTO Doublon SELECT COUNT(*) AS nbr_doublon, CodeAnalytique, DatePointage, Matricule, TypePointage FROM PointTemp GROUP BY CodeAnalytique, DatePointage, Matricule, TypePointage HAVING COUNT(*) > 1"); $requete_doubl = odbc_do($conn, $req_doubl) ; //calcul nombre de doublon $nbDoublon = odbc_num_rows($requete_doubl); echo ($nbDoublon);
Xavier
samyb2313
Messages postés
52
Date d'inscription
mercredi 23 février 2011
Statut
Membre
Dernière intervention
15 janvier 2020
5
>
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
15 janv. 2020 à 09:55
15 janv. 2020 à 09:55
Excellent :)
isa.dama
Messages postés
30
Date d'inscription
mardi 15 mai 2018
Statut
Membre
Dernière intervention
27 avril 2023
>
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
17 janv. 2020 à 12:36
17 janv. 2020 à 12:36
Bonjour,
je vous remercie pour votre réponse.
En appliquant ce que vous avez demandé toujours le même soucis.
Le résultat affiche 0 malgré la présence des données dans la table Doublon.
C'est comme si effectivement mes requêtes ne mésentente pas dans l'ordre.
Je galère depuis des jours maintenant avec ça.
toujours pas de solution
je vous remercie pour votre réponse.
En appliquant ce que vous avez demandé toujours le même soucis.
Le résultat affiche 0 malgré la présence des données dans la table Doublon.
C'est comme si effectivement mes requêtes ne mésentente pas dans l'ordre.
Je galère depuis des jours maintenant avec ça.
toujours pas de solution
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
>
isa.dama
Messages postés
30
Date d'inscription
mardi 15 mai 2018
Statut
Membre
Dernière intervention
27 avril 2023
17 janv. 2020 à 13:50
17 janv. 2020 à 13:50
Et tu n'as aucun message d'erreur ?
Tu es sûr que ta requête a bien été exécutée : la base est remplie comme tu l'attends ?
Sinon, rajoute ça après le odbc_do :
Xavier
Tu es sûr que ta requête a bien été exécutée : la base est remplie comme tu l'attends ?
Sinon, rajoute ça après le odbc_do :
if ($requete_doubl === FALSE) echo "Erreur SQL : " . odbc_errormsg($conn);
Xavier
isa.dama
Messages postés
30
Date d'inscription
mardi 15 mai 2018
Statut
Membre
Dernière intervention
27 avril 2023
>
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
17 janv. 2020 à 15:12
17 janv. 2020 à 15:12
Bonsoir,
la base est bien renseignée puisque je vois son contenu quand je l'ouvre.
La requête fonctionne bien quand je l'exécute directement dans access et ça affiche bien le nombre d'enregistrement.
En ajoutant le code que vous m'avez envoyer je ne recois aucun message d'erreur.
Je suppose que c'est pour s’assurer que la requête s'exécute bien.
La requête s'exécute sauf qu'elle ne me renvoie pas le résultat attendu.
Merci d'avance!
la base est bien renseignée puisque je vois son contenu quand je l'ouvre.
La requête fonctionne bien quand je l'exécute directement dans access et ça affiche bien le nombre d'enregistrement.
En ajoutant le code que vous m'avez envoyer je ne recois aucun message d'erreur.
Je suppose que c'est pour s’assurer que la requête s'exécute bien.
La requête s'exécute sauf qu'elle ne me renvoie pas le résultat attendu.
Merci d'avance!
7 janv. 2020 à 14:00
je vous remercie pour votre disponibilité.
J'ai essayé d'appliquer vos indications mais le soucis que j'ai actuellement est que ma condition if n'est plus fonctionnelle.
Seule la condition else s'exécute à tous les coups.
Pourtant, le résultat de ma requête retourne le chiffre 28 quand je l'exécute hors de mon code
Que faire?