Journal web de classe _ besoin d'aide ! SVP

bidbidon Messages postés 9 Date d'inscription samedi 17 octobre 2009 Statut Membre Dernière intervention 21 avril 2010 - 12 mars 2010 à 02:00
bidbidon Messages postés 9 Date d'inscription samedi 17 octobre 2009 Statut Membre Dernière intervention 21 avril 2010 - 15 mars 2010 à 23:44
Bonjour et merci à ceux qui m'accoderont un peu de leur temps ...


Je m'explique je suis en train de fabriquer un site d'école et je voudrai y intégrer des journaux de classes
Mais je n'arrive pas à faire fonctionner mon formulaire de saisie d'article.

Il doit transmettre la classe, la date, l'auteur, le titre, une intro, le corps du texte et uploader sur la base une image, aprés un N° qui s'auto-incremente.
Je vous montre mon code, en espérant que vous pourrez m'aider !!!

Probleme: Quand j'appuie sur soumettre , il ne se passe rien ???

CODE:

<html>
<head>
<title>Insérer un nouvel article</title>
</head>


<?php

if(isset($soumettre)):
mysql_connect("localhost", "xxxxx", "xxxxx");
mysql_select_db("xxxxx");

$date= date("Y-m-d");
$image_tmp =$_FILES["image"][tmp_image];
$image_size =$_FILES["image"][size];

$donneesimage = addslashes(fread(fopen($image_tmp, "r"),$image_size));


