IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Tableaux] Problème débutante : vérifier l'existance d'un tableau


Sujet :

Langage PHP

  1. #1
    Membre du Club Avatar de alexfrere
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 60
    Points : 40
    Points
    40
    Par défaut [Tableaux] Problème débutante : vérifier l'existance d'un tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    	$sql = "SELECT * FROM users WHERE (company_id = '$company_id')";
    	$sth = mssql_query($sql);
    	while ( $ligne = mssql_fetch_array( $sth ) ) {
        	     $tab[] = $ligne;
    	}
    	mssql_free_result($sth);
    	return $tab;
    Bonjour, ce code se trouve dans une fonction qui me retourne lla liste des utilisateurs par sociétésous forme d'un tableau, le problème c'est que j'ai l'erreur suivante lorsqu'il n'y a pas d'utilisateur dans une société qui existe bien :
    Warning: mssql_fetch_array(): supplied argument is not a valid Sybase result resource in ...
    merci

  2. #2
    Membre averti
    Inscrit en
    Janvier 2004
    Messages
    533
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 533
    Points : 313
    Points
    313
    Par défaut
    Apparemment, le problème viendrait de ta requête SQL.

    Fais un echo $sql; et teste ta requête dans ton SGBD.
    N'oubliez pas le tag .
    Merci de ne pas envoyer de MP pour des problèmes techniques.

  3. #3
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    C'est utile les parenthèses dans le WHERE
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  4. #4
    Membre du Club Avatar de alexfrere
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 60
    Points : 40
    Points
    40
    Par défaut
    non je viens de tester, ma requete fonctionne mais ne me renvoi aucun enregistrement puisqu'il n'y a pas d'utilisateur pour cette company

  5. #5
    Rédacteur

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 695
    Points : 1 071
    Points
    1 071
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if (mssql_num_rows($sth) > 0)
    {
    ...
    }
    else
    {
    ...
    }
    www.php.net/mssql_num_rows
    Articles sur developpez.com
    - Gestion des exceptions avec PHP5
    - Chiffrement et hash en PHP contre l'attaque Man in the middle
    - Aedituus - Espace membre sécurisé en PHP5

  6. #6
    Membre averti
    Inscrit en
    Janvier 2004
    Messages
    533
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 533
    Points : 313
    Points
    313
    Par défaut
    Essaie de mettre l'alternative suivante avant la boucle while :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (mssql_num_rows($sth) != 0)
    {
          // boucle while
    }
    N'oubliez pas le tag .
    Merci de ne pas envoyer de MP pour des problèmes techniques.

  7. #7
    Membre du Club Avatar de alexfrere
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 60
    Points : 40
    Points
    40
    Par défaut
    j'ai toujours cette erreur la :
    Warning: mssql_num_rows(): supplied argument is not a valid Sybase result resource in ... ligne 71
    et la ligne 71 est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (mssql_num_rows($sth) != 0){
    ou :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (mssql_num_rows($sth) > 0){

  8. #8
    Membre du Club Avatar de alexfrere
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 60
    Points : 40
    Points
    40
    Par défaut
    ça me renvoi bien le nombre de ligne lorsqu'il y en a mais ça renvoi pas zero s'il n'y en a pas, ça ne renvoi rien.

  9. #9
    Membre averti
    Inscrit en
    Janvier 2004
    Messages
    533
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 533
    Points : 313
    Points
    313
    Par défaut
    Essaie avec cette nouvelle condition :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (isset(mssql_num_rows($sth))) {
    Si ça ne marche pas, fais un echo de isset(mssql_num_rows($sth) pour voir ce que cela renvoie.
    N'oubliez pas le tag .
    Merci de ne pas envoyer de MP pour des problèmes techniques.

  10. #10
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    419
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Février 2005
    Messages : 419
    Points : 532
    Points
    532
    Par défaut
    Vu l'erreur je continue a croire que c'est une erreur de requete ou de connexion.

    Essaye de faire ça pour voir si ça t'affiche un message d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sth = mssql_query($sql);
    echo mssql_get_last_message() ;

  11. #11
    Membre du Club Avatar de alexfrere
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 60
    Points : 40
    Points
    40
    Par défaut
    Citation Envoyé par Sylvain71
    Vu l'erreur je continue a croire que c'est une erreur de requete ou de connexion.

    Essaye de faire ça pour voir si ça t'affiche un message d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sth = mssql_query($sql);
    echo mssql_get_last_message() ;
    il me renvoi :
    Changed database context to 'my_db'

  12. #12
    Membre du Club Avatar de alexfrere
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 60
    Points : 40
    Points
    40
    Par défaut
    mais c'est pas plutot du au traitement, se que je vous fait voir est une fonction qui retourne un tableau.
    ensuite, je récupère donc un tableau dans mon code et c'est peut etre parce que le tableau est vide que j'ai une erreur sur mon traitement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    f
    oreach ( $users as $ligne ) {
    	print $ligne['id'].'<br />'; 
    }

  13. #13
    Membre averti
    Inscrit en
    Janvier 2004
    Messages
    533
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 533
    Points : 313
    Points
    313
    Par défaut
    Je pense que c'est vraiment un problème dû à la requête car, si le tableau est vide, ce n'est pas ce message d'erreur qui apparait.

    Essaie de voir ce que j'ai dit plus haut, je ne sais pas si tu l'as vu.
    N'oubliez pas le tag .
    Merci de ne pas envoyer de MP pour des problèmes techniques.

  14. #14
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    419
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Février 2005
    Messages : 419
    Points : 532
    Points
    532
    Par défaut
    Non non c'est pas une erreur de traitement, c'est une erreur au niveau de cette ligne là :
    Elle ne te retourne pas une ressource mssql comme elle devrait.
    C'est pour ça que les autres fonctions telles que mssql_num_rows n'acceptent pas que tu leur passe en argument ce retour.

    Je pense que tu devrais te concentrer sur ce message :
    Changed database context to 'my_db'
    Par contre je suis désolé mais je ne m'y connais pas assez en sqlserver pour te dire d'ou vient ce message

  15. #15
    Membre du Club Avatar de alexfrere
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 60
    Points : 40
    Points
    40
    Par défaut
    en fait je fais un treeview avec des Nodes parent COMPANY et des Nodes enfants USER.
    Mon treeview fonctionne correctement sauf dans le cas ou la société n'a pas d'utilisateur, c'est pour ça que la fonction est bonne puisque elle fonctionne dans pratiquement tous les cas.
    non ?

  16. #16
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    419
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Février 2005
    Messages : 419
    Points : 532
    Points
    532
    Par défaut
    Si tu n'as pas de probleme avec l'anglais, essaye de fouiller la dedans :
    http://www.google.fr/search?hl=fr&q=...a=lr%3Dlang_fr

  17. #17
    Membre du Club Avatar de alexfrere
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 60
    Points : 40
    Points
    40
    Par défaut
    et ben j'ai trouvé toute seule !!

  18. #18
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    419
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Février 2005
    Messages : 419
    Points : 532
    Points
    532
    Par défaut
    Oui avec ça tu vas réussir à éviter d'afficher les messages d'erreur qu'il y avait avant, mais je ne suis pas sur que ça veuille dire que ça marche.
    Essaye en mettant des entreprises dans ta base, et regarde si ça fonctionne.
    Parce que vu l'erreur que tu avais avant j'ai de très gros doutes.

  19. #19
    Membre du Club Avatar de alexfrere
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 60
    Points : 40
    Points
    40
    Par défaut
    ben ya des entreprise et des utilisateur et ça fonctionne, et je n'ai pas d'erreur lorsque il n'y en a pas

  20. #20
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    419
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Février 2005
    Messages : 419
    Points : 532
    Points
    532
    Par défaut
    Oky bon ben tant mieux alors.
    Le fonctionnement de SQLserver n'a donc pas l'air d'etre comme celui de mysql.
    J'aurai cru ! ça y ressemblait beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Vérifier si un fichier existe
    Par Sojiro Okita dans le forum x86 32-bits / 64-bits
    Réponses: 6
    Dernier message: 24/04/2008, 09h03
  2. [Débutante][Xslt] vérifier l'existence d'un attribut
    Par sab_etudianteBTS dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 03/03/2008, 16h12
  3. [Débutant]Vérifier existance d'un enregistrement dans une table
    Par fabiolous dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 25/04/2007, 12h01
  4. Réponses: 12
    Dernier message: 08/01/2007, 00h15
  5. [Tableaux] problème de code de débutant
    Par polo42 dans le forum Langage
    Réponses: 8
    Dernier message: 07/07/2006, 17h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo