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 :

UPDATE et INNER JOIN problème [PHP 5.4]


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 86
    Points : 46
    Points
    46
    Par défaut UPDATE et INNER JOIN problème
    Bonjour,

    je fait actuellement un test sur un commande avec UPDATE et INNER JOIN, avant que j'insert INNER JOIN ma commande UPDATE fonctionnais, je suis débutant et je suis en train d'apprendre le PHP.

    Pourriez vous m'aider à comprendre comment utiliser INNER JOIN dans ma commande UPDATE ?

    Est il possible de faire un UPDATE sur plusieurs tables en même temps ou faut il faire 2 UPDATE ?


    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    /insertion dans la base
     
    	//connexion à la base de dinnées
    	$cnx = odbc_connect( "basetest", "MAITRE", "toto" ) or die ("Impossible de se connecter à la bas de donnée") ;
     
    	// Récupération des élément dans la base
    	//requête SQL:
        $sql = "SELECT numfac FROM facclienttest" ;
     
        //exécution de la requête:
        $requete = odbc_do($cnx, $sql) ;
     
        //affichage des données:
         while( $result = odbc_fetch_object( $requete ) )
        {
    	(" ".$result->numfac." ") ;
    	}
     
    	//récupération des nouvelles valeurs des champs:
    	$paye = 1 ;
    	$modepaiement = ("paiement-en-ligne");
    	$nom = ("camarche");
    	//$id =14;
     
    	//récupération de l'identifiant de la personne:
    	//$id = 10;
     
    	//requête SQL:
    	$sql = "UPDATE facclienttest 
    	INNER JOIN clienttest 
    	ON facclienttest.id=clienttest.id
    	SET facclienttest.idtransaction ='$id_transaction', facclienttest.paye ='$paye',
    	facclienttest.modepaiement ='$modepaiement',clienttest.nom='$nom'
    	WHERE (numfac='".$a."' OR numfac='".$b."')	";
     
     
     
     
    	 //exécution de la requête SQL:
    	 $requete = odbc_do($cnx, $sql) or die( odbc_error()) ;
     
    	 //affichage des résultats, pour savoir si l'insertion a marchée:
    	 if($requete)
    	echo("La modification à été correctement effectuée"). '<br/>' ;
    	 else
    	echo("La modification à échouée") ;
     
    		}

  2. #2
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2013
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 45
    Points : 56
    Points
    56
    Par défaut
    Bonjour,

    Oui, on peut mettre à jour plusieurs tables en même temps.

    Dans ta clause WHERE, numfac correspond à quelle table ?
    En posant des alias, peut-être y verrais-tu plus clair ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    	//requête SQL:
    	$sql = "UPDATE facclienttest AS F 
    	INNER JOIN clienttest AS C 
    	ON F.id=C.id
    	SET F.idtransaction ='$id_transaction', F.paye ='$paye',
    	F.modepaiement ='$modepaiement',C.nom='$nom'
    	WHERE numfac='".$a."' OR numfac='".$b."'	";
    En posant le bon alias devant numfac dans ta clause WHERE ce devrait être bon

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 86
    Points : 46
    Points
    46
    Par défaut
    numfac correspond à la table facclienttest

  4. #4
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2013
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 45
    Points : 56
    Points
    56
    Par défaut
    Et donc ?

    Le problème que tu as c'est d'avoir ajouté une jointure dans ta requête. Si avant tu faisais référence à une seule table, maintenant, tu fais référence à plusieurs tables. Donc désormais, si tu ne précises pas la table devant le nom du champ, ça ne fonctionnera pas ce n'est pas magique ^^

    Puisqu'il s'agit de la table facxxx... alors :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE F.numfac='".$a."' OR F.numfac='".$b."'	";

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 86
    Points : 46
    Points
    46
    Par défaut
    Voici ma correction mais toujours rien dan la base !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    //requête SQL:
    	$sql = "UPDATE facclienttest 
    	INNER JOIN clienttest 
    	ON facclienttest.id=clienttest.id
    	SET facclienttest.idtransaction ='$id_transaction', facclienttest.paye ='$paye',
    	facclienttest.modepaiement ='$modepaiement',clienttest.nom='$nom'
    	WHERE (facclienttest.numfac='".$a."' OR facclienttest.numfac='".$b."')	";

  6. #6
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2013
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 45
    Points : 56
    Points
    56
    Par défaut
    Si tu affiches ta requête qu'est-ce que tu obtiens ?

    PS : si ton champ id_transaction est un entier, il est inutile de le passer entre quote

  7. #7
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 86
    Points : 46
    Points
    46
    Par défaut
    voici la réponse de "echo $sql;"

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    UPDATE facclienttest 
        INNER JOIN clienttest ON facclienttest.id=clienttest.id 
    SET 
        facclienttest.idtransaction ='15246', 
        facclienttest.paye ='1', 
        facclienttest.modepaiement ='paiement-en-ligne',
        clienttest.nom='camarche' 
    WHERE 
        (facclienttest.numfac='F15246' OR facclienttest.numfac='')
    La modification à été correctement effectuée

  8. #8
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2013
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 45
    Points : 56
    Points
    56
    Par défaut
    Tu es certain d'avoir une/des correspondances à ce niveau là ?
    facclienttest.id=clienttest.id avec ta clause WHERE facclienttest.numfac='F15246' ?

  9. #9
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 86
    Points : 46
    Points
    46
    Par défaut
    le problème viens surement de la, clienttest.id correspond a la première colonne et facclienttest.id aussi.

    Je viens d'essayer la commande ci-dessous et c'est ok cela fonctionne.

    Un grand merci pour ton aide précieuse.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    //requête SQL:
    	$sql = "UPDATE facclienttest 
    	INNER JOIN clienttest 
    	ON facclienttest.idclient=clienttest.id
    	SET facclienttest.idtransaction ='$id_transaction', facclienttest.paye ='$paye',
    	facclienttest.modepaiement ='$modepaiement',clienttest.nom='$nom'
    	WHERE (facclienttest.numfac='".$a."' OR facclienttest.numfac='".$b."')	";

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

Discussions similaires

  1. Problème avec UPDATE et INNER JOIN
    Par korbn dans le forum Requêtes
    Réponses: 2
    Dernier message: 25/05/2009, 20h52
  2. [MySQL] UPDATE et INNER JOIN
    Par korbn dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 25/05/2009, 14h27
  3. probleme update et inner join
    Par makaphrodite dans le forum Bases de données
    Réponses: 3
    Dernier message: 13/04/2009, 11h44
  4. UPDATE et INNER JOIN
    Par korbn dans le forum Requêtes
    Réponses: 4
    Dernier message: 22/11/2008, 04h28
  5. UPDATE avec INNER JOIN
    Par steelidol dans le forum MS SQL Server
    Réponses: 11
    Dernier message: 03/03/2006, 23h56

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