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

Résolu/Fermé
Gwendo69 Messages postés 147 Date d'inscription lundi 29 septembre 2008 Statut Membre Dernière intervention 28 juin 2013 - 25 mars 2009 à 10:39
Gwendo69 Messages postés 147 Date d'inscription lundi 29 septembre 2008 Statut Membre Dernière intervention 28 juin 2013 - 4 avril 2009 à 17:14
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 lundi 16 mars 2009 Statut Membre Dernière intervention 17 juin 2010 10
25 mars 2009 à 10:42
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 lundi 29 septembre 2008 Statut Membre Dernière intervention 28 juin 2013 13
4 avril 2009 à 17:14
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 lundi 29 septembre 2008 Statut Membre Dernière intervention 28 juin 2013 13
25 mars 2009 à 11:41
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 lundi 16 mars 2009 Statut Membre Dernière intervention 17 juin 2010 10
25 mars 2009 à 14:04
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 lundi 29 septembre 2008 Statut Membre Dernière intervention 28 juin 2013 13
27 mars 2009 à 06:20
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 lundi 16 mars 2009 Statut Membre Dernière intervention 17 juin 2010 10
27 mars 2009 à 13:31
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