Probleme Php

Bonjour,

J'ai fait un code qui ne marche pas :

<html>
<head>
<link rel="stylesheet" media="screen" type="text/css" title="Design" href="theme\General.css" />
</head>
<body>
<?php
mysql_connect("localhost", "root");
mysql_select_db("Ado");
mysql_query("INSERT INTO Membres VALUES('$_POST[nom]', '$_POST[prenom]', '$_POST[pseudo]', '$_POST[pass]', '$_POST[age]', $_POST[sexe], '$_POST[message]', '')");
mysql_close();
?>
<meta http-equiv="Refresh" content="1;url=index.php">
</body>
</head>

Lorsque j'enleve le php, tous marche trés bien! Je ne comprend pas...
--
?*µ¤m@$
Configuration: Windows Vista Internet Explorer 7.0

20 réponses

  1. Bonjour,

    Je n'ai pas regardé de fond en comble mais déjà tu as oublié les ' ' : $_POST['nom'] par exp
    0
    1. Oui mais si je les mais cela provoque des erreur.
      0
      1. En fait ces écritures me "gênent" parce que je ne les utilise jamais.
        Pour moi il est plus clair de taper ça :

        $host='localhost';
        $user='#';
        $password='#';
        $base='#';

        //connexion à ta base
        $link = mysql_connect($host,$user,$password) or die('Erreur de connexion au SGBD.');
        mysql_select_db($base,$link) or die('La base de données n\'existe pas.');

        //requête SQL
        $sql = 'INSERT INTO Membres VALUES ('$_POST['nom']', '$_POST['prenom']', '$_POST['pseudo']', '$_POST['pass']', '$_POST['age']', $_POST['sexe'], '$_POST['message']')';
        $res = mysql_query($sql,$link) or die("Erreur SQL : $query<br/>".mysql_error());
        mysql_close();

        MAIS ça ne change rien à ton problème. Tu n'aurais pas oublié de mettre ton mot de passe SGBD..? Il te sort quoi comme message d'erreur ?
        0
        1. PS : pour $_POST['sexe'] tu as aussi oublié les ' ', mais autour
          PS 2 : d'où viennent tes variables POST ?
          0
          1. Salut

            De plus:
            * le meta refresh devrait être dans <HEAD>...</HEAD>
            * le </BODY> est écrit </HEAD>
            * le formulaire ne devrait pas être utilisé directement et sans contrôle dans l'INSERT (utiliser isset() pour éviter les nulls et mysql_real_escape_string() pour éviter les pièges)
            0
            1. J'ai reussi à coriger mon programme par rapport a ce que vous m'avez dit. Maintenent, j'ai un petit souci... mes variable nom, prenom, passe, pseudo... sont inexistant alor que leur ai declarer. Mon code :

              <html>
              <head>
              <link rel="stylesheet" media="screen" type="text/css" title="Design" href="theme\General.css" />
              </head>
              <body>
              <?php
              $host='localhost';
              $user='root';
              $password='';
              $base='ado';
              if (isset($_POST['nom'])) $nom=$_POST['nom'];
              else die ('<meta http-equiv="Refresh" content="1;url=index.php?inscr=1">');
              if (isset($_POST['prenom'])) $prenom=$_POST['prenom'];
              else die ('<meta http-equiv="Refresh" content="1;url=index.php?inscr=2">');
              if (isset($_POST['pseudo'])) $pseudo=$_POST['pseudo'];
              else die ('<meta http-equiv="Refresh" content="1;url=index.php?inscr=3">');
              if (isset($_POST['pass'])) $pass=$_POST['pass'];
              else die ('<meta http-equiv="Refresh" content="1;url=index.php?inscr=4">');
              if (isset($_POST['confirm'])) $confirm=$_POST['confirm'];
              else die ('<meta http-equiv="Refresh" content="1;url=index.php?inscr=5">');
              if (isset($_POST['age'])) $age=$_POST['age'];
              else die ('<meta http-equiv="Refresh" content="1;url=index.php?inscr=6">');
              if (isset($_POST['sexe'])) $sexe=$_POST['sexe'];
              else die ('<meta http-equiv="Refresh" content="1;url=index.php?inscr=7">');
              if (isset($_POST['message'])) $message=$_POST['message'];
              else die ('<meta http-equiv="Refresh" content="1;url=index.php?inscr=8">');
              $link = mysql_connect($host,$user,$password) or die('Erreur de connexion au SGBD.');
              mysql_select_db($base,$link) or die('La base de données n\'existe pas.');
              $sql = "INSERT INTO membre VALUES ('$nom', '$prenom', '$pseudo', '$pass', '$age', '$sexe', '$message')" or die ("Erreur!");
              $res = mysql_query($sql,$link) or die("Erreur! ".mysql_error());
              mysql_close();
              header('Location: index.php');
              ?>
              </body>
              </head>
              0
              1. Re,

                echo '$nom = $_POST['nom']'; avant le premier ISSET ça te donne quelque chose ?
                (pour savoir si avec ton formulaire tout va bien)
                0
                1. PS : au début tu nous as dit qu'il y a 8 champs dans ta base ado, là tu n'en remplis que 7.
                  0
                  1. Il affiche ca comme erruer : Column count doesn't match value count at row 1
                    Je pige rien du tout!
                    0
                    1. J'ai resolu le probleme sauf que maintenent, lorsque je charge la page, il affiche Internet ne peut pas afficher la page.

                      Info : J'utilise wamp pour simuler mes page. J'ai test avec EasyPhp et PhpEdit, méme chose.
                      0
                      1. A mon avis doit avoir une erreur dans le code :

                        <html>
                        <head>
                        <link rel="stylesheet" media="screen" type="text/css" title="Design" href="theme\General.css" />
                        </head>
                        <body>
                        <?php
                        $host='localhost';
                        $user='root';
                        $password='';
                        $base='ado';
                        if (isset($_POST['nom'])) $nom=$_POST['nom'];
                        else die ('<meta http-equiv="Refresh" content="1;url=index.php?inscr=1">');
                        if (isset($_POST['prenom'])) $prenom=$_POST['prenom'];
                        else die ('<meta http-equiv="Refresh" content="1;url=index.php?inscr=2">');
                        if (isset($_POST['pseudo'])) $pseudo=$_POST['pseudo'];
                        else die ('<meta http-equiv="Refresh" content="1;url=index.php?inscr=3">');
                        if (isset($_POST['pass'])) $pass=$_POST['pass'];
                        else die ('<meta http-equiv="Refresh" content="1;url=index.php?inscr=4">');
                        if (isset($_POST['confirm'])) $confirm=$_POST['confirm'];
                        else die ('<meta http-equiv="Refresh" content="1;url=index.php?inscr=5">');
                        if (isset($_POST['age'])) $age=$_POST['age'];
                        else die ('<meta http-equiv="Refresh" content="1;url=index.php?inscr=6">');
                        if (isset($_POST['sexe'])) $sexe=$_POST['sexe'];
                        else die ('<meta http-equiv="Refresh" content="1;url=index.php?inscr=7">');
                        if (isset($_POST['message'])) $message=$_POST['message'];
                        else die ('<meta http-equiv="Refresh" content="1;url=index.php?inscr=8">');
                        $link = mysql_connect($host,$user,$password) or die('Erreur de connexion au SGBD.');
                        mysql_select_db($base,$link) or die('La base de données n\'existe pas.');
                        $sql = "INSERT INTO membre VALUES ('$nom', '$prenom', '$pseudo', '$pass', '$age', '$sexe', '$message', '')" or die ("Erreur!");
                        $res = mysql_query($sql,$link) or die("Erreur! ".mysql_error());
                        mysql_close();
                        header('Location: index.php');
                        ?>
                        </body>
                        </head>
                        0
                        1. Salut, supprime ta fermeture </head> à la fin de ton code déjà (j'ai pas regardé le reste)
                          0
                          1. Voila! C fait. Mai ca marce toujou pas... SNIF SNIF
                            0
                            1. Essaie comme ça, le header doit être responsable.
                              Tu peux nous mettre tout ton code stp ?

                              <?php
                              // ID BASE
                              $host='localhost';
                              $user='root';
                              $password='';
                              $base='ado';

                              // connexion base
                              $link = mysql_connect($host,$user,$password) or die('Erreur de connexion au SGBD.');
                              mysql_select_db($base,$link) or die('La base de données n\'existe pas.');

                              // instructions
                              if (isset($_POST['nom'])) $nom=$_POST['nom'];
                              else die ('<meta http-equiv="Refresh" content="1;url=index.php?inscr=1">');
                              if (isset($_POST['prenom'])) $prenom=$_POST['prenom'];
                              else die ('<meta http-equiv="Refresh" content="1;url=index.php?inscr=2">');
                              if (isset($_POST['pseudo'])) $pseudo=$_POST['pseudo'];
                              else die ('<meta http-equiv="Refresh" content="1;url=index.php?inscr=3">');
                              if (isset($_POST['pass'])) $pass=$_POST['pass'];
                              else die ('<meta http-equiv="Refresh" content="1;url=index.php?inscr=4">');
                              if (isset($_POST['confirm'])) $confirm=$_POST['confirm'];
                              else die ('<meta http-equiv="Refresh" content="1;url=index.php?inscr=5">');
                              if (isset($_POST['age'])) $age=$_POST['age'];
                              else die ('<meta http-equiv="Refresh" content="1;url=index.php?inscr=6">');
                              if (isset($_POST['sexe'])) $sexe=$_POST['sexe'];
                              else die ('<meta http-equiv="Refresh" content="1;url=index.php?inscr=7">');
                              if (isset($_POST['message'])) $message=$_POST['message'];
                              else die ('<meta http-equiv="Refresh" content="1;url=index.php?inscr=8">');

                              $sql = "INSERT INTO membre VALUES ('$nom', '$prenom', '$pseudo', '$pass', '$age', '$sexe', '$message', '')" or die ("Erreur!");
                              $res = mysql_query($sql,$link) or die("Erreur! ".mysql_error());
                              mysql_close();
                              header('Location: index.php');
                              ?>

                              <html>
                              <head>
                              <link rel="stylesheet" media="screen" type="text/css" title="Design" href="theme\General.css" />
                              </head>
                              <body>

                              </body>
                              0
                              1. PS : et ferme ton </html> à la toute fin
                                0
                                1. Problemme Resolue. Il fallait enlever la ligne mysql_close();

                                  @+
                                  0
                                  1. Non je pense pas que ce soit la solution.
                                    De rien..
                                    0