Complété une base.

Glaw
Invité n'ayant pas de compte PHPfrance

02 juil. 2007, 13:30

Je sais très bien et je l'ai fermer au bon endroit.

L'erreur maintenant c'est :


Parse error: parse error in p:\easyphp1-8\www\site\formulaire\offre.php on line 131

mais cette ligne c'est </html> donc je ne sais pas ou est exactement l'erreur.

Merci

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

02 juil. 2007, 14:01

redonne ton code complet, car c'est toujours un scoop {...} non respecté. Il faut faire gaffe aussi aux imbrications et éviter leur chevauchement.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Glaw
Invité n'ayant pas de compte PHPfrance

02 juil. 2007, 14:22

Voila donc le code ca donne ca :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>

<body>

<?php
if (isset($_POST["envoyer"]))
{
// le formulaire a ete soumis
	$etat = "erreur";
// erreur est la valeur par defaut. Prendra la valeur "ok" s'il n'y a pas d'erreur
// --- mise en forme des champs saisis dans le formulaire lors de sa soumission ---
		if (isset($_POST["titre_offre"])) 
		{
			 	$_POST["titre_offre"]=trim(stripslashes($_POST["titre_offre"]));
		}
			if (isset($_POST["description_offre"])) 
		{
			 		$_POST["description_offre"]=trim(stripslashes($_POST["description_offre"]));
		}
	   elseif (empty($_POST["titre_offre"])) 
	    {
// le titre est vide
			 $erreur="L'offre a bien un titre?";
		}	 
			elseif (empty($_POST["description_offre"])) 
		{
// la description est vide
			 $erreur="Saisissez une description...";
		}
		else 
			{
// --- tous les champs sont correctement remplis: on pourra envoyer le mail ---
			 $etat="ok";
			}
}
else 
{
// --- le formulaire n'a pasete soumis ---
                 $etat="attente";
}
// === fin de traitement des donnes du formulaire =======================================================
?>

<div class="post">
	<h2 align="center" class="post-title">Ajout nouvelle offre d'emploi.</h2>

<?php

if ($etat!="ok")
{
// si le formulaire n'a pas ete soumis, ou soumis avec une erreur
         if ($etat=="erreur")
		 {
//ou  si le formulaire a été soumis avec une erreur
                echo "<p><strong>".$erreur."</strong></p>";
// alors on affiche le message d'erreur
         }
?>

<form method="post" action="

<?php echo $_SERVER["REQUEST_URI"]; ?>">
	<p align="center" class="field"><label for="titre_offre">Le titre de l'offre&nbsp;:<br /></label>
        
		<input type="text" size="40" name="titre_offre" id="titre_offre" value="<?php
        if (!empty($_POST["titre_offre"])) 
		{

                echo htmlspecialchars($_POST["titre_offre"],ENT_QUOTES);
        }
     	?>" 
		/>
	</p>

		<p align="center" class="field"><label for="description_offre">Votre description de l'offre&nbsp;:<br /></label>
        <textarea name="description_offre" id="description_offre" cols="40" rows="15"><?php
        if (isset($_POST["description_offre"])) 
		{

                echo htmlspecialchars($_POST["description_offre"],ENT_QUOTES);
        }
        ?>
		</textarea>
		</p>
		
        <p align="center"><input type="submit" name="envoyer" value="Envoyer" />
		<input type="reset" value="Recommencer" name="recommencer"> 
        </p>
		
</form>

<?php
// On commence par récupérer les champs

if(isset($_POST['titre_offre']))      $prenom=$_POST['titre_offre'];
else      $titre_offre="";

if(isset($_POST['description_offre']))      $url=$_POST['description_offre'];
else      $description_offre="";

// On vérifie si les champs sont vides
if(empty($id_offre) OR empty($titre_offre) OR empty($description_offre))
    {
    echo '<font color="red">Attention, seul le champs <b>Id_offre</b> peut rester vide !</font>';
    }

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

    mysql_select_db('offres',$db)  or die('Erreur de selection '.mysql_error());
    
    // on écrit la requête sql
$sql = "INSERT INTO offres (id_offre, titre_offre, description_offre) VALUES ('','".$_POST["titre_offre"]."','".$_POST["description_offre"]."')"; 
    
    // on insère les informations du formulaire dans la table
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

    // on affiche le résultat pour le visiteur
    echo 'Vos infos on été ajoutées.';

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

</body>
</html>

Voila merci.

ViPHP
ViPHP | 5924 Messages

02 juil. 2007, 14:26

Ca te gène pas ca ?
?> 
} 

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

