|
Anonyme 19853
| Posté : 30-06-2003 09:42
Voilà mon html est desactivé, merci de me repondre.
Bonjour à tous,
voici mes2 tables :
- 1 table news avec comme champs : id_news (primaire), titre, date,id_theme(secondaire),contenu
- 1 table theme avec comme champs : id_theme (primaire), nom_theme
j'aimerai faire des modifications dans ma table news le titre,date,nom_theme,contenu
mais j y arrive pas lorsque je clique sur modifier dans affich_news , il m'envoie sur mon formulaire de modification avec tous les paramètres mais lorsque je fais les modif il ne fais rien sur la liste des news.
pour une personne qui debute j'ai besoin de vos competences merci.
voici ma requete affich_news:
<?
//Inclusion du fichier pour se connecter à la base
require ('../dtabase.php');
?>
Gestion des news
Visualisation des news:
Titre
Date
Nom_theme
Contenu
Modifier
Supprimer
<?
// Test pour savoir si l'utilsateur a demandé d'effacer quelque chose
if(isset($effacer))
{
$requete="delete from news where news.Id_news=$effacer";
$resultat=mysql_query($requete,$link);
}
// Test pour savoir si l'utilsateur a demandé d'ajouter quelque chose
if(isset($titre)&&isset($date)&&isset($nom_theme)&& ;isset($contenu))
{
//requete pour ajouter
$requete_ajout_news = ("insert into news(titre,date,id_theme,contenu) values('$titre','$date','$nom_theme','$contenu');");
$resultat_ajout_news = mysql_query($requete_ajout_news,$link);
}
// Choix de la requete
$requete="select news.*,theme.nom_theme from news, theme where news.id_theme=theme.id_theme";
$resultat=mysql_query($requete,$link);
$nb_enreg = mysql_num_rows($resultat); // nb d'enregistrements retournés par la requete
if ($nb_enreg>0)
{
while ( $ligne = mysql_fetch_array($resultat) )
{
print(' ');
print(' ');
print($ligne["Titre"]);
print(' ');
print(' ');
print($ligne["Date"]);
print(' ');
print(' ');
print($ligne["nom_theme"]);
print(' ');
print(' ');
print($ligne["Contenu"]);
print(' ');
print(' ');
print('modifier');
print(' ');
print(' ');
print('supprimer');
print(' ');
print('
');
}
}
else
{
echo "aucun enregistrement";
}
?>
<?
// Test pour savoir si l'utilsateur a demandé de modifier quelque chose
if(isset($valider))
{
$requete= "update news set titre='$titre',date='$date',nom_theme='$nom_theme',contenu='$contenu'";
$requete.="where news.Id_news=$modifier and news.id_theme=theme.id_theme";
$resultat=mysql_query($requete,$link);
}
?>
menu principal
voici celle de la modif:
<?
///Inclusion du fichier pour se connecter à la base
require ('../dtabase.php');
// Test pour savoir si l'utilsateur a demandé de modifier quelque chose
if(isset($valider))
{
$requete= "update news set titre='$titre',date='$date',nom_theme='$nom_theme',contenu='$contenu'";
$requete.="where news.Id_news=$modifier and news.id_theme=theme.id_theme";
$resultat=mysql_query($requete,$link);
echo("modification effectuée");
}
//requete pour recupere les informations concernant la news à modifier
$requete_news = "select news.*,nom_theme from news,theme where news.Id_news='$modifier' and news.id_theme=theme.id_theme ;";
$resultat_news=mysql_query($requete_news,$link);
//parcours des lignes
while ( $ligne = mysql_fetch_array($resultat_news) )
{
?>
Modification de news:
Titre
Date
Nom_theme
Contenu
<? echo($ligne["Contenu"]);?>
<?
}
?>
|
|
|
VV 41
| Posté : 30-06-2003 10:32
Ta requete de mise à jour me parait pas très catholique...
ça me parait bizzarre de faire une jointure sur un update (je suis pas sur que update permette de modifier plusieur tables en une seule requete, surtout que ds ta requete tu mets "update news" alors que tu essaie de modifier news ET theme...).
Si t'as une table thème, logiquement, c'est qu'un enregistrement de cette table peut correspondre a (0,N) enregistrements de la table News (sinon ça sert a rien d'avoir une table theme, tu pourrais très bien mettre le nom du thème directement dans la table News).
Donc ta table theme est censée avoir une ligne par thème possible existant, et grâce à ta clé referentielle dans News, tu peux retrouver auquel de ces thèmes appartient ta nouvelle.
=>Donc, si tu changes le thème d'une nouvelle, tu n'as qu'a changer la valeur de la clé referentielle id_thème dans News.
Toi, ce que tu essaie de faire, c'est de changer le nom du thème, cela signifie que plusieurs news ne peuvent pas correspondre à la meme ligne de thème, sinon tu changes le nom du theme pour toutes ces news.
Moi, je le ferais plutot comme ça :
-Soit 2 news differentes ne peuvent pas avoir le même theme, et à ce moment là je ne mettrais pas de table theme, je stockerais directement le nom du theme dans la table News.
-Soit plsrs news peuvent avoir le meme theme, et la je mettrais une ligne par theme existant dans la table theme, et quand ja change le theme d'une news, je ne change que la valeur de la clé referentielle :
tu récuperes le nouveau numéro de theme dans une variable (via ton formulaire+ une ou deux lignes de php) ex : $notheme
puis tu fais ton update :
$requete="update news set titre='$titre',date='$date',id_theme='$notheme', contenu='$contenu'";
$requete.="where news.Id_news=$modifier";
$resultat=mysql_query($requete,$link);
Et voila, ton thème est changé |  Profil
|
|
Anonyme 19853
| Posté : 30-06-2003 11:00
Citation : "30-06-2003 10:32, VV a écrit :
Ta requete de mise à jour me parait pas très catholique...
ça me parait bizzarre de faire une jointure sur un update (je suis pas sur que update permette de modifier plusieur tables en une seule requete, surtout que ds ta requete tu mets "update news" alors que tu essaie de modifier news ET theme...).
Si t'as une table thème, logiquement, c'est qu'un enregistrement de cette table peut correspondre a (0,N) enregistrements de la table News (sinon ça sert a rien d'avoir une table theme, tu pourrais très bien mettre le nom du thème directement dans la table News).
Donc ta table theme est censée avoir une ligne par thème possible existant, et grâce à ta clé referentielle dans News, tu peux retrouver auquel de ces thèmes appartient ta nouvelle.
=>Donc, si tu changes le thème d'une nouvelle, tu n'as qu'a changer la valeur de la clé referentielle id_thème dans News.
Toi, ce que tu essaie de faire, c'est de changer le nom du thème, cela signifie que plusieurs news ne peuvent pas correspondre à la meme ligne de thème, sinon tu changes le nom du theme pour toutes ces news.
Moi, je le ferais plutot comme ça :
-Soit 2 news differentes ne peuvent pas avoir le même theme, et à ce moment là je ne mettrais pas de table theme, je stockerais directement le nom du theme dans la table News.
-Soit plsrs news peuvent avoir le meme theme, et la je mettrais une ligne par theme existant dans la table theme, et quand ja change le theme d'une news, je ne change que la valeur de la clé referentielle :
tu récuperes le nouveau numéro de theme dans une variable (via ton formulaire+ une ou deux lignes de php) ex : $notheme
puis tu fais ton update :
$requete="update news set titre='$titre',date='$date',id_theme='$notheme', contenu='$contenu'";
$requete.="where news.Id_news=$modifier";
$resultat=mysql_query($requete,$link);
Et voila, ton thème est changé "
----------
cela ne marche toujours pas peux tu me donner la requete complète en regardant mes codes merci d'avance. |
|
|
Anonyme 19853
| Posté : 30-06-2003 11:18
cela ne marche toujours pas peux tu me donner la requete complète en regardant mes codes merci d'avance.
|
|
|
VV 41
| Posté : 30-06-2003 13:56
La requete que je t'ai donnée est complete.
Sauf erreur de ma part elle devrait marcher si tu a fait comme je t'ai dit.
Fais voir le code de ton formulaire, peut-être que ça vient de là...
Essaie la requete d'update dans la "fenetre sql" de phpmyadmin ou ds mysql en mode commande, tu vera si le pb vient de la requete ou du reste du code, et si ça vient de la requete, tu auras un message d'erreur plus clair. |  Profil
|
|
Anonyme 19853
| Posté : 30-06-2003 14:30
peut etre que je n'ai pas bien compris, $notheme c'est quoi et comment je fais pour recuperer le nouveau numero dans mon formulaire.
voici mon formulaire de modif:
<form name="form1" action="modifier_news.php" method="get" >
<table width="279" height="40"border="0">
<tr bgcolor="#0099FF">
<th width="106">
Titre
</th>
<td>
<input name="titre" type="text" value="<? echo($ligne["Titre"]);?>">
</td>
</tr>
<tr bgcolor="#0099FF">
<th width="106">
Date
</th>
<td>
<input name="date" type="text" value="<? echo($ligne["Date"]);?>">
</td>
</tr>
<tr bgcolor="#0099FF">
<th width="106">
Nom_theme
</th>
<td>
<input name="nom_theme" type="text" value="<? echo($ligne["nom_theme"]);?>">
</td>
</tr>
<tr bgcolor="#0099FF">
<th width="106">
Contenu
</th>
<td><textarea name="contenu" cols="30" rows="5"><? echo($ligne["Contenu"]);?></textarea></td>
</tr>
<tr>
<br>
<td><input type="hidden" name="modifier" value="<? echo ($modifier);?> "></td>
<td colspan="2" >
<div align="left">
<input type="submit" name="valider" value="Valider">
</div>
</td>
</tr>
merci de me repondre.
peux-tu bien m'orienter? |
|
|
VV 41
| Posté : 30-06-2003 14:53
$notheme c'est la valeur que tu dois donner à ta clé referentielle id_theme, et qui doit correspondre avec un id_theme de ta table theme.
Chaque theme est identifié par son numéro dans la table theme.
Pour définir celui de ta news, tu n'as qu'a mettre son numéro dans la clé referentielle id_theme de la table News, pour ça il faut que tu mettes ce numéro dans $notheme (par exemple) puis que tu éxecutes la requete que je t'ai donnée.
pour récuperer la valeur dans $nothemetu peux le faire avec des if (mais c'est long stt si tu as bcp de themes possibles), moi je te conseille de le faire avec
des boutons-radio |  Profil
|
|
Anonyme 19853
| Posté : 30-06-2003 16:44
merci je vais essayer ta demarche |
|
|