envoi de contenu d'un formulaire dans une table de db

Mammouth du PHP | 843 Messages

12 févr. 2006, 01:49

salut à tous :D
je debute en php et j'aurai besoin d'un coup de pouce pour faire un script encore un peu complexe pour moi :oops:


j'ai un formulaire qui contient un champ date et un textarea contenu.

Code : Tout sélectionner

<form class="editor" method="post" action="sauve_manif.php"> <p class="txt_admin">Entrer ici la date de l'evenement (au format MMJJAAAA):</p> <input name="champ_date" type="text" size="6" maxlength="8" /> <br /> <p class="txt_admin">Entrer ici le contenu d&eacute;sir&eacute; pour la page manifestation du site</p> <textarea name="content" cols="70" rows="20">Entrez le code de votre page ici:</textarea> <input type="submit" value="Sauver" /> <input type="submit" value="Aperçu" /> </form>
l'objectif est de pouvoir enregistrer des variables dans un fichier php pour les récuperées en echo sur une page de site.

je veut par ce formulaire, enregistrer un genre de planning de manifestation sur une page de site.

mon planning doit bien sur afficher les manifestations dans l'ordre chronologique.

pour le formulaire, c'est un genre de bbcode avec en plus un champs date (en format us sans les / / et remplis manuellement) pour la gestion chronologique des evenements entrés

en claire, l'utilisateur entre une seule manifestation à chaque fois sans ce préoccuper de rien et le script save_manif.php enregistre le contenu dans un fichier data_manif.php.

il faudrat s'assurer que le nombre de manif du planning ne depasse jamais les 10.

ensuite il faudrait que ce script (ou un autre) efface les manif et date une fois que celles ci sont passées.

il faudrai aussi qu'il tri chaque manif de façon chronologique avant de les enregistrer dans data_manif.php.

pour que cela soit un peu plus claire à comprendre, il faut s'imaginé le rendu rechercher par la recuperation en echo sur la page du site.

pour toutes des manif enregistrer on récuperera par echo:

Code : Tout sélectionner

<b>pour le ' $date'</b><br /> <div>$event</div><br /> <b>pour le ' autre $date'</b><br /> <div> autre $event</div><br /> etc, etc,...
si vous comprenné ce que je cherche à faire et que vous pouvez me donné un coup de main :wink:

c'est surement possible en enregistrant les evenement dans un même tableau où les dates seront les clés mais je voit pas trop comment faire :oops:

Merci d'avance :wink:
Modifié en dernier par BeRoots le 12 févr. 2006, 22:05, modifié 1 fois.
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

HD
Mammouth du PHP | 1181 Messages

12 févr. 2006, 02:00

ta methode de stockage des donnees dans un fichier texte ou php n'est pas pratique
je te propose plutot d'utiliser une base de donnees
plus d'infos sur le SQL :
http://www.commentcamarche.net/sql/sqlintro.php3
http://www.phpdebutant.org/article62.php
"Si Dieu descendait sur la Terre, tous les peuples se mettraient a genoux, excepte les Français qui diraient : " Ah ! Vous êtes la ! C'est pas trop tôt ! On va pouvoir discuter un peu !" [Michel Balfour]

Mammouth du PHP | 843 Messages

12 févr. 2006, 02:22

ok mais j'y connait pas grand chose à mysql :oops:

si vous pouver m'aider quand même à le faire avec une base de données :wink:

si un admin peut mettre ce sujet dans le forum sql ;)
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

HD
Mammouth du PHP | 1181 Messages

12 févr. 2006, 02:36

c'est une occasion pour s y mettre
une bonne base de depart :
http://genomenews.free.fr/formation.html
http://www.moteurprog.com/?url=tuto_aff ... utorial=35
c'est mieux que si quelqu'un faisait ca à ta place
on est là si t a besoin d'aide :wink:
"Si Dieu descendait sur la Terre, tous les peuples se mettraient a genoux, excepte les Français qui diraient : " Ah ! Vous êtes la ! C'est pas trop tôt ! On va pouvoir discuter un peu !" [Michel Balfour]

