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 :

problème avec un switch


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2003
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2003
    Messages : 120
    Points : 64
    Points
    64
    Par défaut problème avec un switch
    Bonjour,
    voici mon souci

    j'ai un switch imbriqué comme suit

    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
    switch($champ)
    {
    case 'Titre':
       switch ($langue)
       {
       case 'fr':
       $query = mysql_query("UPDATE matable SET Titre='$valeur' WHERE Num='$id'",$dblink);
       break;
       case 'en':
       $query_en = mysql_query("UPDATE matable SET Titre_en='$valeur' WHERE Num='$id'",$dblink); 
       break;
       default :
       $query = mysql_query("UPDATE ".$table." SET ".$champ."='$valeur' WHERE Num='$id'",$dblink); 
       break;
      }//fin switch langue
    break;
     
    case 'Titre_original':
      $query = mysql_query("UPDATE ".$table." SET ".$champ."='$valeur' WHERE Num='$id'",$dblink);
    break;
     
    etc.
    }
    ce code fait partie d'un script PHP qui s'exécute via une fonction javascript Ajax, en fonction de la valeur de certaines variables, et notamment la variable $langue

    mon problème c'est qu'en fonction de la variable $langue, j'ai l'impression qu'il n'exécute jamais la bonne instruction case et donc il ne met pas du tout à jour ma base de données comme je le souhaite

    Je voudrais savoir comment je peux tester à l'intérieur de ce script PHP les valeurs de mes variables, pour comprendre pourquoi cela ne fonctionne pas bien

    merci
    http://www.medianeo.net

  2. #2
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Février 2014
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2014
    Messages : 26
    Points : 20
    Points
    20
    Par défaut
    POur ma part, pour tester mes boucles ou switch je fais un avant le break:
    \"javascript:alert('".$valeur."'); \"

    Mais peut être je n'ai pas compris correctement ton problème.

  3. #3
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    Et moi, je vais répondre carrément à côté.
    Mais ton switch imbriqué me paraît plus clair transformé en système conditionnel sur un seul niveau.
    Le switch n'est pas toujours plus lisible, ça dépend de la problématique.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    if($champ=='Titre' && $langue=='fr'){
    	$titre='Titre';
    	$query = mysql_query("UPDATE matable SET $titre='$valeur' WHERE Num='$id'",$dblink);
    }
    elseif($champ=='Titre' && $langue=='en'){
    	$titre='Titre_en';
    	$query_en = mysql_query("UPDATE matable SET $titre='$valeur' WHERE Num='$id'",$dblink);//c'est exprès ici que tu changes le nom de $query ?
    }
    elseif($champ=='Titre'{
    	$query = mysql_query("UPDATE ".$table." SET ".$champ."='$valeur' WHERE Num='$id'",$dblink); 
    }
    elseif($champ=='Titre_original'){
    	$query = mysql_query("UPDATE ".$table." SET ".$champ."='$valeur' WHERE Num='$id'",$dblink); 
    }
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  4. #4
    Membre actif Avatar de jisig
    Homme Profil pro
    null
    Inscrit en
    Avril 2014
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Indonésie

    Informations professionnelles :
    Activité : null

    Informations forums :
    Inscription : Avril 2014
    Messages : 146
    Points : 273
    Points
    273
    Par défaut
    Je commencerais par tester comme suit :

    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
     
    echo '****' . $champ;
    echo '####' .$langue;
    switch($champ)
    {
    case 'Titre':
       echo '****test****';
       switch ($langue)
       {
       case 'fr':
       $query = mysql_query("UPDATE matable SET Titre='$valeur' WHERE Num='$id'",$dblink);
       break;
       case 'en':
       $query_en = mysql_query("UPDATE matable SET Titre_en='$valeur' WHERE Num='$id'",$dblink); 
       break;
       default :
       $query = mysql_query("UPDATE ".$table." SET ".$champ."='$valeur' WHERE Num='$id'",$dblink); 
       break;
      }//fin switch langue
    break;
     
    case 'Titre_original':
      echo '****test1****';
      $query = mysql_query("UPDATE ".$table." SET ".$champ."='$valeur' WHERE Num='$id'",$dblink);
    break;
     
    etc.
    }
    Afin de voir s'il passe déjà dans ton premier niveau.

    Jisig
    Même une feuille de papier est plus légère si on la porte à deux.

  5. #5
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Citation Envoyé par aztec Voir le message
    ce code fait partie d'un script PHP qui s'exécute via une fonction javascript Ajax, en fonction de la valeur de certaines variables, et notamment la variable $langue

    Je voudrais savoir comment je peux tester à l'intérieur de ce script PHP les valeurs de mes variables, pour comprendre pourquoi cela ne fonctionne pas bien

    merci
    Le plus simple est de tester ton script séparément, indépendamment d'ajax. Tu lui fourni un jeu de valeur valides pour voir le comportement.

    Ce serait plus simple aussi pour le débugage, d'écrire tes requêtes avant de les exécuter. Cela permet de les afficher pour voir si la chaine est bien construite avec les variables attendues.
    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
    switch($champ)
    {
    case 'Titre':
       switch ($langue)
       {
       case 'fr':
       $query = "UPDATE matable SET Titre='$valeur' WHERE Num='$id'";
       break;
       case 'en':
       $query = "UPDATE matable SET Titre_en='$valeur' WHERE Num='$id'"; 
       break;
       default :
       $query = "UPDATE ".$table." SET ".$champ."='$valeur' WHERE Num='$id'"; 
       break;
      }//fin switch langue
    break;
     
    // exécution de la requête  (or die (mysql_error($dblink)) en phase débugage uniquement);
    $update = mysql_query($query,$dblink) or die(mysql_error($dblink));
     
    // en débugage on fait afficher la requête
    echo $query;
    }
    Ensuite si ton code fonctionne correctement, c'est le passage de variable qui doit poser problème. Utilise un outil comme firebug pour firefox ou un outil de chrome pour faire afficher la console et voir les variables transmises vers ta page ajax. Sinon il y a aussi les alert en javascript pour contrôler les variables avant transmission mais c'est plus laborieux.

    Pour le reste je ne suis pas très partisan non plus de ce type de codage. Les switch imbriqués d'une part, et surtout le fait que tu utilise une colonne de ta bdd par langue. Donc si tu veux rajouter une langue tu dois rajouter une colonne... Si tu en es au début de ton travail tu ferais bien de remettre tout à plat et de partir sur de bonnes bases.

Discussions similaires

  1. Problème avec un switch
    Par sibile dans le forum Langage
    Réponses: 2
    Dernier message: 07/08/2008, 18h09
  2. petit problème avec mon switch
    Par beegees dans le forum C++
    Réponses: 2
    Dernier message: 03/05/2008, 19h52
  3. Problème avec un switch !
    Par Dark_Alex69 dans le forum Débuter
    Réponses: 16
    Dernier message: 31/10/2007, 02h33
  4. problème avec un switch
    Par Tobleron dans le forum Langage
    Réponses: 3
    Dernier message: 19/02/2007, 22h50
  5. Problème avec un switch contenant des strings
    Par dessinateurttuyen dans le forum Langage
    Réponses: 6
    Dernier message: 18/07/2006, 12h56

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