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 :

opérateurs OU inclusif/excusif


Sujet :

Langage PHP

  1. #1
    Membre averti Avatar de camyo
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Juin 2004
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Juin 2004
    Messages : 400
    Points : 386
    Points
    386
    Par défaut opérateurs OU inclusif/excusif
    Bonjour,


    Je dois avouer ne pas comprendre ou j'ai raté mon coup,
    ça a l'air tout bête et ça doit l'être ... mais quand on a le nez dans le guidon, des fois y'a des trucs simple qu'on voit pas
    (enfin, a moi , ça arrive ... )

    je m explique ..
    je fais un test simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (!isset($ref) or $ref != $tab[0] )  // Si ID de commande n'existe pas ou qu'il est diffèrent du précédent
    		{ // CODE A EXÉCUTER }
    Donc : SI $ref n'existe pas OU $ref est differnt de $tab[0]
    j'exécute mon code ..

    MAIS ... il se passe ça :
    if (!isset(081213170536CAS) or 081213170536CAS != 081213170536CAS )
    ça exécute quand même mon code ..

    Quelqu'un comprendrait pourquoi ?

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    C'est simple : penses aux parenthèses :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (( ! isset($ref)) || ($ref != $tab[0]))

  3. #3
    Membre averti Avatar de camyo
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Juin 2004
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Juin 2004
    Messages : 400
    Points : 386
    Points
    386
    Par défaut
    j'y au cru .. j'ai testé .. mais le code s'exécute quand même ...

    if ((!isset(081213170536CAS)) || (081213170536CAS != 081213170536CAS ))

  4. #4
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Ah bon, alors essaies ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (( ! isset($ref)) || (((string)$ref) != ((string)$tab[0])))
    Tu as peut-être aussi une existence de $ref.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ((strlen($ref) == 0) || (((string)$ref) != ((string)$tab[0])))

  5. #5
    Membre averti Avatar de camyo
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Juin 2004
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Juin 2004
    Messages : 400
    Points : 386
    Points
    386
    Par défaut
    Ca ne donne rien non plus ...

    ça à l'air tout simple .. et pourtant ça veux pas ...

    vraiment, je comprend pas ...

  6. #6
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Il faut creuser,

    Tu dois sortir les longueurs et les valeurs des différentes variables avant l'exécution du test : $ref et $tab[0] histoire de bien voir ce que tu manipules avant le if.

  7. #7
    Membre averti Avatar de camyo
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Juin 2004
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Juin 2004
    Messages : 400
    Points : 386
    Points
    386
    Par défaut
    Mon code en entier ..

    le but étant d'importer des CSV, ( des commandes)
    si la ref client existe, sauter l'étape ajout de compte client
    ( une commande peux prendre autant de ligne que d'articles)

    donc le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    // TABLE CLIENT		
    		if ((strlen($ref) == 0) || (((string)$ref) != ((string)$tab[0])))  // Si la ref client n'existe pas ou qu'elle est differente de la precedente
    		{
    				//$id = $tab[0];
    				$ref = $tab[0];
    				$raison = $tab[1];
    				$entreprise = $tab[2];
    				$siret = $tab[3];
    				$intracom = $tab[4];
    				$nom = $tab[5];
    				$prenom = $tab[6];
    				$telfixe = $tab[7];
    				$telport = $tab[8];
    				$email = $tab[9];
    				$motdepasse = $tab[10];
    				$parrain = $tab[11];
    				$type = $tab[12];
    				$poucentage = $tab[13];
    				$jour = $tab[14];
    				$mois = $tab[15];
    				$annee = $tab[16];
    				$anniv = $tab[17];
    				$lang = $tab[18];
    				$fbpays = $tab[19];
    				$province = $tab[20];
     
     
    		$sql =" INSERT INTO client (id, ref, raison, entreprise, siret, intracom, nom, prenom, adresse1, adresse2, adresse3, cpostal, ville, pays, telfixe, telport, email, motdepasse, parrain, type, pourcentage, jour, mois, annee, anniv, lang, fbpays, province) 
    		VALUES ('','".$ref."', '".$raison."', '".$entreprise."', '".$siret."', '".$intracom."', '".$nom."', '".$prenom."', '".$adresse1."', '".$adresse2."', '".$adresse3."', '".$cpostal."', '".$ville."', '".$pays."', '".$telfixe."', '".$telport."', '".$email."', '".$motdepasse."', '".$parrain."', '".$type."', '".$pourcentage."', '".$jour."', '".$mois."', '".$annee."', '".$anniv."', '".$lang."', '".$fbpays."', '".$province."') ";
    		$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());	
     
    	$id_client = mysql_insert_id(); // <= dernier ID table client
    	}
    ça semble évident .. et pourtant y'a un bug ..

  8. #8
    Membre averti Avatar de camyo
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Juin 2004
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Juin 2004
    Messages : 400
    Points : 386
    Points
    386
    Par défaut
    Citation Envoyé par Xysyo Voir le message
    Il faut creuser,

    Tu dois sortir les longueurs et les valeurs des différentes variables avant l'exécution du test : $ref et $tab[0] histoire de bien voir ce que tu manipules avant le if.
    je me suis dis ça aussi c'est pour ça qu'avant l'exécution du script j'ai ajouté:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "if ((strlen($ref) == 0) || (((string)$ref) != ((string)$tab[0]))) ";
    sur mon test ça donne :
    ligne 1 ( $ref n'existe pas, donc il ne peux être égal à $tab[0]
    if ((strlen() == 0) || (((string)) != ((string)081213170536CAS)))
    ligne 2 la ref existe et c'est la même
    if ((strlen(081213170536CAS) == 0) || (((string)081213170536CAS) != ((string)081213170536CAS)))
    ... i'm lost

  9. #9
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    tu as un problème avec tes données parce qu'un test aussi simple passe sans problème chez moi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    <?php
     
    # TEST 1
    $ref = '081213170536CAS';
    $tab[0] = '081213170536CAS';
     
    if ((strlen($ref) == 0) || ($ref != $tab[0])) {
       echo 'different';
    } else {
       echo 'identique'; // -> affiché
    }
     
    # TEST 2
    $ref = '';
    $tab[0] = '081213170536CAS';
     
    if ((strlen($ref) == 0) || ($ref != $tab[0])) {
       echo 'different'; // -> affiché
    } else {
       echo 'identique';
    }
     
    # TEST 3
    $ref = '123456789';
    $tab[0] = '081213170536CAS';
     
    if ((strlen($ref) == 0) || ($ref != $tab[0])) {
       echo 'different'; // -> affiché
    } else {
       echo 'identique';
    }
     
    ?>
    Donc si le if s'exécute, c'est que tu manipules des données qui vérifient le test.
    Tu parle de CSV -> comment tu découpes tes lignes, tes données ? Quel est l'encodage du fichier, n'aurais-tu pas des caractères foireux en fin de ligne qui poseraient problème ? ...

Discussions similaires

  1. [Binaire] Opérateurs de rotation dee bits ?
    Par Tifauv' dans le forum C
    Réponses: 3
    Dernier message: 09/11/2017, 11h29
  2. Opérateur de statistique
    Par Phil951 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 26/01/2004, 15h12
  3. Opérateur like
    Par Troopers dans le forum ASP
    Réponses: 3
    Dernier message: 15/09/2003, 19h19
  4. opérateur non applicable à ce type d'opérande
    Par Amon dans le forum Langage
    Réponses: 3
    Dernier message: 11/06/2003, 18h07
  5. [imprecis]Réaliser a^n avec seulement l'opérateur d'addition
    Par Amon dans le forum Algorithmes et structures de données
    Réponses: 18
    Dernier message: 08/11/2002, 22h22

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