Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/04/2011, 21h49   #1
 
Inscription : septembre 2009
Messages : 9
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 9
Points : -1
Points : -1
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 :
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
serair est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2011, 21h56   #2
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Et si champTexte contient plusieurs réferences ?
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2011, 22h07   #3
 
Inscription : septembre 2009
Messages : 9
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 9
Points : -1
Points : -1
Bonne remarque; j'y ai pensé également , mais ce ne pourra être le cas.
serair est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2011, 22h19   #4
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Je ne suis pas sur qu'on puisse faire un update sur une fausse jointure mais essaie :
Code :
1
2
3
UPDATE tableA, tableB
SET champInfosComplémentaire = $valeurAajouter
WHERE champTexte LIKE '%$valeurAchercher%'
Ou alors
Code :
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.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2011, 22h26   #5
 
Inscription : septembre 2009
Messages : 9
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 9
Points : -1
Points : -1
Merci, je vais manger, parce qu'on code mieux le ventre plein et je teste ça juste après. Je te tiens au courant
serair est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 09/04/2011, 23h43   #6
 
Inscription : septembre 2009
Messages : 9
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 9
Points : -1
Points : -1
J'ai essayé ceci :

Code :
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 :
mysql_query("UPDATE tableA, tableB SET champInfosComplementaire = $valeurAajouter, image=$valeurImage WHERE champTexte LIKE '%$valeurAchercher%'");
et

Code :
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
serair est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/04/2011, 07h51   #7
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Teste déjà les requêtes en direct, comme je t'ai dit, je ne suis pas sur de la syntaxe.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/04/2011, 17h57   #8
Membre habitué
 
Avatar de richard_sraing
 
Homme Raphaël
Responsable de service informatique
Inscription : avril 2005
Messages : 374
Détails du profil
Informations personnelles :
Nom : Homme Raphaël
Localisation : Belgique

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

Informations forums :
Inscription : avril 2005
Messages : 374
Points : 121
Points : 121
Envoyer un message via MSN à richard_sraing
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 :
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 :
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...
__________________
First step: F.A.Q.
Second step: Forum -> Recherche
Thrid step: Forum -> Poser une question
Fourth step: Forum -> Attendre une réponse
Fifth step: Forum -> Remercier les personnes ayant répondu et signaler comme résolu

Simple non ? l'utilisation de developpez.com
richard_sraing est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h21.


 
 
 
 
Partenaires

Hébergement Web