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

PHP & Base de données Discussion :

Dire "qui contient" en php


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Homme Profil pro
    Géomaticien
    Inscrit en
    Septembre 2012
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Géomaticien

    Informations forums :
    Inscription : Septembre 2012
    Messages : 103
    Points : 66
    Points
    66
    Par défaut Dire "qui contient" en php
    Bonjour à tous

    Désolé de re-re-re-poser une question déjà traitée dans de nombreux forums, que j'ai été voir, mais définitivement je ne comprends pas.

    Comme dit dans le titre, je souhaite après l'enregistrement d'un formulaire, exécuter un code qui modifie des valeurs de l'enregistrement en question.
    Chose que je fais déjà très bien dans le même formulaire avec des condition du type "égal à" (==) ou "différent de" (!=). Ça marche très bien.
    Oui mais là, je souhaite dire "qui contient" !!! Arf

    J'ai essayé de nombreuses syntaxes, avec des pre_match, ereg, strpos... d'autres encore!

    J'explique en gros :

    - J'ai un champ disons "organisme", contenant des noms d'organismes, 8 maximum, chacun entouré de guillemets, séparé de virgules, le tout entre crochets, sans accent mais avec des majuscules.
    - Je veux modifier d'autres champs en fonction de la présence ou non de certains organismes dans le champ "organisme".
    - Exemple avec preg_match ("variable1" est le champ "organisme") :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (preg_match($variable1, 'Organisme A') !== false ) 
    {
      code à exécuter;
    }
    Pouvez-vous m'aider ? Merci !

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Il faut consulter la doc.
    Les arguments de preg_match() sont dans l'ordre sens : preg_match(recherche, chaine)
    Cependant comme indiqué dans la doc toujours, pour faire une simple recherche strpos() est plus rapide/
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre du Club
    Homme Profil pro
    Géomaticien
    Inscrit en
    Septembre 2012
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Géomaticien

    Informations forums :
    Inscription : Septembre 2012
    Messages : 103
    Points : 66
    Points
    66
    Par défaut
    J'ai testé str_pos avec ça ("$variable1" est le champ "organisme") :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $cherche = 'Organisme A';
     
    if (strpos($variable1, $cherche) === FALSE ) 
    {
      code à exécuter
    }
    Mais sans succès

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Je ne sais pas si c'est fait expres mais tu as mis ta condition dans le sens "pas trouvé" (=== FALSE).

    Sinon que vaut $variable1 ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre du Club
    Homme Profil pro
    Géomaticien
    Inscrit en
    Septembre 2012
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Géomaticien

    Informations forums :
    Inscription : Septembre 2012
    Messages : 103
    Points : 66
    Points
    66
    Par défaut
    Oui ce sens là, c'est fait exprès.

    "$variable1" est un champ qui peut contenir par exemple ce genre de chose :

    ["Organisme A","Organisme B","Organisme C"]

    ou encore seulement :

    ["Organisme B"]

    Any idea ?

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Cela signifie que $variable1 ne vaut pas ["Organisme A","Organisme B","Organisme C"]

    Tu n'aurais pas un htmlentities() dans ton insertion dans la bdd ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre du Club
    Homme Profil pro
    Géomaticien
    Inscrit en
    Septembre 2012
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Géomaticien

    Informations forums :
    Inscription : Septembre 2012
    Messages : 103
    Points : 66
    Points
    66
    Par défaut
    Je ne sais pas trop, j'utilise Joomla et une extension qui permet d'inclure du php.

    Il n'y a pas une façon de contourner le problème en php ?

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Sûrement mais il faudrait savoir quel problème.

    Ou se place ton extension Joomla par rapport à l'insertion des données dans la base ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Membre du Club
    Homme Profil pro
    Géomaticien
    Inscrit en
    Septembre 2012
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Géomaticien

    Informations forums :
    Inscription : Septembre 2012
    Messages : 103
    Points : 66
    Points
    66
    Par défaut
    Hum, encore une fois je ne sais pas trop désolé, mais si vous me donnez des indications pour aller trouver ça, j'irais voir.

    En attendant si ça peut aider/répondre à votre question, il y a une option dans la soumission du formulaire qui semble décider à quel moment appliquer le script php. J'ai mis cette option à "Start of form submission (onBeforeProcess)", car cela marche très bien sur mes autres scripts.
    Cependant j'ai testé d'autres choix à cette option, pour mon script qui ne marche pas, sans grande différence.

    Je vais vous mettre ici un exemple complet d'un de mes scripts qui marchent, sans modifier les types de variables Joomla, qui sont un peu spéciales, mais qui marchent parfaitement ("type" est un champ de la table "projet") :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $variable1 = $formModel->formData['projets___type'];
     
    if ($variable1 != 'Projet ROHM') 
     
    {
      $formModel->updateFormData('projets___budget_rohm', '0' , true);
    }
    Et ici je répète le script qui ne marche pas ("ohm" est donc un autre champ de la même table):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $variable2 = $formModel->formData['projets___ohm'];
     
    $cherche = 'Oyapock';
     
    if (strpos($variable2, $cherche) === false) 
    {
      $formModel->updateFormData('projets___budget_oya', '0' , true);
    }

  10. #10
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Commence par un simple debugage avec
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #11
    Membre du Club
    Homme Profil pro
    Géomaticien
    Inscrit en
    Septembre 2012
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Géomaticien

    Informations forums :
    Inscription : Septembre 2012
    Messages : 103
    Points : 66
    Points
    66
    Par défaut
    Merci

    Je viens de tester, mais sans différence...

  12. #12
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    comme je t'ai dit, il s'agit d'un debugage, pas de résoudre le problème.
    var_dump() affiche le détail d'une variable ; c'est ce qui est affiché qui nous interesse.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  13. #13
    Membre du Club
    Homme Profil pro
    Géomaticien
    Inscrit en
    Septembre 2012
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Géomaticien

    Informations forums :
    Inscription : Septembre 2012
    Messages : 103
    Points : 66
    Points
    66
    Par défaut
    Mais comment tester la chose ? Création d'un fichier php ? Je ne sais pas trop où le mettre je vous avoue.

  14. #14
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Apres la ligne $variable2=
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  15. #15
    Membre du Club
    Homme Profil pro
    Géomaticien
    Inscrit en
    Septembre 2012
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Géomaticien

    Informations forums :
    Inscription : Septembre 2012
    Messages : 103
    Points : 66
    Points
    66
    Par défaut
    Mais où est-ce que je le verrai s'afficher ? En utilisant Firebug ? Je fouille, je fouille mais...

  16. #16
    Membre du Club
    Homme Profil pro
    Géomaticien
    Inscrit en
    Septembre 2012
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Géomaticien

    Informations forums :
    Inscription : Septembre 2012
    Messages : 103
    Points : 66
    Points
    66
    Par défaut
    Ok, en fait pour utiliser var_dump dans un formulaire de l'extension, il faut utiliser un code similaire à celui-ci :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var_dump($variable3,strpos($variable3, $cherche));exit;
    Et l'une des réponses qui peut m'être donné, en fonction de la valeur des champs du formulaire, est par exemple celle-ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    array(2) { [4]=> string(7) "Nunavit" [6]=> string(9) "Tessekere" } NULL
    Any Idea ?

  17. #17
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Je ne connais pas ton "formulaire de l'extension" ; pour cette partie il faut que tu te débrouilles avec son fonctionnement.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  18. #18
    Membre du Club
    Homme Profil pro
    Géomaticien
    Inscrit en
    Septembre 2012
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Géomaticien

    Informations forums :
    Inscription : Septembre 2012
    Messages : 103
    Points : 66
    Points
    66
    Par défaut
    Ok

    J'ai l'impression que je suis parvenu à mes fins ! Cela en passant par un "implode", dont j'avoue ne pas tout comprendre, mais qui marche !

    En fait mon champ est une série de boutons radio, qui incrémentent le champ en séparant les valeurs de virgules, et apparemment le implode touche à ces virgules.

    Voilà mon code qui semble marcher (je dois faire une série de test pour confirmer, mais déjà ça a l'air bien) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $variable3 = $formModel->formData['projets___ohm'];
     
    $v3 = implode(',',$variable3);
     
    $cherche = 'Oyapock';
     
    if (strpos($v3, $cherche) === false) 
    {
      $formModel->updateFormData('projets___budget_oya', '0' , true);
    }

Discussions similaires

  1. Réponses: 3
    Dernier message: 23/06/2009, 09h59
  2. Réponses: 1
    Dernier message: 28/01/2008, 12h21
  3. Double quote qui viennent de nulle part
    Par mioux dans le forum Coldfusion
    Réponses: 4
    Dernier message: 26/04/2007, 13h42

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