(sql/php) mise à jour bd avec deux tables

Résolu
Gwendo69 Messages postés 147 Date d'inscription   Statut Membre Dernière intervention   -  
Gwendo69 Messages postés 147 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je ne sais pas si quelqu'un peut m'aider.
J'ai deux tables: artiste (id_artiste, nom_artiste) et information (id_information, contenu_information, #id_type, #id_artiste).
J'ai créé un formulaire pour mettre à jour la bd via une page du site. Avec, l'utilisateur doit pouvoir choisir un artiste, changer les données et valider les modifications dans la table information.
Comme les deux tables sont prises en compte (avec le choix de l'artiste), il faut d'abord supprimer les lignes existantes puis insérer les nouvelles. Pourtant, lorsque je clique sur l'un des boutons pour valider, je n'ai aucun message d'erreur mais le changement n'est pas effectué dans la table.
Comme je débute en PHP, j'ai du passer à côté de quelque chose.

Voici le code:
<!doctype html public "-//W3C//DTD HTML 4.0 //EN">
<html>
<head>
<title>Title here!</title>
</head>
<body>
<?php
//declare la fonction connectMaBase() dans cette page
include("mesfonctions.php");
//connection a la base
connectMaBase();
?>
<BLOCKQUOTE>
<form name="inscription" method="post" action="modification.php">
Choisir un artiste : <br/>
<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>
<br>
<br/>
Modifier la biographie : <br/>
<input type="text" size="100%" name="bio"/> <br/>
<P><input type="submit" name="validerbio" value="Modifier"/></P>
Modifier les videos : <br/>
<input type="text" size="100%" name="vid"/> <br/>
<P><input type="submit" name="validervid" value="Modifier"/></P>
Modifier les compositions : <br/>
<input type="text" size="100%" name="compo"/> <br/>
<P><input type="submit" name="validercompo" value="Modifier"/></P>
</form>
</BLOCKQUOTE>
<?php
//recupere les valeurs
$choix=$_POST['choix'];
$bio=$_POST['bio'];
$vid=$_POST['vid'];
$compo=$_POST['compo'];
echo 'Les modifications sont enregistrées';

if(isset($_POST['validerbio']))
{
//Pour la biographie
//recupere l'identifiant de l'artiste
$identifiant = 'SELECT id_artiste FROM artiste WHERE nom_artiste="'.$choix.'"';
//supprime les donnees inscrites dans la table
$supprimer = 'DELETE * FROM information WHERE id_type="1" AND id_artiste="'.$identifiant.'"';
//insere les nouvelles donnees
$inserer = 'INSERT INTO information VALUES("","'.$bio.'","'.$identifiant.'","1")';
//lance les requêtes (messages si erreur)
mysql_query ($identifiant) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());
mysql_query ($supprimer) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());
mysql_query ($inserer) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());
}
if(isset($_POST['validervid']))
{
//Pour les videos
//recupere l'identifiant de l'artiste
$identifiant2 = 'SELECT id_artiste FROM artiste WHERE nom_artiste="'.$choix.'"';
//supprime les donnees inscrites dans la table
$supprimer2 = 'DELETE * FROM information WHERE id_type="2" AND id_artiste="'.$identifiant2.'"';
//insere les nouvelles donnees
$inserer2 = 'INSERT INTO information VALUES("","'.$bio.'","'.$identifiant2.'","2")';
//lance les requêtes (messages si erreur)
mysql_query ($identifiant2) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());
mysql_query ($supprimer2) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());
mysql_query ($inserer2) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());
}
if(isset($_POST['validercompo']))
{
//Pour les compositions
//recupere l'identifiant de l'artiste
$identifiant3 = 'SELECT id_artiste FROM artiste WHERE nom_artiste="'.$choix.'"';
//supprime les donnees inscrites dans la table
$supprimer3 = 'DELETE * FROM information WHERE id_type="4" AND id_artiste="'.$identifiant3.'"';
//insere les nouvelles donnees
$inserer3 = 'INSERT INTO information VALUES("","'.$bio.'","'.$identifiant3.'","4")';
//lance les requêtes (messages si erreur)
mysql_query ($identifiant3) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());
mysql_query ($supprimer3) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());
mysql_query ($inserer3) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());
}
// fermeture de la connexion
mysql_close();
?>
</body>
</html>

