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 :

Ecriture d'une condition simple


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 261
    Points : 125
    Points
    125
    Par défaut Ecriture d'une condition simple
    La condition est
    Si la table cdt_params existe, faire une requete
    Les deux coditions ci-dessous sont-elles equivalentes ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (mysql_query('SELECT * FROM `cdt_params`')){
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $res='';
    if ($res == mysql_query('SELECT * FROM `cdt_params`')){
    Merci à tous

  2. #2
    Modérateur
    Avatar de blueice
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2003
    Messages
    3 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 487
    Points : 5 134
    Points
    5 134
    Par défaut
    A essayer :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    function mysql_table_exists($table , $db) {
      $requete = 'SHOW TABLES FROM '.$db.' LIKE \''.$table.'\'';
      $exec = mysql_query($requete);
      return mysql_num_rows($exec);
    }

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 261
    Points : 125
    Points
    125
    Par défaut
    Merci pour la fonction !

    Revenant sur mes deux ecritures, sont-elles cependant correctes ?
    Sont-elles équivalentes ?

    Qu'apporte de plus la fonction ?

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    138
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2005
    Messages : 138
    Points : 173
    Points
    173
    Par défaut
    Question:

    Quel est l'intérêt de faire ta requete dans la structure conditionnelle car tu ne stocke pas la ressource en cas de succès. En plus un "select *". Si tu tombe sur une table enorme ton code va ramé sévère juste pour tester l'existence de la table.

    Les deux conditions ne sont pas equivalente bien sur suffit de réflechir a ce que tu compare.
    Le première attend true qui n'est, au passage, jamais renvoyé par cette fonction
    La seconde teste le résultat à une String vide

    Tout est dans la doc php!
    Google est ton ami !
    http://fr.php.net/mysql_query

    La fonction de blueice par contre, elle est dix-mille fois plus pertinante dans ton cas si tu veux juste testé l'existance et pas utilisé les ressources derriere.

  5. #5
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Bonjour

    Ta première condition sera validée si il n'y a aucune erreur d'exécution. Donc théoriquement, si la table n'existe pas, il aura une erreur, donc la condition ne sera pas validée. Ceci dit, ce n'est pas terrible comme test, vu que toute erreur d'exécution invalidera la condition (que ce soit une erreur de syntaxe, une erreur de connexion...)

    Ta deuxième condition est un peu bancale, parce qu'elle exploite le fait qu'une chaine vide est équivalente à la valeur NULL, qui est elle-même considérée comme le booléen FALSE... Mais théoriquement, toute erreur (même principe que précédemment) devrait valider la condition. Donc grosso modo, ta deuxième condition fait exactement l'inverse de ta première. Mais syntaxiquement, c'est vraiment moche (et il y a de bonnes chances pour que ça ne fonctionne pas)

    La fonction de blueice fait exactement ce que tu demandes : elle vérifie si il existe une table portant un nom donné dans une base de donnée donnée. Si c'est le cas, elle renvoie 1 (ou true), sinon elle renvoie 0 (ou false).

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 261
    Points : 125
    Points
    125
    Par défaut
    Trés clair !
    Merci à tous - Bonne journée

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/06/2013, 21h06
  2. une condition simple qui ne marche pas
    Par NulenVBA dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/12/2008, 18h34
  3. Simple ecriture dans une div.
    Par DidUngar dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 07/12/2007, 09h00
  4. Ecriture d'une procedure stockée XP
    Par WOLO Laurent dans le forum Langage SQL
    Réponses: 2
    Dernier message: 17/07/2003, 13h09
  5. Réponses: 13
    Dernier message: 14/06/2003, 22h15

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