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
    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 ?
      1. PS : pour $_POST['sexe'] tu as aussi oublié les ' ', mais autour
        PS 2 : d'où viennent tes variables POST ?
        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)
          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>
            1. Re,

              echo '$nom = $_POST['nom']'; avant le premier ISSET ça te donne quelque chose ?
              (pour savoir si avec ton formulaire tout va bien)
              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.
                1. Il affiche ca comme erruer : Column count doesn't match value count at row 1
                  Je pige rien du tout!
                  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.
                    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>
                      1. Salut, supprime ta fermeture </head> à la fin de ton code déjà (j'ai pas regardé le reste)
                        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>
                          1. Problemme Resolue. Il fallait enlever la ligne mysql_close();

                            @+