Avez-vous une idée? Une piste quelconque? Merci d'avance.
Gwendo.
A voir également:

4 réponses

sebshiva Messages postés 194 Date d'inscription   Statut Membre Dernière intervention   10
 
Salut,

Une piste quelconque? OK:

"$supprimer2 = 'DELETE * FROM information WHERE id_type="2" AND id_artiste="'.$identifiant2.'"';
//insere les nouvelles donnees
$inserer2 = 'INSERT INTO information VALUES("","'.$bio.'","'.$identifiant2.'","2")'; "
etc....
Pourquoi tant de manipes déjà??? UPDATE est ton ami...
1
Gwendo69 Messages postés 147 Date d'inscription   Statut Membre Dernière intervention   13
 
Merci pour tout!

Finalement, après plusieurs manip et l'utilisation d'un mysql_fetch_array(), l'UPDATE marche beaucoup mieux. En fait une fois que j'ai récupéré l'id comme tu as dis (le problème venais de là), je peux l'utiliser sans problème. C'est plus pratique.

Merci encore.
1
Gwendo69 Messages postés 147 Date d'inscription   Statut Membre Dernière intervention   13
 
Bonjour,


En fait, je me suis renseignée et apparemment dans ce cas-là on ne peut pas utiliser update avec deux tables.

Comme l'utilisateur choisit le nom de l'artiste pour lequel il veut faire des changements, ça pose problème. Le lien entre les deux tables est id_artiste et pas nom_artiste, sinon je ferais juste un Update sur la table information. Ce serait trop simple bien sûr..

Après j'ai peut-être lu des bêtises, mais c'est marqué sur beaucoup de sites.


A+.
0
sebshiva Messages postés 194 Date d'inscription   Statut Membre Dernière intervention   10
 
Un exemple:

mysql_query ("UPDATE phpbb_users SET `nom`='$nom', `prenom`='$prenom', `adresse`='$adresse', `postal`='$postal', `user_from`='$user_from', `club`='$club', `niveau`='$niveau', `naissance`='$naissance', `user_email`='$user_email' WHERE username='$pseudo_session'";
"UPDATE p4w_membre SET `nom`='$nom', `prenom`='$prenom', `ville`='$user_from',`mail`='$user_email' WHERE pseudo='$pseudo_session'";
"UPDATE px_utilisateur SET `util_nom`='$nom', `util_prenom`='$prenom', `util_email`='$user_email' WHERE util_login='$pseudo_session'")or die (mysql_error());

je ne vois pas où est le problème...
0
Gwendo69 Messages postés 147 Date d'inscription   Statut Membre Dernière intervention   13
 
Bonjour,
Non le pd n'est pas résolu. J'ai essayé les deux méthode rien à faire.

//recupere l'identifiant de l'artiste
$identifiant = 'SELECT id_artiste FROM artiste WHERE nom_artiste="'.$choix.'"';
Insere les données
$inserer = 'UPDATE information SET contenu_imformation="'.$bio.'" WHERE id_type="1" and id_artiste="'.$identifiant.'"';

//lance les requêtes (messages si erreur)
mysql_query ($identifiant) or die ('Erreur SQL !'.$identifiant.'<br />'.mysql_error());
mysql_query ($inserer) or die ('Erreur SQL !'.$inserer.'<br />'.mysql_error());
0
sebshiva Messages postés 194 Date d'inscription   Statut Membre Dernière intervention   10
 
C'est normal!
$inserer = 'UPDATE information SET contenu_imformation="'.$bio.'" WHERE id_type="1" and id_artiste="'.$identifiant.'"';
mysql_query ($identifiant)
$identifiant, c'est ta requête! pas ce qu'elle te renvoie!

//recupere l'identifiant de l'artiste
$identifiant = 'SELECT id_artiste FROM artiste WHERE nom_artiste="'.$choix.'"';
$resultId=mysql_query ($identifiant) or die ('Erreur SQL !'.$identifiant.'<br />'.mysql_error());
while ($row = mysql_fetch_array($resultId)) {
$id=$row['id_artiste'];
}

modifie les données
$inserer = 'UPDATE information SET contenu_imformation="'.$bio.'" WHERE id_type="1" and id_artiste="'.$id.'"';

mysql_query ($inserer) or die ('Erreur SQL !'.$inserer.'<br />'.mysql_error());
0