(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 -
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.
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:
- (sql/php) mise à jour bd avec deux tables
- Mise a jour chrome - Accueil - Applications & Logiciels
- Mise a jour windows 10 - Accueil - Mise à jour
- Mise a jour chromecast - Accueil - Guide TV et vidéo
- Mise à jour libre office - Accueil - Bureautique
- Mise a jour windows 7 vers 10 - Accueil - Mise à jour
4 réponses
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...
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...
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.
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.
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+.
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+.
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...
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...
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());
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());
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());
$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());