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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    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
    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 éclairé
    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
    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 confirmé
    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
    Par défaut
    numfac correspond à la table facclienttest

  4. #4
    Membre éclairé
    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
    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 confirmé
    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
    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 éclairé
    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
    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

+ 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