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 :

MAJ de trois chaines de caracteres


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    poireau
    Inscrit en
    Juin 2008
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : poireau

    Informations forums :
    Inscription : Juin 2008
    Messages : 98
    Points : 74
    Points
    74
    Par défaut MAJ de trois chaines de caracteres
    Bonsoir

    j'ai trois chaines dans une BD
    l'une concerne les tailles de mes articles sous cette forme
    $array1="38;40;42;44;46;48";

    la seconde concerne les quantités disponibles
    $array2="0;2;5;1;3;3";

    la troisième le nombre de vendus
    $array3="0;2;5;0;0;0";

    je voudrais mettre à jour les deux chaines $array2 et $array3 relativement à une seule taille (par exemple 1 article en moins en taille 42 dans $array2 et 1 en plus toujours en 42 dans $array3)

    ce qui donnerait en résultat
    $array1="38;40;42;44;46;48";(rien de changé)
    $array2="0;2;4;1;3;3";(1 en moins en position 3 dans la chaine)
    $array3="0;2;5;0;0;0";(1 en plus en position 3 dans la chaine)


    merci de votre illumination

  2. #2
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Bonjour,

    Un petit coup de array_search permet de retrouver la clé correspondant à une taille donnée. Il suffit ensuite d'incrémenter / décrémenter la valeur contenue à cet indice dans les tableaux 2 et 3...

  3. #3
    Membre régulier
    Profil pro
    poireau
    Inscrit en
    Juin 2008
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : poireau

    Informations forums :
    Inscription : Juin 2008
    Messages : 98
    Points : 74
    Points
    74
    Par défaut
    bonsoir Eusebe

    c'est justement la modification à l'indice x de la chaine que je ne sais pas faire

    comment retirer ou remplacer l'element[x] de la chaine ..

    sinon j'ai une formule à base d'explode(mes elements etant séparés par des , tableau , count , while et de comparaison (pour la taille ), et d'implode ensuite mais cela me semble un peu tortueux et j'imaginais qu'il y avait quelque chose de plus direct ..

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Points : 1 357
    Points
    1 357
    Par défaut
    Bonsoir,

    Outre la structure complètement tordue des données, pas besoin de 'count', ni de 'while'. 'explode', 'implode' et 'array_search' (comme te l'a dit Eusebe) suffisent.
    Personnellement, je commencerais par revoir le modèle de données. Mais comme je me suis éveillé de bonne humeur :
    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
    34
    35
    36
    <?php
      //-- données de base -----------------------------------------------------------
      $array1 = '38;40;42;44;46;48';  
      $array2 = '0;2;5;1;3;3';
      $array3 = '0;2;5;0;0;0';
     
      //-- nouveau mouvement ---------------------------------------------------------
      $tailleVendu = 42;
      $qteVendu = 1;
     
      //-- affichage des données de base ---------------------------------------------
      echo 'taille => ' . $array1 . '<br>';
      echo 'dispo => ' . $array2 . '<br>';
      echo 'vendu => ' . $array3 . '<br><br>';
     
      //-- création des tableaux -----------------------------------------------------
      $vendu =  explode(';', $array3);
      $taille = explode(';', $array1);
      $dispo =  explode(';', $array2);
     
      //-- recherche dans le tableau la clé correspondant à la taille ----------------
      $cle = array_search($tailleVendu, $taille);
     
      //-- mise à jour des éléments --------------------------------------------------
      $dispo[$cle] -= $qteVendu;
      $vendu[$cle] += $qteVendu;
     
      //-- nouvelles données de base -------------------------------------------------
      $array2 = implode(';', $dispo);
      $array3 = implode(';', $vendu);
     
      //-- affichage des données de base modifiées -----------------------------------
      echo 'taille => ' . $array1 . '<br>';
      echo 'dispo => ' . $array2 . '<br>';
      echo 'vendu => ' . $array3 . '<br><br>';
    ?>

  5. #5
    Membre régulier
    Profil pro
    poireau
    Inscrit en
    Juin 2008
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : poireau

    Informations forums :
    Inscription : Juin 2008
    Messages : 98
    Points : 74
    Points
    74
    Par défaut merci
    En fouinant cette nuit , j'avais trouvé un truc qui marchait avec explode , count, while, if , implode et tout le fourbi mais ta formule me semble bien plus ergonomique et colle , dans la forme , exactement à ce que je cherchais . J'adopte .. Merci à tous

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 06/11/2007, 12h36
  2. Réponses: 13
    Dernier message: 13/06/2003, 14h13
  3. Pb Update avec chaine de caractere
    Par JuJu° dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 28/05/2003, 15h58
  4. [LG]comparaison de chaines de caracteres
    Par thesam dans le forum Langage
    Réponses: 6
    Dernier message: 20/05/2003, 22h41
  5. Probleme sur les chaines de caractere
    Par scorpiwolf dans le forum C
    Réponses: 8
    Dernier message: 06/05/2002, 19h01

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