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 :

Update Mysql PHP


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 9
    Par défaut Update Mysql PHP
    Bonjour à tous,
    Débutant sur php/mysql, je vous expose mon problème

    J'ai une tableA
    champTexte | champInfosComplémentaire
    champTexte contient du texte,
    champInfosComplémentaire est vide

    J'ai une tableB
    champVille | champPays
    champVille (PK) est une chaîne de caractère unique
    ChampPays est rempli

    Je veux vérifier si pour chaque enregistrement de tableA, champTexte contient une des valeurs de champVille de tableB
    Si c'est le cas, je voudrais attribuer à champInfosComplémentaire de tableA la valeur de champPays de tableB

    je pensais à quelque chose du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $query = "SELECT * FROM table2"; 
    $result = mysql_query($query) or die(mysql_error());
    while($row = mysql_fetch_array($result)){
    $valeurAchercher=$row['champVille'];
    $valeurAajouter=$row['champPays'];
    mysql_query("UPDATE table1 SET champInfosComplémentaire = $valeurAajouter WHERE champTexte LIKE '%$valeurAchercher%'");
    }
    Mais ça ne me paraît pas bon et je ne suis pas sûr d'utiliser la bonne ou la meilleure solution.
    Pourriez-vous m'aider,

    Merci d'avance pour vos réponses

  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
    Par défaut
    Et si champTexte contient plusieurs réferences ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 9
    Par défaut
    Bonne remarque; j'y ai pensé également , mais ce ne pourra être le cas.

  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
    Par défaut
    Je ne suis pas sur qu'on puisse faire un update sur une fausse jointure mais essaie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE tableA, tableB
    SET champInfosComplémentaire = $valeurAajouter
    WHERE champTexte LIKE '%$valeurAchercher%'
    Ou alors
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE tableA
    JOIN tableB ON champTexte LIKE '%$valeurAchercher%'
    SET champInfosComplémentaire = $valeurAajouter
    Mais je ne sais pas non plus si c'est possible d'avoir une jointure sur un like.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 9
    Par défaut
    Merci, je vais manger, parce qu'on code mieux le ventre plein et je teste ça juste après. Je te tiens au courant

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 9
    Par défaut
    J'ai essayé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php require_once('../Connections/maconnexion.php'); ?>
    <?php
    mysql_select_db($database_lg, $lg);
    $querymaj = "SELECT * FROM tableB";
    $resultmaj = mysql_query($querymaj, $lg) or die(mysql_error());
     
    while($rowmaj = mysql_fetch_array($resultmaj)){
    $valeurAchercher=$rowmaj['champVille'];
    $valeurAajouter=$rowmaj['ChampPays'];
    $valeurImage=$rowmaj['image'];
    mysql_query("UPDATE tableA JOIN tableB ON champTexte LIKE '%$valeurAchercher%' SET champInfosComplementaire =$valeurAajouter, image=$valeurImage  ");
    }
    ?>
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query("UPDATE tableA, tableB SET champInfosComplementaire = $valeurAajouter, image=$valeurImage WHERE champTexte LIKE '%$valeurAchercher%'");
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query("UPDATE tableA SET champInfosComplementaire =$valeurAajouter, image=$valeurImage WHERE champTexte LIKE '%$valeurAchercher%' ");
    mais rien n'y fait...

    Quelqu'un aurait une idée...?

    Merci d'avance

  7. #7
    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
    Par défaut
    Teste déjà les requêtes en direct, comme je t'ai dit, je ne suis pas sur de la syntaxe.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #8
    Membre éclairé Avatar de richard_sraing
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2005
    Messages : 483
    Par défaut
    Si je comprends bien le soucis, il s'agit en quelques sorte de copier les valeurs de la TableB dans la TableA si un champ de TableA contient la valeur d'un champ de la TableB. (un peu cette explication).

    Bon, alors voici une proposition, et désolé, mais j'ai pas le temps dans l'immédiat de pondre tout le code correspondant.

    Commence par réaliser une requête du format "SELECT * FROM TableB".

    Ensuite, pour chaque élément récupéré, tu procède dans une boucle à la requête suivant :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE TableA SET champInfosComplémentaire = :tavariableaAssigner  WHERE champTexte LIKE :tavariableCorrespondante

    En passant par un objet PDO, et PDOStatement, il te sera possible d'appeler la requête sans pour autant devoir à chaque fois retaper toute la requête, et tu aurais donc quelques choses comme ceci :

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    /* création de ta requete de select dans TableB et assignation des valeurs récupérées dans un tableau */
     
    $pdostatement = $pdoobject->prepare('UPDATE TableA SET champInfosComplémentaire = :tavariableaAssigner  WHERE champTexte LIKE :tavariableCorrespondante');
     
    foreach(....){ /* pour chaque élément de ton tableau */
        $pdostatement->bindParam(':tavariableaAssigner', $tableau['champVille'], PDO::PARAM_STR);
        $pdostatement->bindParam(':tavariableCorrespondante', $tableau['champPays'], PDO::PARAM_STR);
        $pdostatement->execute();
    }

    En espérant que cela puisse t'aider...

Discussions similaires

  1. [MySQL] Update en PHP foireux mais pas sous MySQL
    Par Gouzoul dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 08/04/2009, 17h58
  2. [MySQL] requete update mysql php
    Par fasyr dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 24/10/2008, 13h49
  3. [MySQL] fonction update en php avec mysql
    Par khamett dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 19/04/2008, 13h33
  4. UPDATE * SET php/mysql
    Par Invité dans le forum Requêtes
    Réponses: 13
    Dernier message: 28/03/2006, 11h47
  5. multi update avec php/ mysql
    Par arnoweb dans le forum Administration
    Réponses: 1
    Dernier message: 17/11/2005, 22h10

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