mysql_query ("INSERT INTO journaux_tbl(N°,'Classe','Date','Auteur','Titre','Intro','Corps','Image')
VALUES('','$classe','$date','$auteur','$titre','$intro','$corps','$donneesimage')");
print("Les données ont été saisies
\n");
print(" Vous pouvez saisir un nouvel article ci-dessous <hr>\n");
endif;
?>

Saisissez votre article pour le journal web de l'école
:

<forma action ="saisie_article2.php" method="post" enctype="multipart/form-data">
Classe :

Auteur :

Titre :

Intro :
<textarea col=500 rows=10 name="intro"></textarea>
Corps :
<textarea col=600 rows=30 name="corps"></textarea>
Image :



</form>


</html>

9 réponses

kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
12 mars 2010 à 06:03
Salut,

Je n'ai que parcouru :
- <forma est une erreur de recopie ?
- où sont définies les variables $classe, $titre, $auteur, etc ...

Cordialement,

Kohntark -
0
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
12 mars 2010 à 12:28
Salut,

if(isset($soumettre)):

Le ":" n'a rien à faire ici.
La variable $soumettre n'est jamais définie, donc ta condition sera toujours fausse. Même chose pour les variables $classe, $date, $auteur, $titre, $intro et $corps

Une autre erreur est l'oubli des accolades après le if afin que les instructions qui suivent se trouvent dans ce bloc. Sans celà, seul la première instruction dépendra du if.

Dans ton formulaire il manque le MAX_FILE_SIZE. Relis donc la doc concernant l'upload de fichiers par post.

addslashes() n'est pas recommandée, mysql_real_escape_string() est préférable.

Tu ne fait aucun contrôle du fichier envoyé mis à part lors de l'insertion dans le db, ton site est vulnérable aux attaques XSS et compagnie.

Sinon juste pour info, il existe file_get_contents() pour simplifier l'accès au contenu d'un fichier.
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
12 mars 2010 à 13:18
@TychoBrahe:
le 'if():... endif;' est la syntaxe alternative de if(){} et semble correcte


Cordialement,


Kohntark -
0
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
12 mars 2010 à 13:36
@Kohntark:
Merci pour la précision, je ne connaissais pas cette syntaxe.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
bidbidon Messages postés 9 Date d'inscription samedi 17 octobre 2009 Statut Membre Dernière intervention 21 avril 2010
12 mars 2010 à 19:21
Oui le forma est une errueur de copie dsl

mais pour les variables ???
je suis débutant en php et je me suis basé sur un bouquin pour batir ce code (pas trés chouette apparemment je vous l'accorde !!!)
Je sais que sais en essayant et en construisant qu l'on apprend, mais si quelques BALESE du php parmis vous pouvaient me bricoler ce code pour qu'il soit opérationnel, ce serait super sympa parce que là je sèche...(je crois qu'il faut que j'achete un autre bouquin !!!)
Mais je manque de temps.

Merci à ceux qui ont parcouru mon message.
Merci à ceux qui entendront ce second appel au secours.
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
12 mars 2010 à 20:18
Malheureusement ce forum n'est pas là pour fournir du code tout fait ou faire le travail des autres.

Les variables provenant de ton formulaire doivent être définie par :
$taVariable = $_POST['laVariablePostée'];

cf : http://php.net/manual/fr/language.variables.external.php
http://www.php.net/manual/fr/security.globals.php

Il faut également traiter toutes les variables externes car tu ne peux connaitre leur contenu :
- sécurité (injection SQL, defacing, ...)
- caractères spéciaux (',\,", ...)

cf : http://fr.php.net/manual/fr/function.mysql-real-escape-string.php

Pour ta variable $classe qui entre dans la requête par exemple :
$classe = mysql_real_escape_string($_POST['classe']);

Traitement à effectuer avant la requête INSERT bien évidemment.

Corrige donc les points soulevés et ça devrait rouler un peu mieux, même si c'est loin d'être parfait.

En ce qui concerne la syntaxe du if que tu utilises oublie là !! Non pas qu'elle soit fausse mais elle n'amène rien et n'est pour ainsi dire jamais utilisée par les développeurs (la preuve y a un "BALEZE" qui ne connaissait pas )

if (machintruc == 'bidule') {
echo 'truc muche';
}

Cordialement,

Kohntark -
0
bidbidon Messages postés 9 Date d'inscription samedi 17 octobre 2009 Statut Membre Dernière intervention 21 avril 2010
12 mars 2010 à 20:30
je te remercie beaucoup pour ton aide je potasse ses liens ce week end et bosse dessus ...


mais peut etre aurais je encore besoin de vos services plus tard !!!
0
bidbidon Messages postés 9 Date d'inscription samedi 17 octobre 2009 Statut Membre Dernière intervention 21 avril 2010
13 mars 2010 à 23:16
[b]bon voilà j'ai bossé, mais j'i petit soucis avec l'upload de l'image dans la base!!!

parce que j'ai ce message:/b

[b][b]Notice: Undefined index: image in H:\www.ecole_st_remy.fr\essai\ajouter_article.php on line 20

Notice: Undefined index: image in H:\www.ecole_st_remy.fr\essai\ajouter_article.php on line 21

Notice: Undefined index: image in H:\www.ecole_st_remy.fr\essai\ajouter_article.php on line 22

Notice: Undefined index: image in H:\www.ecole_st_remy.fr\essai\ajouter_article.php on line 23

Warning: fopen() [function.fopen]: Filename cannot be empty in H:\www.ecole_st_remy.fr\essai\ajouter_article.php on line 24

Warning: fread() expects parameter 1 to be resource, boolean given in H:\www.ecole_st_remy.fr\essai\ajouter_article.php on line 24
Attention,certains champs sont vides ! /b/b
______________________________________________________________________________
Voici mon formulaire:

<html><center>
<form method= "POST" action="ajouter_article.php">
<center>

<select name="Classe">
<option value=" " selected="selected">Choisissez votre classe</option>
<option value="Maternelle_1">Maternelle_1</option>
<option value="Maternelle_2">Maternelle_2</option>
<option value="CP">CP</option>
<option value="CE">CE</option>
<option value="CM">CM</option>
<option value="Enseignants">Enseignants</option>
</select>












<textarea name="Intro" cols="100" rows="6" size="20" value="Intro"> </textarea>



<textarea name="Corps" cols="100" rows="20" size="20" value="Corps"> </textarea>

</form>

<form method="POST" action="ajouter_article.php" enctype="multipart/form-data">








</form>
</center></html>
___________________________________________________________________________________
et voici mon script d'insertion PHP:(ajouter_article.php)

<?php
// On commence par récupérer les champs
if(isset($_POST['Classe'])) $classe =$_POST['Classe'];
else $Classe="";

if(isset($_POST['Auteur'])) $auteur=$_POST['Auteur'];
else $Auteur="";

if(isset($_POST['Titre'])) $titre=$_POST['Titre'];
else $Titre="";

if(isset($_POST['Intro'])) $intro=$_POST['Intro'];
else $Intro="";

if(isset($_POST['Corps'])) $corps=$_POST['Corps'];
else $Corps="";

$date=date("Y-m-d");

$image_tmp =$_FILES["image"]["tmp_image"];
$image_name =$_FILES["image"]["name"];
$image_size =$_FILES["image"]["size"];
$image_type =$_FILES["image"]["type"];
$donneesimage = addslashes(fread(fopen($image_tmp, "r"),$image_size));

// On vérifie si les champs sont vides
if(empty($classe) OR empty($auteur) OR empty($titre) OR empty($intro) OR empty($corps))
{
echo 'Attention,certains champs sont vides !';
}

// Aucun champ n'est vide, on peut enregistrer dans la table
else
{
// connexion à la base
$db = mysql_connect('localhost', '2196S', '2196S') or die('Erreur de connexion '.mysql_error());
// sélection de la base

mysql_select_db('stremysite',$db) or die('Erreur de selection '.mysql_error());

// on écrit la requête sql
$sql = "INSERT INTO journaux_tbl('Classe','Date','Auteur','Titre','Intro','Corps','Image')
VALUES('','$classe','$date','$auteur','$titre','$intro','$corps','$donneesimage')";

// on insère les informations du formulaire dans la table
mysql_query($sql) or die('Erreur SQL !'.$sql.'
'.mysql_error());

// on affiche le résultat pour le visiteur
echo 'Votre article a été ajoutées.';

mysql_close(); // on ferme la connexion
}
?>
________________________________________________________________________

[b]J'ai beaucoup de bonne volonté... mais j'ai besoin "ENCORE" d'un coup de main SVP

Merci d'avance à tous les balezes qui passe par là et qui prennent le temps d'y jeter un coup d'oeil !!!/b
0
bidbidon Messages postés 9 Date d'inscription samedi 17 octobre 2009 Statut Membre Dernière intervention 21 avril 2010
15 mars 2010 à 23:44
ça y est enfin je m'en suis sortie !!!

9a marche j'arrive à transferer toutes les données écrites de mon formulaire sur ma base!!!

Mais j'ai ajouter un <input type="file" a la fin du formulaire:

Je voudrais copier le fichier image dans un dossier défini du site.
et mettre le raccourcis qui y correspond dans la base...


Comment faire !!!
0
Rejoignez-nous