Complété une base.

Glaw
Invité n'ayant pas de compte PHPfrance

03 juil. 2007, 13:49

Et moi je viens de dire merci je n'es pus d'erreur je viens de les enlever....

Mais ca ne s'enregistre toujours pas. Mais le problème aussi c'est que je ne sais même pas si je suis connecter a la base de données quand je lance le script...

Est-ce que je peux vérifié ca ??

Merci

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

03 juil. 2007, 15:20

Allez on ramasse les copies :wink: donne le code que t'as corrigé pour voir.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
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, 15:22

Le code en entier :
<!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["descriptif_offre"])) 
		{
			 		$_POST["descriptif_offre"]=trim(stripslashes($_POST["descriptif_offre"]));
		}
	   elseif (empty($_POST["titre_offre"])) 
	    {
// le titre est vide
			 $erreur="L'offre a bien un titre?";
		}	 
			elseif (empty($_POST["descriptif_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
$erreur='';

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="descriptif_offre">Votre description de l'offre&nbsp;:<br /></label>
        <textarea name="descriptif_offre" id="descriptif_offre" cols="40" rows="15"><?php
        if (isset($_POST["description_offre"])) 
		{

                echo htmlspecialchars($_POST["descriptif_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']))      $titre_offre=$_POST['titre_offre'];
else      $titre_offre="";

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

// On vérifie si les champs sont vides
if(empty($id_offre) OR empty($titre_offre) OR empty($descriptif_offre))
    {
    echo '';
    }

// 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, descriptif_offre) VALUES ('','".$_POST["titre_offre"]."','".$_POST["descriptif_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 je pense qu'il n'y a pus d'erreur... j'ai dit je pense lol.

Et maintenant comment faire pour vérifié que je suis bien connecter a la base et que cela modifie ma base.

Merci

Glaw
Invité n'ayant pas de compte PHPfrance

04 juil. 2007, 09:17

Svp répondez moi..

Il faut absolument que je sache pourquoi ca ne s'enregistre pas.

Merci beaucoup.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

04 juil. 2007, 09:44

Modération :
Glaw, les "up" sont interdits sur PHPFrance.

Si tu n'as pas obtenu de réponse, c'est (au choix) :
- que ta question est mal formulée : reformule-la différemment ;
- que personne ne connaît la réponse ici : faire un "up" ne te donnera pas davantage de résultats ;
- que la réponse demandée exige un travail important que personne ne va faire à ta place ;
- que trop peu de temps s'est écoulé depuis ton précédent message pour qu'un membre ait pu y répondre.

Merci de prendre le temps de lire les règlements.

De plus, les liens externes pour des jeux "à popularité" sont totalement interdit et nous n'entendons pas devenir un support de clic pour miniville.
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

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

04 juil. 2007, 14:05

Bon, t'as encore beaucoups d'erreurs logiques dont 2 erreurs sérieuses:
On va commencer par les erreurs sérieuses:
  • La variable $id_offre n'a jamais été rencontrée ou assignée avant le if qui contrôle l'entrée à la procédure d'enregistrement dans la base. Cette variable est toujours nulle et ne sert à rien dans ce if. En fait c'est à cause d'elle que l'enregistrement n'est pas effectué, il faut la virer d'autant plus qu'elle n'est pas utilisée dans la requête.

    L'initialisation de la variable $erreur=''; est mal placée car elle efface les messages d'erreurs définis par le code précédent. Elle doit être effectuée tout au début du programme.
En suite il reste d'autres choses mal construites telles que:
  • les noms des variables par exemple, description_offre ou descriptif_offre?
    Est-ce utile de déclarer les variables $titre_offre et $descriptif_offre quand dans la requête tu utiliser $_POST[....]
    Trop de vérifications des variables, une au début pour trouver le message d'erreur, et une autre à la fin pour entrer dans l'enregistrement. ça peut être simplifié tout ça!
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène