Modifier les données d'un base avec formulaire

Répondre
Zobaree
le 06/11/2007 à 11:55
Zobaree
Salut à tous!

J'ai suivis ce tutoriel: http://www.lephpfacile.com/cours/15-modifier-des-donnees-de-votre-base
Le code me permet de modifier les données dans une table.
Cependant, je me demandais si quelqu'un pourrait ajouter se qu'il faut afin que je puisse modifier les valeurs de la table avec un formulaire (en utilisant textarea).

A partir de cela, j'essayerais de remplacer le simple formulaire par l'éditeur TinyMCE.

test.php
<?php
// on se connecte à notre base
$base = mysql_connect ('localhost', 'root', '');
mysql_select_db ('ladle', $base) ;
?>
<html>
<head>
<title>Modification de la table pages</title>
</head>
<body>
<?php
// lancement de la requête
$sql ='UPDATE pages SET content="Test de modification" WHERE id="1"';

// on exécute la requête (mysql_query) et on affiche un message au cas où la requête ne se passait pas bien (or die)
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());

// on ferme la connexion à la base
mysql_close();
?>
Modification effectuées.
</body>
</html>

Nom de la DB: ladle
Nom de la table: pages
Structure de la table: id et content
Modification souhaité: contenu de content pour id = 1

Merci à vous :)
Keika
le 06/11/2007 à 13:54
Keika
Fastoche,

tu crees un formulaire avec un input type textarea, name="content", action="ton-fichier-php.php"

et dans ce fichier php tu test avec des IF si $_POST['content'] est declare et si oui, tu mets $_POST['content'] apres le SET content="ici"
Le PHP --> C'est dur !
Zobaree
le 06/11/2007 à 16:30
Zobaree
smiley Fastoche... Héhé, tu pourrais me montrer un bout de code? J'ai pas pigé... (Je suis grand-débutant en PHP) :)
LupusMic
le 06/11/2007 à 18:11
LupusMic
On ne va pas te donner la béqué non plus. Je t'invite à lire le manuel de PHP in extenso. C'est peut-être pas funky, ce n'est peut-être pas glamour, mais c'est la seule solution pour avoir les notions de base de PHP.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Zobaree
le 06/11/2007 à 19:18
Zobaree
Ok, ok je me suis creusé les méninges donc: j'ai 2 pages.

Edit.php
<?php
$base = mysql_connect ('localhost', 'root', '');
mysql_select_db ('ladle', $base) ;
?>
<html>
<head>
<title>TinyMCE Test</title>

<script language="javascript" type="text/javascript" src="jscripts/tiny_mce/tiny_mce.js"></script>
<script language="javascript" type="text/javascript">
tinyMCE.init({
mode : "textareas",
theme : "advanced",
plugins : "safari,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions",
theme_advanced_buttons1_add_before : "save,separator",
theme_advanced_buttons1_add : "fontselect,fontsizeselect",
theme_advanced_buttons2_add : "separator,insertdate,inserttime,preview,zoom,separator,forecolor,backcolor",
theme_advanced_buttons2_add_before: "cut,copy,paste,separator,search,replace,separator",
theme_advanced_buttons3_add_before : "tablecontrols,separator",
theme_advanced_buttons3_add : "emotions,iespell,flash,advhr,separator,print",
theme_advanced_toolbar_location : "top",
theme_advanced_toolbar_align : "left",
theme_advanced_path_location : "bottom",
theme_advanced_resizing : true,
plugin_insertdate_dateFormat : "%Y-%m-%d",
plugin_insertdate_timeFormat : "%H:%M:%S",
external_link_list_url : "example_data/example_link_list.js",
external_image_list_url : "example_data/example_image_list.js",
valid_elements : "?[*]",
verify_html : true,
flash_external_list_url : "example_data/example_flash_list.js"

});
</script>

</head>
<body>
<?php
$sql = 'SELECT content FROM pages WHERE id = "1"';
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$data = mysql_fetch_array($req);

mysql_free_result ($req);
mysql_close ();
?>
<form method="post" name="editer">
<textarea name="contenu" cols="50" rows="15"><?php echo $data['content']; ?></textarea>
<input type="submit" id="button" name="content" value="Sauvegarder" action="test.php"/>
</form>
</body>
</html>

J'ai intégré TinyMCE, j'ai testé, il m'affiche correctement le contenu de content pour id=1. Ensuite (dans le même dossier):
test.php
<?php
$cnx=mysql_connect( "localhost", "root", "" );

$db=mysql_select_db("ladle");
$content=$_POST["content"];
$sql=("UPDATE pages SET content='".$content."' WHERE id='1'");

mysql_unbuffered_query($sql);

$requete = mysql_query($sql) or die( mysql_error());

if($requete)
{
echo("La modification à été correctement effectuée");
}
else
{
echo("La modification à échouée");
}
?>

J'ai fait un petit truc comme vous m'avez dit.
Enfin, ça ne marche pas. Je ne suis pas sur de la méthode... Pourriez vous m'éclairer?
Keika
le 07/11/2007 à 02:01
Keika
ouais je peux t'aider...

Voila un article sur les formulaires HTML, tu regarderas la premiere ligne de ton formulaire et tu verras que quelque chose manque...

Ensuite, tu dis dans test.php d'utiliser la variable $centent, seulement tu ne l'a pas declare avant... et enfin, tu auras toujours(enfin presque, si ta requete est foireuse ca passera pas) une variable $requete, que la mise a jour soit faite ou pas...

Bon courage
Le PHP --> C'est dur !
Zobaree
le 07/11/2007 à 11:29
Zobaree
Ok, donc pour le formulaire j'ai oublier method="post" action="test.php". Se qui me donne:
Edit.php
...
<form method="post" name="editer" action="test.php">
<textarea name="contenu" cols="50" rows="15"><?php echo $data['content']; ?></textarea>
<input type="submit" id="button" name="content" value="Sauvegarder"/>
</form>
...


Ensuite, je ne sais pas quoi mettre pour la variable $content smiley
Zobaree
le 07/11/2007 à 14:48
Zobaree
J'ai enfin résolut mon problème (et j'ai appris beaucoup de chose pour un premier script!), merci Keika!
Voici le résultat:
Visualisation.php
...
<form method="post" name="Editer" action="Modification.php">
<textarea name="content" cols="50" rows="15"><?php echo $data['content']; ?></textarea>
<input type="submit" id="button" name="Sauvegarder" value="Sauvegarder"/>
</form>
...

Modification.php
<?php
if(isset($_POST['content'])) $content=$_POST['content'];
else $content="";

if(empty($content))
{
echo '<font color="red">Erreur, la page est vide!</font>';
}

else
{
$db = mysql_connect('localhost', 'root', '') or die('Erreur de connexion '.mysql_error());
mysql_select_db('ladle',$db) or die('Erreur de selection '.mysql_error());
$sql = "UPDATE pages SET content='$content' WHERE id='1'";

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

echo 'Les modifications ont étés effectuées avec succès.';

mysql_close();
}
?>
Keika
le 08/11/2007 à 05:09
Keika
Aaaah encore un qui utilise les IF sans accolades !

Mets des accolades {} pour encadrer tes conditionnelles stp !

Mais je ne vois pas le dynamisme ? Tu ne fais toujours que changer ta pas avec l'ID=1... faut que tu arrives a placer l'id de la page que tu veux changer...
Le PHP --> C'est dur !
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours