UPDATE de 2 tables (sql/php)

Gwendo69 Messages postés 147 Date d'inscription lundi 29 septembre 2008 Statut Membre Dernière intervention 28 juin 2013 - 26 mars 2009 à 20:20
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 - 27 mars 2009 à 07:37
Bonjour,

Je ne sais pas si quelqu'un peut m'aider pour ça.
J'ai deux tables: artiste (id_artiste, nom_artiste) et information (id_information, contenu_information, #id_type, #id_artiste).

1. Sur une page du site un utilisateur choisit un artiste. Voici le code du SELECT:

<select name= "choix">

<?php

//crée la liste

$result = mysql_query("SELECT nom_artiste FROM artiste ORDER BY nom_artiste;");

while ($ligne = mysql_fetch_assoc($result))

{

extract($ligne);

echo "<option id='$nom_artiste'>$nom_artiste</option>\n";

}

?>

</select>

2. Je veux qu'ensuite il puisse mettre à jour sa biographie en tapant
la nouvelle dans une zone de texte puis en validant avec un bouton:




3.
Ma question est: est-ce que je peux faire ça pour mettre à jour la bd ou la syntaxe est-elle fausse?

//récupère l'identifiant de l'artiste choisi

$identifiant = 'SELECT id_artiste FROM artiste WHERE nom_artiste="'.$choix.'"';

//met à jour la bd

$inserer = 'UPDATE information SET contenu_imformation="'.$bio.'"
WHERE id_type="1" and information.id_artiste=(SELECT id_artiste FROM
artiste WHERE artiste.id_artiste="'.$identifiant.'"')';

ou peut-être
ça (mais les sites y a marqué que c'est pas possible un Update pour deux tables).
$inserer = 'UPDATE information SET contenu_imformation="'.$bio.'" WHERE id_type="1" and id_artiste="'.$identifiant.'"';

//lance la requête

mysql_query ($inserer) or die ('Erreur SQL !'.$sql.'
'.mysql_error());

Le problème est que l'utilisateur choisi un nom et que le lien entre les deux tables est l'id.

Vous voyez des fautes (surement des tonnes, je démarre en php) ou pas?
Merci d'avance
Gwendo.

1 réponse

kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
27 mars 2009 à 07:37
Salut,

C'est un peu confus tout ça , je vais peut être répondre à côté de la plaque.
Pourquoi parles tu d'un update de 2 tables ? C'est uniquement information que tu mets à jour, non ?

Il y a moyen de faire autrement mais admettons un schéma comme celui là :

page 'selection_artiste.php':
// formulaire de choix de l'artiste qui pointe vers la page de mise à jour
<form method="post" action="modif_bio.php" onsubmit="[controle que l'artiste est bien sélectionné]">
<select name="choix">
<?php
//crée la liste
$result = mysql_query("SELECT * FROM artiste ORDER BY nom_artiste;");
while ($ligne = mysql_fetch_assoc($result)) {
    extract($ligne);
    echo '<option id="'.$id_artiste.'">'.$nom_artiste.'</option>';
}
?>
</select>
</form>

page 'modif_bio.php' :

if (!isset($_POST['choix']) && !isset($_POST['id_artiste'])) { // arrivée sur la page sans passer par l'un des 2 formulaires
   header('Location: selection_artiste.php'); // tu rediriges vers la selection de l'artiste

   exit;
} elseif (isset($_POST['choix'])) { // première appel de la page
   $id_artiste = strip_tags($_POST['choix']);
}

if (isset($_POST['bio'])) {
   $bio = mysql_real_escape_string($_POST['bio']);
   $id_artiste = mysql_real_escape_string($_POST['id_artiste']);
   $sql = "UPDATE information SET contenu_information='$bio' WHERE id_type=1 and id_artiste='$id_artiste'";
   if (false === mysql_query($sql)) die('erreur requête, patatipatata');

   header('Location: [page qui va bien]'); // l'update est fait, tu rediriges
}

echo '
<form method="post" action="">


// => plutôt un textarea ici, non ?

</form>';

Bien sur ce n'est pas la meilleure façon de procéder et il faudra sans doute que tu adaptes un peu.

Kohntark -
0
Rejoignez-nous