IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Ajout à la base de donnée


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2011
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 90
    Points : 45
    Points
    45
    Par défaut Ajout à la base de donnée
    bonjour
    j'ai un formulaire que je remplie , avec des images à upoader , lorsque je clique sur ajouter , l'enregistrement s'ajout correctement à ma base de donnée mais lorsque j'actualise ma page avec F5 ou quand je lance la page de l'ajout il me rajoute une ligne vide à ma base ,je sais pas d'ou vient le probléme voila le code pour vous faciliter les choses.
    NB : j'ai pas encore fais un test pour les champs si vides ou non

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    61
    62
    63
    64
    65
    <?php
    if(isset($_POST['valider']))
     
      @ $titre     = $_POST["titre"] ;
      @ $details = $_POST["details"] ;
      @ $num         = $_POST["num"] ;
      @ $prix_dh     = $_POST["dh"] ;
      @ $prix_euro = $_POST["euro"] ;
      @ $resume1         = $_POST["res1"]; 
      @ $resume2 = $_POST["res2"] ;
      @ $status         = $_POST["status"] ;
      @ $date_creation = $_POST["date"] ;
       @ $photo = $_POST["ph"] ;
      @ $ph1 = $_POST["ph1"] ;
      @ $ph2 = $_POST["ph2"] ;
      @ $ph3 = $_POST["ph3"] ;
      //pour ajout des photo
     	@ $dossier = 'photo/';
    	@ $fichier = basename($_FILES['ph']['name']);
    	@ $dossiergalerie = 'photo/gal/';
    	@ $ph1 = basename($_FILES['photo1']['name']);
    	@ $taille_maxi = 10240000;
    	@ $taille = filesize($_FILES['ph']['tmp_name']);
    	@ $tailleph1 = filesize($_FILES['photo1']['tmp_name']);
    	@ $extensions = array('.png','.gif','.jpg','.jpeg','.bmp');
    	@ $extension = strrchr($_FILES['ph']['name'], '.');
    	@ $extensionph1 = strrchr($_FILES['photo1']['name'], '.');
    	@ $extph=$extension;
    	@ $extph1=$extensionph1;
    	if(!in_array($extension, $extensions)) 
    	{
    		$erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt ou doc...';
    	}
    	else
    	{
    		if($taille>$taille_maxi)
    		{
    			$erreur = 'Le fichier est trop gros...';
    		}
    		else
    		$testimg=true;
    	}
    		{
    $cheminphoto=$dossier.$num.$extph;
    $cheminphoto1=$dossiergalerie.$num.$extph1;
      $cnx = mysql_connect("127.0.0.1","root","");
      $db  = mysql_select_db('immo'); 
     @ $sql = "INSERT INTO bien(reference,titre,description,prix_dh,prix_euro,resume1,resume2,status,date_creation,photo,photo1) VALUES('$num','$titre','$details','$prix_dh' ,'$prix_euro','$resume1' ,'$resume2','$status','$date_creation' ,'$cheminphoto','$cheminphoto1') ";
     
     @ $requete = mysql_query($sql, $cnx) or die(  ) ;
     
      if($requete)
      { 
      move_uploaded_file($_FILES['ph']['tmp_name'],$cheminphoto);
      move_uploaded_file($_FILES['photo1']['tmp_name'],$cheminphoto1);
        echo("L'ajout  à été correctement effectuée") ;
      }
     
      else
      {
        echo("L'ajout à échouée");
     
    }
    }
      ?>
    le code du formulaire :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    <form name="ajout" method="post" action="ajout.php" enctype="multipart/form-data">
      <p>Entrez référence du bien:&nbsp;&nbsp; 
        <input type="text" name="num"/> 
      </p>
      <p><br/>
        Titre  : &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;   &nbsp; &nbsp;
        <input type="text" name="titre"/>
      </p>
      <p><br/>
        Prix Dh : 
        <input type="text" name="dh"/>
        </p>
      <p><br/>
        Prix euro : 
        <input type="text" name="euro"/>
        </p>
      <p><br/>
     
      la description du bien :</p>
      <p>
        <textarea name='details' ></textarea>
      </p>
      <p><br/>
      détails  :</p>
      <p>
        <textarea name='res1' ></textarea>
        </p>
      <p><br/>
      Plus de détails  : </p>
      <p>
        <textarea name='res2' ></textarea>
        </p>
      <p><br/>
        Status
          <select name='status' >
            <option >Afficher</option>
            ";
     
            <option >En attente</option>
          </select  >
      </p>
      <p>Date Création :
        <input name='date'   type='date' >
      </p>
      <p>    <br/>
      Photo du diaporama :</p>
      <p>Photo principale : </br>
     
       <input name='ph'  type='file' maxlength=120 />
      </p>
      <p>Photo 1 :
     
       <input type="file" name="photo1" size=50 />
        </br>
      </p>
    <p>
        <input type="submit" name="valider" value="Ajouter"/>
        <input name='annuler' type='reset' value='Annuler' />
      </p>
    </form>

  2. #2
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mars 2009
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2009
    Messages : 114
    Points : 185
    Points
    185
    Par défaut
    ton code n'est pas entre les accolades du if de validation du formulaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    61
    62
    63
    64
    65
    66
     
    		<?php
    		if(isset($_POST['valider'])) {
     
    		  @ $titre     = $_POST["titre"] ;
    		  @ $details = $_POST["details"] ;
    		  @ $num         = $_POST["num"] ;
    		  @ $prix_dh     = $_POST["dh"] ;
    		  @ $prix_euro = $_POST["euro"] ;
    		  @ $resume1         = $_POST["res1"]; 
    		  @ $resume2 = $_POST["res2"] ;
    		  @ $status         = $_POST["status"] ;
    		  @ $date_creation = $_POST["date"] ;
    		   @ $photo = $_POST["ph"] ;
    		  @ $ph1 = $_POST["ph1"] ;
    		  @ $ph2 = $_POST["ph2"] ;
    		  @ $ph3 = $_POST["ph3"] ;
    		  //pour ajout des photo
    		 	@ $dossier = 'photo/';
    			@ $fichier = basename($_FILES['ph']['name']);
    			@ $dossiergalerie = 'photo/gal/';
    			@ $ph1 = basename($_FILES['photo1']['name']);
    			@ $taille_maxi = 10240000;
    			@ $taille = filesize($_FILES['ph']['tmp_name']);
    			@ $tailleph1 = filesize($_FILES['photo1']['tmp_name']);
    			@ $extensions = array('.png','.gif','.jpg','.jpeg','.bmp');
    			@ $extension = strrchr($_FILES['ph']['name'], '.');
    			@ $extensionph1 = strrchr($_FILES['photo1']['name'], '.');
    			@ $extph=$extension;
    			@ $extph1=$extensionph1;
    			if(!in_array($extension, $extensions)) 
    			{
    				$erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt ou doc...';
    			}
    			else
    			{
    				if($taille>$taille_maxi)
    				{
    					$erreur = 'Le fichier est trop gros...';
    				}
    				else
    				$testimg=true;
    			}
     
    		$cheminphoto=$dossier.$num.$extph;
    		$cheminphoto1=$dossiergalerie.$num.$extph1;
    		  $cnx = mysql_connect("127.0.0.1","root","");
    		  $db  = mysql_select_db('immo'); 
    		 @ $sql = "INSERT INTO bien(reference,titre,description,prix_dh,prix_euro,resume1,resume2,status,date_creation,photo,photo1) VALUES('$num','$titre','$details','$prix_dh' ,'$prix_euro','$resume1' ,'$resume2','$status','$date_creation' ,'$cheminphoto','$cheminphoto1') ";
     
    		 @ $requete = mysql_query($sql, $cnx) or die(  ) ;
     
    		  if($requete)
    		  { 
    		  move_uploaded_file($_FILES['ph']['tmp_name'],$cheminphoto);
    		  move_uploaded_file($_FILES['photo1']['tmp_name'],$cheminphoto1);
    		    echo("L'ajout  à été correctement effectuée") ;
    		  }
     
    		  else
    		  {
    		    echo("L'ajout à échouée");
     
    		}
    		}
    		  ?>
    j'ai aussi quelques remarques sur ton code :
    1/ il faut tester toutes les variables envoyées par le formulaire, un teste avec la fonction isset et un autre avec empty pour chaque variable et même faire un teste sur le type avec is_numeeric par exemple.

    2/ n'utilise pas le @ pour ne pas afficher des erreurs mais fais en sorte que ton code ne génère pas d'erreurs.

    3/ tu peux utiliser la fonction extract($_POST) pour créer tes variables à partir du post.

    4/ ne jamais inséré les variables envoyées par formulaire directement dans la base de données mais utilise avant la fonction mysql_real_escape_string() ou même le pdo s'il le faut.

  3. #3
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Citation Envoyé par baderahmed Voir le message
    3/ tu peux utiliser la fonction extract($_POST) pour créer tes variables à partir du post.
    JAMAIS DE LA VIE

    Lire l'avertissement en rouge ici

  4. #4
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mars 2009
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2009
    Messages : 114
    Points : 185
    Points
    185
    Par défaut
    - ben normalement il n' y a plus de register_globals à ON même sans utilisé extruct il ne faut pas le mettre à ON.

    - puis j'ai demandé de tester les variables avant l'extruct.

  5. #5
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Tu peux très bien tester 3 clés du tableau $_POST en rapport avec les données attendues pour ton traitement alors que ton tableau pourra en contenir beaucoup d'autres (sans même que tu le saches). extract() ne fait pas dans la dentelle, il sort tout le contenu du tableau.
    N'oublie pas qu'un utilisateur pourra toujours bidonner la soumission d'un formulaire rien que pour voir comment ton code réagit :

    Never trust user input
    Généralement, il est très fortement conseillé de ne jamais faire un extract() sur un tableau dont tu n'es pas absolument sûr de son contenu.

  6. #6
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mars 2009
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2009
    Messages : 114
    Points : 185
    Points
    185
    Par défaut
    Merci rawsrc

  7. #7
    Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2011
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 90
    Points : 45
    Points
    45
    Par défaut
    oui mais aprés avoir ajouter un nouveau enregistrement , comment eviter l'affichage du message (chaque action précédement effectuée sera répétée , souhaitez vous continuer ?

  8. #8
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Pour stopper l'exécution du programme, tu peux utiliser une fonction d'extinction comme exit().
    Pour continuer à exécuter le programme en repassant le flux d'exécution au script appelant, tu dois utiliser return ou simplement laisser le script arriver à sa fin.

Discussions similaires

  1. Erreur : ajout dans bases de données
    Par koma777 dans le forum ASP
    Réponses: 4
    Dernier message: 15/03/2010, 17h49
  2. Impossible d'ajouter une base de données à l'arborescence
    Par pat29 dans le forum Entreprise Manager
    Réponses: 0
    Dernier message: 09/12/2008, 18h45
  3. Réponses: 7
    Dernier message: 30/07/2007, 22h14
  4. [phpMyAdmin] question sur une ligne à ajouter à ma base de données
    Par jsdar dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 14/04/2007, 11h13
  5. Pbm d'ajout à une base de données
    Par jbaers dans le forum Bases de données
    Réponses: 4
    Dernier message: 29/11/2005, 12h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo