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

PHP & Base de données Discussion :

la base ne stocke pas le formulaire [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2013
    Messages : 32
    Par défaut la base ne stocke pas le formulaire
    salut
    svp j'ai un probléme concernant le code php,j'ai un formulaire avec des options,j'ai établi une connection avec la base de donnée, mais je sais pas où es le probléme, j'utilise wampserver voila mon code php
    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
    <?php
    require_once 'db.class.php';
     
    $host='localhost';
    $uid='root';
    $pass='';
    $table='siteweb';
     
    $database= new db($host,$uid,$pass,$table);
    if(isset($_POST['submit'])){
    	$besoin=$_POST['besoin'];
    	$taille=$_POST['taille'];
    	$cahier=$_POST['cahier'];
    	$video=$_POST['video'];
    	$photo=$_POST['photo'];
    	$civilite=$_POST['civilite'];
    	$nom=$_POST['nom'];
    	$type=$_POST['type'];
    	$secteur=$_POST['secteur'];
    	$fixe=$_POST['fixe'];
    	$mobile=$_POST['mobile'];
    	$Email=$_POST['Email'];
    	$ville=$_POST['ville'];
    	$pays=$_POST['pays'];
    	$description=$_POST['description'];
    	$champs=array('besoin','taille','cahier','video','photo','civilite','nom','type','secteur','fixe','mobile','Email','ville','pays','description');
    	$valeurs=array($besoin,$taille,$cahier,$video,$photo,$civilite,$nom,$type,$secteur,$fixe,$mobile,$Email,$ville,$pays,$description);
    	$data='devis';
    	$database->insert($champs,$valeurs,$data);
    	if($besoin&&$taille&&$cahier&&$video&&$photo&&$civilite&&$nom&&$type&&$secteur&&$fixe&&$mobile&&$Email&&$ville&&$pays&&$description){
    		echo header('Location: reponse.php');
    	}else echo "<div class=p>veuillez saisir tout les champs</div>";
    }							  
    ?>

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Sans voir ta méthode insert() c'est difficile de te répondre.

    Pour le détail, il faudrait vérifier si le champs sont renseignés AVANT de faire la requête.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2013
    Messages : 32
    Par défaut
    voici ce le code de la fonction insert()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function insert($champs_de_la_table_ds_1_array,$les_valeurs_ds_1_array,$table)
    {
    	$val=null;
     
    	$champs=implode(",",$champs_de_la_table_ds_1_array);
    	$valeurs=implode("','",$les_valeurs_ds_1_array);
    	//echo $val;
    	$a="insert into $table ($champs) values ('$valeurs')";
    	$res=mysql_query($a);
    	return $res;
    }

  4. #4
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    En mode débuggage fais afficher la requête pour voir si elle est bien formée et fais afficher les erreurs mysql et sort du script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function insert($champs_de_la_table_ds_1_array,$les_valeurs_ds_1_array,$table)
    {
    $val=null;
     
    $champs=implode(",",$champs_de_la_table_ds_1_array);
    $valeurs=implode("','",$les_valeurs_ds_1_array);
     
    $a="insert into $table ($champs) values ('$valeurs')";
    echo $a;// affichage de la requête
    $res=mysql_query($a) or die(mysql_error());// affichage erreur mysql si elle existe
    exit;// on sort du script pour bien visualiser la séquence précédente
    return $res;
    }

  5. #5
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2013
    Messages : 32
    Par défaut
    j'ai fais ca mais aucune changement la base de données ne stocke pas les infos de formulaire
    est ce que le formule chargé peut interompe la base à enregistrer les infos?

  6. #6
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    Tu as fait ça et cela affiche quoi ?

  7. #7
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Vatican

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2004
    Messages : 144
    Par défaut
    L'une de tes valeurs contient peux être une apostrophe ou est vide, du coup ça peux provoquer un arrêt.

  8. #8
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2013
    Messages : 32
    Par défaut
    aucune erreur s'affiche quand je click sur envoyer le demande je retourne à la page actulle; voila le formulaire en html
    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
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    <form method="POST" ><!--action='reponse.php'-->
    	<label for="Votre besoin">Votre besoin:</label> 
    	<div class="forme"><select name="besoin" id="in">
                    <option>Création d'un site web</option>
                    <option>Développement des applications</option>
                    <option>Hébergement et nom de domaine</option>
                    <option>Logo/Carte de visite/Entete</option> 
                    <option>Plaquete/Cataloque</option>
                    <option>Formation</option>
                    <option>Réseaux informatiques</option>
                    <option>Matériaux informatiques</option>							
            </select></br></div>
    	<label for="Taille de projet">Taille de projet:</label> 
    	<div class="forme"><select name="taille" id="in">
                    <option>5 à 10 pages statiques</option>
                    <option>10 à 50 pages statiques </option>
                    <option>un cataloque sans vente en ligne</option>
                    <option>un site e-marchand</option> 
                    <option>une aplication web</option>
                    <option>Application de gestion simple</option>	
                    <option>Application de gestion complexe</option>	
            </select></br></div>
    	<label for="Cahier des charge">Cahier des charge:</label> 
    	<div class="forme"><select name="cahier" id="in">
                    <option>Déja prét (je l'enverrais par email)</option>	
                    <option>non pas encore établi</option>
    	</select></br></div>
    	<label for="Videos">Videos : </label>
    	<div class="forme"><select name="video"id="in">
                    <option>Non,pas besoin de vidéos</option>
                    <option>Oui,je dispose de vidéos</option>
                    <option>A vous de réaliser mes vidéos</option>
            </select></br></div>
    	<label for="Prise photo">Prise photo :</label>
    	<div class="forme"><select name="photo" id="in">
                    <option>Non,je n'en ai pas besoin </option>
                    <option>A vous de réaliser mes photos</option>
            </select></br></div>
    	<label for="Civilité">Civilité :</label>
    	<div class="forme"><select name="civilite" id="in">
                    <option>Mr </option>
                    <option>Mme</option>
    		<option>Mlle</option>
            </select></br></div>
    	<label for="Nom complet">Nom complet:</label> 
    	<div class="forme"><input type="text" name="nom" id="in"/></br></div>
    	<!--<label for="Raison sociale">Raison sociale :</label> 
    	<input type="text" name="Rsociale"/><br></br>-->
    	<label for="Type de structure">Type de structure : </label>
    	<div class="forme"><select name="type" id="in">
                    <option>TPE </option>
                    <option>PME</option>
    		<option>Grande entreprise </option>
    		<option>Ecole </option>
    		<option>Particulier</option>
    		<option>Autres</option>
            </select></br></div>
            <label for="Secteur d'activité">Secteur d'activité :</label>
    	<div class="forme"><input type="text" name="secteur" id="in"/></br> </div>	
      	<label for="Téléphone fixe">Téléphone fixe :</label> 
           	<div class="forme"><input type="tel" name="fixe" id="in"/></br></div>
            <label for="Téléphone mobile">Téléphone mobile : </label>
    	<div class="forme"><input type="tel" name="mobile" id="in"/></br></div>	
            <label for="Email">Email: </label>	
    	<div class="forme"><input type="email" name="Email" id="in"/></br></div>
            <label for="Ville">Ville: </label> 	
    	<div class="forme"><input type="text" name="ville" id="in"/></br></div>
            <label for="Pays">Pays: </label>     
    	<div class="forme"><input type="text" name="pays" id="in"/></br></div>
    	<label for="Description de projet" id="in">Description de projet:</label> 
    	<div class="forme"><textarea cols="45" rows="6" name="description" id="in"></textarea></br></p></div>
    	IMPORTANT : Les demandes de devis qui ne comportent pas une description détaillée du projet seront automatiquement rejetées.
    	<input type="submit"  value="Envoyer demande" name="submit" />
    </div></p></form>

    est ce que le id faut l'initialiser dans la requéte d'insertion? voila la base

  9. #9
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Vatican

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2004
    Messages : 144
    Par défaut
    1- Certaines de tes valeurs contiennent des ' tu devrais donc utiliser addslashes($_POST[]) pour tes variables que tu récupère.

  10. #10
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    plutôt mysql_real_escape_string() que addslashes().

    Il manque une "value" à tes options.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #11
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 324
    Par défaut
    il y a pas 2 pages ici ???

    mais pas de action dans form !!!!!

  12. #12
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    Ben oui, si cela n'affiche rien c'est que la fonction "insert" n'est pas appelée et donc le bug se situe avant. Faudra penser à enlever les modifs que je t'ai fait ajouter quand la fonction "insert" sera appelée et qu'elle fonctionnera correctement.

  13. #13
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2013
    Messages : 32
    Par défaut
    merci bcp le probleme est résolu j'ai ajouter celle la addslashes et il ca marche merci bcp

  14. #14
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    Suis le conseil de Sabotage et utilises mysql_real_escape_string() à la place de addslashes. On utilisait addslashes quand mysql_real_escape_string() n'existait pas, mais cela doit faire maintenant plus de 10 ans qu'il y a cette fonction spéciale pour protéger les chaines de caractères dans les requêtes.

  15. #15
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2013
    Messages : 32
    Par défaut
    ok je l'ai fais merci ca marche tres bien

  16. #16
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 324
    Par défaut
    Citation Envoyé par ABCIWEB Voir le message
    t utilises mysql_real_escape_string() à la place de addslashes.
    Pourquoi utiliser encore l'extension mysql surtout pour un nouveau projet, elle est déclarée comme obsolète = dans la prochaine* version on la vire = mon site il fonctionne plus

  17. #17
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2013
    Messages : 32
    Par défaut
    donc laquelle est efficace entre les deux ?

  18. #18
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    Avec mysql, utilises mysql_real_escape_string()

    papajoker parlais de l'extension mysql, c'est ce qui t'as embrouillé. En effet pour les nouveaux projets on recommande d'utiliser l'extension "mysqli" ou l'extension "pdo" à la place de l'extension mysql (ne pas confondre "extension" et "fonction").

    Mais c'est une autre histoire et dans ce cas il te faut réécrire toutes tes requêtes. Remarque qu'avec mysqli cela ne demande pas énormément de temps (cette extension est prévue pour faciliter la transition) et dans ce cas tu devras utiliser "mysqli_real_escape_string" pour protéger les chaines de caractères dans les requêtes. Avec pdo l'équivalent de cette fonction est la fonction "quote". mysqli et pdo supportent aussi les requêtes préparées ce qui est un avantage par rapport à mysql qui ne les supporte pas.

    Enfin bon à toi de voir si tu as du temps devant toi pour changer d'extension maintenant. Ce n'est pas non plus d'une urgence absolue. Le temps que les serveurs n'acceptent plus l'extension mysql, il va se passer de très nombreuses années.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] la base ne stocke pas aprés 4j
    Par mounana199' dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 08/10/2013, 22h56
  2. j'arrive pas a connecter ma base de donnée a mon formulaire
    Par lokardz dans le forum Développement Web avec .NET
    Réponses: 1
    Dernier message: 09/03/2013, 16h40
  3. Ne pas fermer formulaire quand annulation
    Par petitours dans le forum Access
    Réponses: 2
    Dernier message: 04/05/2006, 14h48
  4. Réponses: 3
    Dernier message: 27/03/2006, 17h25
  5. Réponses: 13
    Dernier message: 06/11/2005, 10h45

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