Mammouth du PHP | 19672 Messages

12 févr. 2006, 10:50

si un admin peut mettre ce sujet dans le forum sql ;)
Ce ne sera à mon avis pas opportun, tu vas avoir du code PHP à écrire pour la communication des informations au serveur de base de données, la requête n'étant pas la partie la plus complexe.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 843 Messages

12 févr. 2006, 16:36

voila, j'ai attaqué mon script php qui va enregistrer les $date et $manif de mon formulaire dans une table de ma db.

j'aimerai crée automatiquement la table mais je bloque un peu :oops:
<?php

$dbhost = "localhost";
$user = "root";
$password = "";
$usebdd = "madb";

//connexion au serveur MySQL

$connexion = mysql_connect("dbhost","user","password");
if (!$connexion) {
echo "Impossible d'effectuer la connexion";
exit;
}

//sélection de la BDD

$db = mysql_select_db("$usebdd", $connexion);
if (!$db) {
echo "Impossible de sélectionner cette base données";
exit;
}

// séléction de la table, si inexistante on la créé



// insertion des données recuperer dans la table


?>
si quelqu'un peu m'aider pour sélectionner la table et la crée si inexistante :wink:

mes parametre de table sont:

Code : Tout sélectionner

create table table_manif ( date char(8), manif text(1000), primary key(date) );
ps1: pour le champs manif, c'est du code html récuperé d'un wysiwyg donc je sait pas si varchar ou text?
ps2: vu ce que je doit faire je sait pas non plus si j'ai besoin de cree un champ id?


merci d'avance :wink:
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

Mammouth du PHP | 19672 Messages

12 févr. 2006, 17:00

Pourquoi un type char() pour enregistrer une date ?

Je te signale que le mot "date" est réservé en SQL, donc nommer un champ "date" est une très mauvaise idée. Ensuite, tu as des type DATE ou DATETIME qui sont beaucoup plus appropriés que CHAR. Enfin, si tu enregistres ce champ en clé primaire, ça veut dire que tu ne pourras enregistrer qu'une ligne par jour puisque la clé primaire est unique.

Donc un champ identifiant en INT auto_incrément me semblerait justifié.

Je terminerais sur un autre point: pourquoi faire créer la table ? Crée la table une fois pour toutes et n'ajoutes pas cette partie inutilement dans ton code: ça va effectuer un test inutile à chaque exécution.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 843 Messages

12 févr. 2006, 17:24

Pourquoi un type char() pour enregistrer une date ?
pour un type date, le format de date est apparament AAAA-MM-JJ mais dans ce que je cherche à faire avec cette table, doit on utilisé les - pour le format de date quand on voudra completer le champs date du formulaire?

de plus c'est pas la date d'insertion dans la table qui m'interesse mais la date de la manif correspondante donc c'est bien

Code : Tout sélectionner

date_manif char(8)
sinon pour ce qui est de la création auto de la table, ok je vais faire ça à la mimine :wink:

par contre pensez vous que ce format conviendrai pour mon utilisation de cette table (tri par date, effacer les lignes dont la date est dépassée automatiquement à chaque récuperation de données dans la table, et affichage sur un page html du contenu du champs manif):

Code : Tout sélectionner

create table table_manif ( manif_id int not null auto_increment, date_manif char(8), manif text(1000), primary key(manif_id) );
Modifié en dernier par BeRoots le 12 févr. 2006, 17:56, modifié 1 fois.
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

Mammouth du PHP | 19672 Messages

12 févr. 2006, 17:38

Le format de la date tel qu'il est enregistré dans MySQL n'est pas vraiment un problème, ça se manipule très bien pour un affichage différent sur le site. On utilise pour ça des expressions régulières : fais une recherche sur "format date expression régulière" (tous les termes) dans le forum, tu vas trouver des choses instructives.

Le type DATE ouvre la possibilité d'utiliser des tri et des fonctions intégrées en SQL avec MySQL, voir la documentation à ce propos
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 843 Messages

12 févr. 2006, 18:16

est il possible de créé un champs de table comme ceci:

Code : Tout sélectionner

date_manif date(%d%m%Y),
ensuite dans le champs du formulaire qui va renseigner la date de la manif, l'utilisateur entrera 31122006 tel quel
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

Mammouth du PHP | 19672 Messages

12 févr. 2006, 18:53

Non, le type sera DATE tout court, et ton internaute rentrera une date au format normal, il t'appartiendra de traiter la chaine pour la formater selon les spécifications de MySQL, donc de la mettre au format AAAA-MM-JJ.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 843 Messages

12 févr. 2006, 20:30

j'ai crée ma db et ma table mais par contre j'ai un probleme lors des test :?

mon formulaire en html:

Code : Tout sélectionner

<form class="editor" method="post" action="sauve_manif_db1.php"> <p class="txt_admin">Entrer ici la date de l'evenement (au format AAAA-MM-JJ):</p> <input name="champ_date" type="text" size="7" maxlength="10" /> <br /> <p class="txt_admin">Entrer ici le contenu d&eacute;sir&eacute; pour la page manifestation du site</p> <textarea name="content" cols="70" rows="20">Entrez le code de votre page ici:</textarea> <input type="submit" value="Sauver" /> </form>
mon php qui recupere les deux champs pour enregistrer dans la db:
<?php
// ATTENTION, pour que le script fonctionne la table doit être créee

$dbhost = "localhost";
$user = "mon login";
$password = "mon pass";
$usebdd = "ma_db";

//connexion au serveur MySQL

$connexion = mysql_connect("dbhost","user","password");
if (!$connexion) {
echo "Impossible d'effectuer la connexion";
exit;
}

//sélection de la BDD

$db = mysql_select_db("$usebdd", $connexion);
if (!$db) {
echo "Impossible de sélectionner cette base données";
exit;
}

// insertion des données recuperer dans la table

$manif_date  = $_POST['champ_date'];
$manif  = $_POST['content'];

$resultat_sql = mysql_query("insert into table_manif values ('$manif_date','$manif')", $connexion);

// redirection
header("location: manif_admin_test.html");
exit;

?>
les parametre de ma table créé:

Code : Tout sélectionner

CREATE TABLE `table_manif` ( `manif_id` INT( 10 ) NOT NULL AUTO_INCREMENT , `manif_date` DATE NOT NULL , `manif` TEXT NOT NULL , PRIMARY KEY ( `manif_id` ) ) TYPE = MYISAM;
le message d'erreur que j'ai est:
Not Found

The requested URL /test/admin/sauve_manif_db1.php was not found on this server.
Apache/2.0.54 (Unix) mod_ssl/2.0.54 OpenSSL/0.9.7e Server at www.mon_adresse.fr Port 80
même en local via easyphp, j'ai ce message d'erreur.

pourtant mon fichier sauve_manif_db1.php est bien dans le même dossier que la page qui contient mon formulaire :(

si quelqu'un voit d'ou peut venir le problème :wink:
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

Mammouth du PHP | 843 Messages

12 févr. 2006, 22:01

j'ai fait un essai avec un script coucou.php qui ne contient que echo "coucou";
je la mis à la place de l'autre dans le formulaire et ça marche :?

c'est donc bien mon ficher sauve_manif_db1.php qui pose problème mais je ne voit vraiment pas où ça cloche :cry:

et vous?
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

Mammouth du PHP | 19672 Messages

12 févr. 2006, 22:04

Je vois pas trop : essaye à tout hasard en mettant:
<form class="editor" method="post" action="./sauve_manif_db1.php">
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 843 Messages

12 févr. 2006, 22:11

j'ai deja essayer mais c'est pareil :evil:
j'ai aussi réenregistrer ce script php sous un autre mon mais rien à faire :cry:

est ce que le code php vous semble correct sinon et pensez vous que ma table sera incrementer en faisant ainsi?
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non: