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] Extraction de chaîne de caractère et suppression de caracère


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 87
    Points : 46
    Points
    46
    Par défaut [Tableaux] Extraction de chaîne de caractère et suppression de caracère
    Suite à mon premier problème (résolu) j'arrive donc à insérer une chaîne de caractère 1/2/3/n.... dans un champ de ma première table.

    Mais le 2nd problème qui se pose est que chacune des variables que j'ai inséré dans la première table correspond à une champ texte (enfin VARCHAR) dans une seconde table. (ces variables sont des indexs en fait).
    Et donc je dois pour chaque suite de caractère de la forme 1/2/3/... les sortir depuis la table 1sous la forme :

    1
    2
    n
    (donc enlever les "/")

    Pour ensuite faire une recherche dans la table 2 pour sortir sous la forme

    Texte 1 ( correpondant à la valeur 1)
    Texte 2 ( correpondant à la valeur 2)
    Texte n ( correpondant à la valeur n)

    Il faudrait donc que je fasse une requête de type :

    Select Profil from profil where IdProfil = (tout les profils correspondant aux différents Id de la chaine 1,2,n ...)

    Je ne sais pas si c'est possible à réaliser sinon j'abandonne cette solution que j'avais employé pour eviter de surcharger la première base.
    Si quelqu'un à une idée , je creuse dessus mais ce n'est pas évident.

    Merci d'avance pour vos réponses.

  2. #2
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    pas la peine de faire un autre thread !

    tu utilises explode() pour faire l'opération inverse, tu obtiens donc un tableau sur lequel tu peux boucler pour faire une requete...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $var = "1/2/5/25";
    $tab = explode('/',$var);
     
    foreach ($tab as $valeur) {
       // requete du style :
       $sql = "SELECT * FROM `table` WHERE champs = $valeur";
    }

  3. #3
    Membre émérite
    Avatar de yiannis
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 494
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 494
    Points : 2 791
    Points
    2 791
    Par défaut
    pour enlever les / tu te set de la fonction php explode(), puis tu les mets sous la forme 1,2,n avec la fonction implode que tu stocke dans $ids (par exemple) puis apres tu fais ta requete de la forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select Profil from profil where IdProfil in (".$ids.)
    "Ce besoin de remords qui précède le Mal, que dis-je ! qui le crée..." E. CIORAN

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 87
    Points : 46
    Points
    46
    Par défaut
    Je regardais justement la fonction inverse.

    Merci beaucoup !!!

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 87
    Points : 46
    Points
    46
    Par défaut
    J'arrive donc à cela :

    $IdProfil = "1/2/5/25";
    $tab = explode('/',$IdProfil); (=> 1 2 5 25 logiquement)

    foreach ($tab as $valeur) {

    $query = "SELECT Profil FROM profils WHERE IdProfil= '$valeur' ";
    $result = mysql_query($query) or die('Erreur SQL !<br />'.$query.'<br />'.mysql_error());

    $data10=mysql_fetch_array($result);

    echo ($data['ProfilGassi']);
    exit;
    }

    Mais il ne me sort que la première valeur associée soit equivalent à l'id 1.


    Je débute un peu dans ces trucs là , merci de votre patience

  6. #6
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut

    Ca sort d'où $data ?

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 87
    Points : 46
    Points
    46
    Par défaut
    sorry, je refais çà proprement :

    Je recupere l' Idprofil dans une des tables sous la forme "2/3/4"
    $IdProfil=($data2['IdProfilGassi']);

    J'enleve les "/"

    $tab = explode('/',$IdProfilGassi);

    foreach ($tab as $valeur) {
    $query = "SELECT ProfilGassi FROM profils_gassi WHERE IdProfilGassi = '$valeur' ";
    $result = mysql_query($query) or die('Erreur SQL !<br />'.$query.'<br />'.mysql_error());
    $data=mysql_fetch_assoc($result);

    ensuite je veux juste afficher les Profil correspondant aux Id 2, 3 et 4

  8. #8
    Membre émérite
    Avatar de yiannis
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 494
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 494
    Points : 2 791
    Points
    2 791
    Par défaut
    essaie cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Je recupere l' Idprofil dans une des tables sous la forme "2/3/4"
    $IdProfil=($data2['IdProfilGassi']);
     
    J'enleve les "/"
     
    $tab = explode('/',$IdProfilGassi);
     
    $Ids = implode(',',$tab)
     
    $query = "SELECT ProfilGassi FROM profils_gassi WHERE IdProfilGassi in (".$Ids.")";
    $result = mysql_query($query) or die('Erreur SQL !<br />'.$query.'<br />'.mysql_error());
    $data=mysql_fetch_assoc($result);
    l'implode te permet de mettre tes valeur sous la forme 1,2,3 ce qui te permet aussi de ne faire q'un seul appel a ta BD avec le in().
    "Ce besoin de remords qui précède le Mal, que dis-je ! qui le crée..." E. CIORAN

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 87
    Points : 46
    Points
    46
    Par défaut
    J'ai ce code :

    $IdProfil=($data2['IdProfilGassi']);
    $tab = explode('/',$IdProfilGassi);
    $Ids = implode(',',$tab)
    $query = "SELECT ProfilGassi FROM profils_gassi WHERE IdProfilGassi in (".$Ids.")";
    $result = mysql_query($query) or die('Erreur SQL !<br />'.$query.'<br />'.mysql_error());
    $data=mysql_fetch_assoc($result);

    Pour l'affichage, si je recupère sous la forme d'une zone de texte je n'ai toujours que la première ligne de ma table. Peut être que l'utilisation d'une zone de texten'est pas appropriée

    <textarea name="ProfilGassi" cols="35" rows="3" disabled ><?=($data['ProfilGassi'])?>
    </textarea>

  10. #10
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Il en manque un bout
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $IdProfil=($data2['IdProfilGassi']); 
    $tab = explode('/',$IdProfilGassi); 
    $Ids = implode(',',$tab) 
    $query = "SELECT ProfilGassi FROM profils_gassi WHERE IdProfilGassi in (".$Ids.")"; 
    $result = mysql_query($query) or die('Erreur SQL !<br />'.$query.'<br />'.mysql_error()); 
    while ($data=mysql_fetch_assoc($result)) {
       echo $data['ProfilGassi'];
    }

  11. #11
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    et d'une :
    et de deux : utilises plutôt <?php echo $mavar; ?> que <?=$mavar ?>
    et de trois :
    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
     
    <?php
    $IdProfil=($data2['IdProfilGassi']);
    $tab = explode('/',$IdProfilGassi);
    $Ids = implode(',',$tab)
    $query = "SELECT ProfilGassi FROM profils_gassi WHERE IdProfilGassi in (".$Ids.")";
    $result = mysql_query($query) or die('Erreur SQL !<br />'.$query.'<br />'.mysql_error());
    ?> 
    <textarea name="ProfilGassi" cols="35" rows="3" disabled >
    <?php
    while ($row = mysql_fetch_row($result)) {
       echo $row[0];
    }
    ?>
    </textarea>
    alors c'est pas plus lisible avec les balises [ code ] ?

    [edit]

    je ré-édite paske j'ai été bcp trop vite là...

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 87
    Points : 46
    Points
    46
    Par défaut
    CA MARCHE NIKEL !!!!! Il me rest plus qu'à regarder comment revenir à la ligne après chaque extraction de champ pour eviter de tout mettre à la ligne et c bon.
    Ca doit pas être trop dur


    MERCI BEAUCOUP !!


  13. #13
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    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
     
    <?php
    $IdProfil=($data2['IdProfilGassi']);
    $tab = explode('/',$IdProfilGassi);
    $Ids = implode(',',$tab)
    $query = "SELECT ProfilGassi FROM profils_gassi WHERE IdProfilGassi in (".$Ids.")";
    $result = mysql_query($query) or die('Erreur SQL !<br />'.$query.'<br />'.mysql_error());
    ?>
    <textarea name="ProfilGassi" cols="35" rows="3" disabled ><pre>
    <?php
    while ($row = mysql_fetch_row($result)) {
       echo $row[0]."\n";
    }
    ?>
    </pre></textarea>

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 87
    Points : 46
    Points
    46
    Par défaut
    Tout est parfait !!

    MERCI A TOUS!!

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 07/01/2008, 23h17
  2. Réponses: 2
    Dernier message: 07/05/2007, 12h18
  3. [Tableaux] Découper une chaîne de caractères
    Par mix_35 dans le forum Langage
    Réponses: 5
    Dernier message: 17/03/2007, 02h06
  4. [Tableaux] Opération sur chaîne de caractères
    Par kespy13 dans le forum Langage
    Réponses: 3
    Dernier message: 19/04/2006, 14h32
  5. [Tableaux] Chaîne de caractères et suppression ...
    Par mulbek dans le forum Langage
    Réponses: 5
    Dernier message: 24/11/2005, 15h18

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