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. Problemme Resolue. Il fallait enlever la ligne mysql_close();

    @+
    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. Salut, supprime ta fermeture </head> à la fin de ton code déjà (j'ai pas regardé le reste)
        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. 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. Il affiche ca comme erruer : Column count doesn't match value count at row 1
              Je pige rien du tout!
              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. Re,

                  echo '$nom = $_POST['nom']'; avant le premier ISSET ça te donne quelque chose ?
                  (pour savoir si avec ton formulaire tout va bien)
                  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. 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. PS : pour $_POST['sexe'] tu as aussi oublié les ' ', mais autour
                        PS 2 : d'où viennent tes variables POST ?
                        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. Bonjour,

                            Je n'ai pas regardé de fond en comble mais déjà tu as oublié les ' ' : $_POST['nom'] par exp