Complété une base.

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Complété une base.

par sadeq » 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!

par zeus » 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.

par Glaw » 04 juil. 2007, 09:17

Svp répondez moi..

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

Merci beaucoup.

par Glaw » 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

par sadeq » 03 juil. 2007, 15:20

Allez on ramasse les copies :wink: donne le code que t'as corrigé pour voir.

par Glaw » 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

par Sékiltoyai » 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:

par Glaw » 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 ?

par sadeq » 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

par Glaw » 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

par Glaw » 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

par zeus » 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 ...

par Glaw » 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

par zeus » 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.

par Glaw » 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.