02 juil. 2007, 14:57

Effectivement c'est une erreur, l'accolade en dehors du ?> c'est comme si elle n'existe pas.
Mais il me semble être clair tout à l'heure, la position de cette accolade de fermeture du if ($etat != "ok") est trés importante.
Je pense qu'il ne faut pas la mettre à cet emplacement, sinon le traitement de la requête ne se fera pas.

Moi, je pense qu'il faut fermer ce if après la fin du formulaire, car selon ton algorithme, tu affiches le formulaire dans le cas où il n'y a eu aucun post ou une erreur, mais pas dans le cas où c'est ok.
Et quand c'est ok tu envois vers la base.

Donc c'est à ce nivaeu là que tu dois fermer ton if ($etat != "ok) :
</form>

<?php
} //fin de if ($etat != "ok")

// On commence par récupérer les champs
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Glaw
Invité n'ayant pas de compte PHPfrance

03 juil. 2007, 09:07

Bon voilà alors mon code marche mais maintenant j'ai juste un petit problème, je remet mon code :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>

<body>

<?php
if (isset($_POST["envoyer"]))
{
// le formulaire a ete soumis
	$etat = "erreur";
// erreur est la valeur par defaut. Prendra la valeur "ok" s'il n'y a pas d'erreur
// --- mise en forme des champs saisis dans le formulaire lors de sa soumission ---
		if (isset($_POST["titre_offre"])) 
		{
			 	$_POST["titre_offre"]=trim(stripslashes($_POST["titre_offre"]));
		}
			if (isset($_POST["description_offre"])) 
		{
			 		$_POST["description_offre"]=trim(stripslashes($_POST["description_offre"]));
		}
	   elseif (empty($_POST["titre_offre"])) 
	    {
// le titre est vide
			 $erreur="L'offre a bien un titre?";
		}	 
			elseif (empty($_POST["description_offre"])) 
		{
// la description est vide
			 $erreur="Saisissez une description...";
		}
		else 
			{
// --- tous les champs sont correctement remplis: on pourra envoyer le mail ---
			 $etat="ok";
			}
}
else 
{
// --- le formulaire n'a pasete soumis ---
                 $etat="attente";
}
// === fin de traitement des donnes du formulaire =======================================================
?>

<div class="post">
	<h2 align="center" class="post-title">Ajout nouvelle offre d'emploi.</h2>

<?php

if ($etat!="ok")
{
// si le formulaire n'a pas ete soumis, ou soumis avec une erreur
         if ($etat=="erreur")
		 {
//ou  si le formulaire a été soumis avec une erreur
                echo "<p><strong>".$erreur."</strong></p>";
// alors on affiche le message d'erreur
         }
?>

<form method="post" action="

<?php echo $_SERVER["REQUEST_URI"]; ?>">
	<p align="center" class="field"><label for="titre_offre">Le titre de l'offre&nbsp;:<br /></label>
        
		<input type="text" size="40" name="titre_offre" id="titre_offre" value="<?php
        if (!empty($_POST["titre_offre"])) 
		{

                echo htmlspecialchars($_POST["titre_offre"],ENT_QUOTES);
        }
     	?>" 
		/>
	</p>

		<p align="center" class="field"><label for="description_offre">Votre description de l'offre&nbsp;:<br /></label>
        <textarea name="description_offre" id="description_offre" cols="40" rows="15"><?php
        if (isset($_POST["description_offre"])) 
		{

                echo htmlspecialchars($_POST["description_offre"],ENT_QUOTES);
        }
        ?>
		</textarea>
		</p>
		
        <p align="center"><input type="submit" name="envoyer" value="Envoyer" />
		<input type="reset" value="Recommencer" name="recommencer"> 
        </p>
		
</form>

<?php
}
// On commence par récupérer les champs

if(isset($_POST['titre_offre']))      $prenom=$_POST['titre_offre'];
else      $titre_offre="";

