Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/04/2007, 15h25   #1
Membre du Club
 
Inscription : février 2007
Messages : 274
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 274
Points : 53
Points : 53
Par défaut forum petit problème

bonjour ,
j'ai commencer un forum mais il ne veut pas enregistrer
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
  <title>index ----> forum --> <?php { echo $don['categorie'];}?> --> ajouter sujet</title>
       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
	   <link rel="stylesheet" type="text/css" media="screen" title="Simple" href="toutetrien.css" />
   </head>
   <body><?php
include("menu.php");
     ?>
 
	 <div id="corps">
<input type="text" name="titre"><br />
<textarea name="message"></textarea><br />
<input type="submit" value="ajouter un sujet"><br />
<?php
 if(!empty($_POST) ) // le form a été soumis
{
  // servira à enregistrer les messages pour les erreurs rencontrées
   $_POST = array_map('trim', $_POST);
 
   $pseudo = $_SESSION['pseudo'];
$message = mysql_escape_real($_POST['message']);
$titre = mysql_escape_real($_POST['titre']);
 
        $erreur = array();
		if(empty($titre))
		{
		$erreur[] = 'veillez mettre un titre';
		}
		elseif(empty($message))
		{
		$erreur[] = 'veullez mettre un message';
		}
		elseif(preg_match("#viagra|^cialis$|cialis</a>|levitra|<a |<img #i" , $message) == true)
		{
		$erreur[] = 'arg le spam est interdit';
		}
 
 
		if(empty($erreur))
{  
 
 
 
 
 
 
/// tout ce qui est avant c'est la vérification  avnat d'enregistrer dans la table
mysql_query("INSERT INTO sujet VALUES('','".$pseudo."','".$message."','".$titre."','".$_GET['categorie']."','". time() ."')")or die (mysql_error());// ben l'enregistrement  dans la table
 
{
echo 'votre sujet est bien enregistrer ';
}
}
}
 
if( !empty($erreur) ) // Donc le formulaire a été envoyé et au moins une erreur a été rencontrée
{
   // on affiche les erreurs
   foreach( $erreur as $valeur )
    echo $valeur . '<br>';
}
il n'y a aucunne erreur

je donne aussi les donnée de la table
Code SQL :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
-- 
-- Structure de la table `sujet`
-- 
 
CREATE TABLE `sujet` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `auteur` varchar(20) character SET latin1 NOT NULL,
  `message` text character SET latin1 NOT NULL,
  `titre` varchar(50) character SET latin1 NOT NULL,
  `id_categorie` int(6) NOT NULL,
  `timestamp` bigint(20) NOT NULL,
  PRIMARY KEY  (`id`),
  FULLTEXT KEY `message` (`message`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=80 ;
 
-
la vous allez me dire tout va bien quesqui se passe au juste :s

ben en faite il exécuter c'est comme s'il ne fesait rien merci de m'aider
schats est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/04/2007, 15h31   #2
Modérateur
 
Avatar de Rakken
 
Inscription : août 2006
Messages : 1 207
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 1 207
Points : 1 137
Points : 1 137
Code :
 if(!empty($_POST) ) // le form a été soumis
Cette notation me semble assez étrange. Elle fonctionne peut-être mais je ne l'ai jamais utilisé. Est-tu sur qu'il rentre dans le if ? (tu fais un echo ("-dans le if-"); et tu seras vite fixé).
Si ce n'est pas le cas, c'est ce test là qu'il te faudra revoir.

D'une facon pour générale, la fonction "echo", c'est ton premier outil de débuggage. Si tu vois ce qu'affiche ton echo, alors tu "sais" ou ton programme est passé. Avec un peu de pratique, sur un cas simple comme ton formulaire tu verras qu'un ou deux echo bien placé peuvent te faire trouver ton problème en moins de temps qu'il ne faut pour le poster ^_^
__________________
Rakken

Oneira, un monde imaginaire d'Heroic Fantasy.

Parce que la présomption d'innocence est un des fondements de notre pays et qu'elle doit le rester, dans tous les domaines : http://www.laquadrature.net/
Rakken est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/04/2007, 15h32   #3
Invité régulier
 
Inscription : avril 2007
Messages : 27
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Finistère (Bretagne)

Informations forums :
Inscription : avril 2007
Messages : 27
Points : 8
Points : 8
ta pas fermé ta balise php
c'est peut être pas ça
on c'est jamais
Maitrresse est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/04/2007, 15h35   #4
Membre du Club
 
Inscription : février 2007
Messages : 274
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 274
Points : 53
Points : 53
ben je suis sur quelle marche puisque je l'utilise popur voir si le formlaire a été valider ou pas :s
mettre un echo dans le if tu veut dire echo if(!empty($_POST));
???
euh non elle est fermer après la seconde condition pour éditer ou répondre a un message
schats est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/04/2007, 15h39   #5
Candidat au titre de Membre du Club
 
Inscription : avril 2006
Messages : 15
Détails du profil
Informations personnelles :
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : avril 2006
Messages : 15
Points : 14
Points : 14
Citation:
Envoyé par schats
ben je suis sur quelle marche puisque je l'utilise popur voir si le formlaire a été valider ou pas :s
mettre un echo dans le if tu veut dire echo if(!empty($_POST));
???
euh non elle est fermer après la seconde condition pour éditer ou répondre a un message
Je pense que Rakken pensait plus à quelque chose tu type

Code :
1
2
3
if(!empty($_POST){
  echo "Variabale _POST non vide.";
}
Qui te permettrait de voir si tu rentre bien dans ton 'if'.
Saturnin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/04/2007, 15h55   #6
Membre du Club
 
Inscription : février 2007
Messages : 274
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 274
Points : 53
Points : 53
euhil y a rien qui s'affiche cela veu dire que ici ca marche :s
je crois que c'est plutot dans l'enregistrement qu'autre part mais je ne vos pas ou :s
schats est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/04/2007, 16h25   #7
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 451
Points : 5 451
Salut !

Tu as rajouté le echo là où l'a conseillé Saturnin et rien ne s'affiche après passage du formulaire ?
Alors c'est que tu n'es pas rentré dans la bonne branche du if

A priori, empty(chaine) renvoie vrai si chaine est vide. Il n'est pas garanti que ça fonctionne avec un array du genre $_POST...
Je te conseil plutot d'utiliser des tests du genre empty($POST['variable']) ou isset($POST['variable']). C'est plus sûr
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/04/2007, 17h03   #8
Candidat au titre de Membre du Club
 
Inscription : avril 2006
Messages : 15
Détails du profil
Informations personnelles :
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : avril 2006
Messages : 15
Points : 14
Points : 14
A ce que je vois dans ton premier bout de code il n'y a pas de balise 'form' autour de tes 'input', si c'est le cas dans ton fichier php alors effectivement : il ne va pas se passer grand chose. Pour qu'il se passe quelque chose tu devrais noramelement avoir au minimum un truc du type :
Code HTML :
1
2
3
4
5
<form action="ma_page.php" method="post">
 <input type="text" name="titre"><br />
 <textarea name="message"></textarea><br />
 <input type="submit" value="ajouter un sujet">
</form>
Pour le empty apparemment cette méthode fonctionne pour les tableaux mais c'est vrai qu'il vaudrait mieux tester sur quelque chose de plus précis que le $_POST en entier, une variable qu'on mettrait dans le $_POST par exemple.
Saturnin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/04/2007, 17h29   #9
Membre du Club
 
Inscription : février 2007
Messages : 274
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 274
Points : 53
Points : 53
en effet ca a bien l'air d'être les from ( je les oublie assez souvent c'est vrai )
pour !empty c'est pour verifier si on a apuiyer sur le bouton ou pas :s
schats est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/04/2007, 17h56   #10
Modérateur
 
Avatar de Rakken
 
Inscription : août 2006
Messages : 1 207
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 1 207
Points : 1 137
Points : 1 137
Citation:
pour !empty c'est pour verifier si on a apuiyer sur le bouton ou pas :s
On a tous compris ce que tu voulais faire avec ca. Par contre, ce qu'on dit c'est que ta syntaxe, même dans l'éventualité ou elle fonctionne, n'est pas très "propre".
Au lieu de tester directement si $_POST est vide ou pas, il pourrait être plus judicieux de tester le contenu d'une des variables, éventuellement placé en hidden (<input type=hidden ...>) précisement pour savoir si le formulaire a été posté ou pas.
__________________
Rakken

Oneira, un monde imaginaire d'Heroic Fantasy.

Parce que la présomption d'innocence est un des fondements de notre pays et qu'elle doit le rester, dans tous les domaines : http://www.laquadrature.net/
Rakken est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/04/2007, 21h18   #11
Membre du Club
 
Inscription : février 2007
Messages : 274
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 274
Points : 53
Points : 53
Par défaut nouveau problème

bonjour un nouveau problème
en faite il ne veu pas m'afficher le données de la table
le code
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
    <title>index ----> forum --> <?php { echo $don['categorie']; }?> --> sujet</title>
 
<div id="corps">
<?php
$p = mysql_query("SELECT * FROM sujet AS S,reponse AS R WHERE R.sujet = S.id AND S.id = '".$_GET['sujet']."'")or die (mysql_error());
while ($donm = mysql_fetch_assoc($p))
{
?>
 
	 <?php
	 $message = htmlspecialchars($donm['S.message']);
	 $reponse = htmlspecialchars($donm['R.message']);
	 $auteurs = htmlspecialchars($donm['S.auteur']);
	 $auteurr = htmlspecialchars($donm['R.sujet']);
	 $titre = htmlspecialchars($donm['titre']);
 
	 {
	 echo $titre.'<br /><br /><table><tr><td>'.$auteurs.'</td><td>'.$message.'</td></tr><tr><td>'.$auteurr.'</td><td>'.$reponse.'</td></tr></table>';
	 }
	} 
	 ?>
	 </div>
schats est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2007, 09h47   #12
Modérateur
 
Avatar de Rakken
 
Inscription : août 2006
Messages : 1 207
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 1 207
Points : 1 137
Points : 1 137
Je ne suis pas sur qu'il comprennent la notation $message = htmlspecialchars($donm['S.message']); et plus précisement le 'S.message'.

A la place de ton select *, fait select S.message par exemple (et ainsi de suite), pour lui spécifier le nom de colone qu'il va connaitre une fois rapatrié dans le tableau php.

En cas de doute, tu peux toujours faire un print_r($donm) pour savoir ce que contient ce tableau de donnée. (N'hésiste pas a entourer l'affichage avec des balises <pre></pre> pour un formatage un peu plus agréable).
En fait, je te conseille même de commencer par là ^^

ps : Cela n'a rien a voir, mais le "CLIQUEZ ICI" en enorme dans la signature, je trouve ca du plus mauvais gout.
Je ne suis pas contre les liens en signature, bien au contraire, mais je reste partisant d'une certaine sobriété. Mais comme dit, ca n'a rien a voir et ca n'est qu'un avis personnel.
__________________
Rakken

Oneira, un monde imaginaire d'Heroic Fantasy.

Parce que la présomption d'innocence est un des fondements de notre pays et qu'elle doit le rester, dans tous les domaines : http://www.laquadrature.net/
Rakken est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2007, 11h37   #13
Membre du Club
 
Inscription : février 2007
Messages : 274
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 274
Points : 53
Points : 53
juste une petit question si R.message et S.message ont le même nom ca ne fait rien ?? ca ne vas pas casser la donner d'un???

il n'y a rien quand je fait le print_r($donm); just un petit >
sela voudrai dire qu'il n'y a rien :s bizare
schats est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2007, 14h05   #14
Modérateur
 
Avatar de Rakken
 
Inscription : août 2006
Messages : 1 207
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 1 207
Points : 1 137
Points : 1 137
S'il n'y a rien avec l'affichage du print_r, il faut déjà verifier si ta requete donne quelque chose. Fait donc un
Code :
echo "SELECT * FROM sujet AS S,reponse AS R WHERE R.sujet = S.id AND S.id = '".$_GET['sujet']."'";
juste avant d'executer ta requete.
Une fois ta requete affichée, lance là directement via phpMyAdmin (attention, prend bien la requete qui apparait dans le code source de la page, et pas celle qui est affiché par le navigateur, tu peux avoir des petites differences, notamment au niveau des truc un peu foireux genre \' ou \".
Et voit ce qui se passe.

ps : pour la signature, c'est nettement plus agréable ^_^
__________________
Rakken

Oneira, un monde imaginaire d'Heroic Fantasy.

Parce que la présomption d'innocence est un des fondements de notre pays et qu'elle doit le rester, dans tous les domaines : http://www.laquadrature.net/
Rakken est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2007, 14h31   #15
Membre du Club
 
Inscription : février 2007
Messages : 274
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 274
Points : 53
Points : 53
oups mal lus
j'ai
#1064 - Erreur de syntaxe près de '"SELECT * FROM sujet AS S,reponse AS R WHERE R.sujet = S.id AND S.id = '82'"' à la ligne 1

je ne voie pas ou ca bug :s
schats est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2007, 16h05   #16
Modérateur
 
Avatar de Rakken
 
Inscription : août 2006
Messages : 1 207
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 1 207
Points : 1 137
Points : 1 137
A vu de nez, ca a l'air a peu pres correct.
Donc, dans ce cas là, le mieux, c'est encore de reconstruire la requete.
"select * from sujet." -> Ca passe, tu continues
"select * from sujet as S, reponse as R" -> ca passe, tu continues, etc...
Jusqu'a avoir le résultat souhaité. Et la, tu compares avec celle qui foire, et souvent tu trouve une ptite erreur de quote mal fermée ou une syntaxe un peu foireuse.
__________________
Rakken

Oneira, un monde imaginaire d'Heroic Fantasy.

Parce que la présomption d'innocence est un des fondements de notre pays et qu'elle doit le rester, dans tous les domaines : http://www.laquadrature.net/
Rakken est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2007, 17h28   #17
Membre du Club
 
Inscription : février 2007
Messages : 274
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 274
Points : 53
Points : 53
euh juste une qestion sa sert a quoi les AS S car j'ai reprit un code de la v1.1 de mon site mais je ne sais plus ce que cela veu dire
schats est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2007, 17h33   #18
Modérateur
 
Avatar de Rakken
 
Inscription : août 2006
Messages : 1 207
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 1 207
Points : 1 137
Points : 1 137
C'est pour faire un alias. C'est facultatif, mais souvent utilisé dans le cas ou on a des jointures sur plusieurs tables qui possèdent des noms de champs identique. Plutot que d'écrire
Code :
select le_nom_de_ma_table.champ1, le_nom_de_ma_table.champ2 from le_nom_de_ma_table;
On ecrit
Code :
select t.champ1, t.champ2 from le_nom_de_ma_table as t
Ici, c'est evidement un cas d'école et ca ne sert pas a grand chose, mais quand on commence a jouer avec trois ou quatre tables avec des jointures dans tous les sens et des noms de champs qui sont éventuellement identique d'une table a l'autre (genre typiquement un champ "id"), ca devient vite pratique, pour ne pas dire indispensable.
__________________
Rakken

Oneira, un monde imaginaire d'Heroic Fantasy.

Parce que la présomption d'innocence est un des fondements de notre pays et qu'elle doit le rester, dans tous les domaines : http://www.laquadrature.net/
Rakken est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/04/2007, 18h50   #19
Membre du Club
 
Inscription : février 2007
Messages : 274
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 274
Points : 53
Points : 53
et s'ily a un on
Code :
select * from table on .....on met quoi ici ???....... where
schats est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2007, 09h50   #20
Modérateur
 
Avatar de Rakken
 
Inscription : août 2006
Messages : 1 207
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 1 207
Points : 1 137
Points : 1 137
Ca, c'est une maniere particulière d'écrire une jointure.
Ne l'utilisant pas (oui, parait que c'est mal, n'empeche que je trouve ca moins lisible qu'un simple where) le mieux pour toi, est d'aller lire la doc.
__________________
Rakken

Oneira, un monde imaginaire d'Heroic Fantasy.

Parce que la présomption d'innocence est un des fondements de notre pays et qu'elle doit le rester, dans tous les domaines : http://www.laquadrature.net/
Rakken est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h31.


 
 
 
 
Partenaires

Hébergement Web