if(isset($_POST['description_offre']))      $url=$_POST['description_offre'];
else      $description_offre="";

// On vérifie si les champs sont vides
if(empty($id_offre) OR empty($titre_offre) OR empty($description_offre))
    {
    echo '<font color="red">Attention, seul le champs <b>Id_offre</b> peut rester vide !</font>';
    }

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

    mysql_select_db('offres',$db)  or die('Erreur de selection '.mysql_error());
    
    // on écrit la requête sql
$sql = "INSERT INTO offres (id_offre, titre_offre, description_offre) VALUES ('','".$_POST["titre_offre"]."','".$_POST["description_offre"]."')"; 
    
    // on insère les informations du formulaire dans la table
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

    // on affiche le résultat pour le visiteur
    echo 'Vos infos on été ajoutées.';

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

</div>

</body>
</html>

Le problème est sur cette ligne :
  echo "<p><strong>".$erreur."</strong></p>"; 

Merci d'avance.

Glaw
Invité n'ayant pas de compte PHPfrance

03 juil. 2007, 09:09

Et aussi cela ne m'ajoute toujours pas les données envoyer a ma base. Mais peut être que c'est a cause de l'erreur précédente.

Merci beaucoup pour votre aide.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

03 juil. 2007, 09:10

Je pense que ça déjà dû t'être dit, mais je le répète : en plus de nous donner la ligne qui déclenche une erreur, donne nous l'erreur.
Elle contient 90% de la description du problème et, souvent, le moyen de la résoudre.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Glaw
Invité n'ayant pas de compte PHPfrance

03 juil. 2007, 09:13

Oups désolé l'erreur est variable indéfinit.. donc est-ce que je doit définir cette variable en haut d emon code ou pas ?

Merci

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

03 juil. 2007, 09:33

Quand ta variable $etat contient "erreur", tu désires afficher le message d'erreur, on est d'accord ?
Comment se fait-il alors que ce message d'erreur ne soit pas toujours rempli ?

Effectivement, initialiser la variable $erreur va faire disparaitre le message d'erreur PHP mais va camoufler le fait que tu affiches une erreur vide :?

Je ne sais pas si je suis clair ...
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Glaw
Invité n'ayant pas de compte PHPfrance

03 juil. 2007, 09:42

Donc qu'est-ce que je doit faire ?

Il fau simplement que je mette sur la ligne en dessous.

$erreur = ' ... ' ;

C'est ca ?


Merci

Glaw
Invité n'ayant pas de compte PHPfrance

03 juil. 2007, 11:29

Svp répondez...

Et aussi je voulais savoir comment faire pour que ca s'ajoute dans ma base de données MySQL quand je valide le formulaire..

Merci

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

03 juil. 2007, 13:12

oui, il faut initialiser à blanc $erreur au début du script.

Tiens, t'as une tonne d'erreurs logiques concernant les variables que tu veux enregistrer dans la base, dans ce morceau de code, révise-le bien, car c'est ce qui empêche l'enregistrement:
// On commence par récupérer les champs 

if(isset($_POST['titre_offre']))      $prenom=$_POST['titre_offre']; 
else      $titre_offre=""; 

if(isset($_POST['description_offre']))      $url=$_POST['description_offre']; 
else      $description_offre=""; 

// On vérifie si les champs sont vides 
if(empty($id_offre) OR empty($titre_offre) OR empty($description_offre)) 
    { 
    echo '<font color="red">Attention, seul le champs <b>Id_offre</b> peut rester vide !</font>'; 
    } 

// Aucun champ n'est vide, on peut enregistrer dans la table
Modifié en dernier par sadeq le 03 juil. 2007, 15:15, modifié 1 fois.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Glaw
Invité n'ayant pas de compte PHPfrance

03 juil. 2007, 13:33

Merci je n'est plus d'erreur mais bon ca ne s'enrengistre toujours pas dans la base de données...

Pourquoi ?

ViPHP
ViPHP | 5924 Messages

03 juil. 2007, 13:35

T'écoutes ce qu'on te dit ?

sadeq t'as signalé des erreurs de conception dans ton script :
Tiens, t'as une tonne d'erreurs logiques concernant les variables que tu veux enregistrer dans la base, dans ce morçeau de code, révise-le bien, car c'est ce qui empêche l'enregistrement: