Salut, voila mon code php

<?php
include ("header1.php");
?>
<?php
$hostdb = 'localhost';
$userdb = 'root';
$passdb = '';
$namedb = 'parcmfb';

try
   {
     $conn = new PDO("mysql:host=".$hostdb."; dbname=".$namedb."", $userdb, $passdb, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
     $conn->exec("SET CHARACTER SET utf8");
    }
catch (PDOException $e)
   {
     echo 'La base de donnée n\'est pas disponible';
    }
$stmt=$conn->prepare("INSERT INTO responsable(NumRespo, NomRespo, MailRespo, TelRespo, Observation) VALUES ( :NumRespo, :NomRespo, :MailRespo, :TelRespo, :Observation)");
$stmt->bindParam(':NumRespo', $NumRespo);
$stmt->bindParam(':NomRespo', $NomRespo);
$stmt->bindParam(':MailRespo', $MailRespo);
$stmt->bindParam(':TelRespo', $TelRespo);
$stmt->bindParam(':Observation', $Observation);

?>

        <form name="form" action="Ajout1.php" method="POST" enctype="multipart/form-data" >
                <fieldset>
            <legend><em>Ajout d'un Responsable</em></legend>
            <table align="center">
            <tr>
                </td>
                    <label for="ChampNum">Num&eacute;ro Responsable:</label>
                </td>
                <td>
                    <input type="text" id="NumRespo" name="NumRespo" require/>
                </td>
            </tr>
            <tr>
                <td>
                    <label for="ChampNom">Nom Responsable:</label>
                </td>
                <td>
                    <input type="text" id="NomRespo" name="NomRespo" require/>
                </td>
            </tr>
            <tr>
                <td>
                    <label for="ChampMail">Mail Responsable:</label>
                </td>
                <td>
                    <input type="text" id="MailRespo" name="MailRespo" require/>
                </td>
            </tr>
            <tr>
                <td>
                    <label for="ChampTel">T&eacute;l&eacute;phone Responsable:</label>
                </td>
                <td>
                    <input type="text" id="TelRespo" name="TelRespo" require/>
                </td>
            </tr>
            <tr>
                <td>
                    <label for="Champobs">Observation:</label>
                </td>
                <td>
                    <input type="text" id="Observation" name="Observation" require/>
                </td>
            </tr>
        <tr>
        <td></td>       
    <td>
        <input type="button" value="Ajouter" onclick="alert('Ajout avec succes');" /> 
        <input type="button" value="Annuler" onclick="alert('Ajout annuler');" /> 
    </td>
            </tr>
        </table>
        </fieldset>
    </form>

<?php

if((isset($_POST['NumRespo'])&&isset($_POST['NomRespo'])&&isset($_POST['MailRespo'])&&isset($_POST['TelRespo'])&&isset($_POST['Observation'])))
        {
        header ('Location: respo.php');
        }

$req = "SELECT * FROM responsable";
$res = $conn->query($req);
    print("<BR> ");
        foreach ($conn->query($req) as $row) 
        {
            print $row['NumRespo'] . "\t ";
            print $row['NomRespo'] . "\t";
            print $row['MailRespo'] . "\t";
            print $row['TelRespo'] . "\t";
            print $row['observation'] ."<BR>";
        }
    print(" <BR> ");

$req = "SELECT * FROM responsable";
$res = $conn->query($req);
    while ($row = $res->fetch())
    {
    print $row['NumRespo'] . " " . $row['NomRespo'] . " " . $row['MailRespo'] ." " . $row['TelRespo'] . " " . $row['Observation'] ."<BR>";
    }
?>

<?php
include ("footer.php");
?>

et il ne fonctionne pas et je comprend pas d'ou vient l'erreur, le formulaire s'affiche mais quand j'ajoute ou annuler rien ne se passe et puis il ne se dirige pas vers le site indiquer, et je sais plus quoi faire si quelqu'un peux m'aider!!

15 réponses


mxmaxime
Réponse acceptée

Oui, c'est normal que ton code ne fonctionne pas, ton header est avant le traitement des données.

if((isset($_POST['NumRespo'])&&isset($_POST['NomRespo'])&&isset($_POST['MailRespo'])&&isset($_POST['TelRespo'])&&isset($_POST['Observation'])))
        {
$stmt=$conn->prepare("INSERT INTO responsable(NumRespo, NomRespo, MailRespo, TelRespo, Observation) VALUES ( :NumRespo, :NomRespo, :MailRespo, :TelRespo, :Observation)");
$stmt->bindParam(':NumRespo', $NumRespo);
$stmt->bindParam(':NomRespo', $NomRespo);
$stmt->bindParam(':MailRespo', $MailRespo);
$stmt->bindParam(':TelRespo', $TelRespo);
$stmt->bindParam(':Observation', $Observation);
header ('Location: respo.php');
   }
else 
       {

Au passage, afin de vérifier tes données utilises xdebug, si tu n'utilises pas encore xdebug :

var_dump($_POST);

Dans ta page de traitement en haut.

Du html avant un header(); c'est pas bon ça.

Bonjour,

Vous essayer de traiter les données du formulaires alors que celle-ci n'ont pas encore été saisi.

Voici un exemple de ce qui serait judicieux de faire.

<?php
// Est-ce que le formulaire nous envoie des données ?
if (isset($_POST['NumRespo'])){
    // Oui, alors nous traitons les données...
    $stmt = $conn->prepare("INSERT INTO responsable....");
} else {
    // Non, alors nous affichons le formulaire....
    ?>
        <form ....>
            <label>Mon label...</label>
            <input.... >
        </form>
    <?php
}

Bonsoir,

if((isset($_POST['NumRespo'])&&isset($_POST['NomRespo'])&&isset($_POST['MailRespo'])&&isset($_POST['TelRespo'])&&isset($_POST['Observation'])))
        {
        header ('Location: respo.php');
        }

ce code est à mettre en haut.
J'ai pas bien compris ton code, exemple pourquoi ta requête en haut? ^^
Je pense que tu as très mal orgaisé ton code.
Dans ce genre de cas, le problème peut provenir d'une variable qui est vide, je te conseil de debugé ça avec xdebug, si tu n'y es pas adepte, effectue des var_dump()..
Le conseil que je viens de te donner garde le en tête, il t'aidera bien dans ce style de cas.

J'aurais mis en troisième paramètre de PDO::bindParam le type de donnée correspondant ? Constantes PDO::PARAM_* :smile:

merci, donc j'ai réorganisée mon code comme tel

<?php
include ("header1.php");
?>
<?php
$hostdb = 'localhost';
$userdb = 'root';
$passdb = '';
$namedb = 'parcmfb';

try
   {
     $conn = new PDO("mysql:host=".$hostdb."; dbname=".$namedb."", $userdb, $passdb, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
     $conn->exec("SET CHARACTER SET utf8");
    }
catch (PDOException $e)
   {
     echo 'La base de donnée n\'est pas disponible';
    }

if((isset($_POST['NumRespo'])&&isset($_POST['NomRespo'])&&isset($_POST['MailRespo'])&&isset($_POST['TelRespo'])&&isset($_POST['Observation'])))
        {
        header ('Location: respo.php');
        }

$stmt=$conn->prepare("INSERT INTO responsable(NumRespo, NomRespo, MailRespo, TelRespo, Observation) VALUES ( :NumRespo, :NomRespo, :MailRespo, :TelRespo, :Observation)");
$stmt->bindParam(':NumRespo', $NumRespo);
$stmt->bindParam(':NomRespo', $NomRespo);
$stmt->bindParam(':MailRespo', $MailRespo);
$stmt->bindParam(':TelRespo', $TelRespo);
$stmt->bindParam(':Observation', $Observation);

else 
       {

$req = "SELECT * FROM responsable";
$res = $conn->query($req);
    print("<BR> ");
        foreach ($conn->query($req) as $row) 
        {
            print $row['NumRespo'] . "\t ";
            print $row['NomRespo'] . "\t";
            print $row['MailRespo'] . "\t";
            print $row['TelRespo'] . "\t";
            print $row['observation'] ."<BR>";
        }
    print(" <BR> ");

$req = "SELECT * FROM responsable";
$res = $conn->query($req);
    while ($row = $res->fetch())
    {
    print $row['NumRespo'] . " " . $row['NomRespo'] . " " . $row['MailRespo'] ." " . $row['TelRespo'] . " " . $row['Observation'] ."<BR>";
    }
       }

?>

        <form name="form" action="Ajout1.php" method="POST" enctype="multipart/form-data" >
                <fieldset>
            <legend><em>Ajout d'un Responsable</em></legend>
            <table align="center">
            <tr>
                </td>
                    <label for="ChampNum">Num&eacute;ro Responsable:</label>
                </td>
                <td>
                    <input type="text" id="NumRespo" name="NumRespo" require/>
                </td>
            </tr>
            <tr>
                <td>
                    <label for="ChampNom">Nom Responsable:</label>
                </td>
                <td>
                    <input type="text" id="NomRespo" name="NomRespo" require/>
                </td>
            </tr>
            <tr>
                <td>
                    <label for="ChampMail">Mail Responsable:</label>
                </td>
                <td>
                    <input type="text" id="MailRespo" name="MailRespo" require/>
                </td>
            </tr>
            <tr>
                <td>
                    <label for="ChampTel">T&eacute;l&eacute;phone Responsable:</label>
                </td>
                <td>
                    <input type="text" id="TelRespo" name="TelRespo" require/>
                </td>
            </tr>
            <tr>
                <td>
                    <label for="Champobs">Observation:</label>
                </td>
                <td>
                    <input type="text" id="Observation" name="Observation" require/>
                </td>
            </tr>
        <tr>
        <td></td>       
    <td>
        <input type="button" value="Ajouter" onclick="alert('Ajout avec succes');" /> 
        <input type="button" value="Annuler" onclick="alert('Ajout annuler');" /> 
    </td>
            </tr>
        </table>
        </fieldset>
    </form>

<?php
include ("footer.php");
?>

et la il y a un message d'erreur
Parse error: syntax error, unexpected 'else' (T_ELSE) in C:\wamp\www\SMI\ajout1.php on line 32
si quelqu'un peut me dire d'ou vient cet erreur, merci!!!

Ceci serait peut être mieux :

if((isset($_POST['NumRespo'])&&isset($_POST['NomRespo'])&&isset($_POST['MailRespo'])&&isset($_POST['TelRespo'])&&isset($_POST['Observation'])))
        {
        header ('Location: respo.php');
$stmt=$conn->prepare("INSERT INTO responsable(NumRespo, NomRespo, MailRespo, TelRespo, Observation) VALUES ( :NumRespo, :NomRespo, :MailRespo, :TelRespo, :Observation)");
$stmt->bindParam(':NumRespo', $NumRespo);
$stmt->bindParam(':NomRespo', $NomRespo);
$stmt->bindParam(':MailRespo', $MailRespo);
$stmt->bindParam(':TelRespo', $TelRespo);
$stmt->bindParam(':Observation', $Observation);
   }
else 
       {

il n'y a plus d'erreur mais je revient au ddebut du probleme la ou rient ne fonction les boutons du formulaire ne fonction pas,

Bonjour malalatiana,

j'ai regardé très rapidement le code, mais à première vue, c'est tout à fait normal que rien se passe lorsque tu appuies sur tes boutons.
Les boutons que tu as mis n'ont pas vocation à donner le signal d'engistremement de ton formulaire. Alors après dans ton fichier header tu as peut-être du javascript qui cable le bouton avec le soumission du formulaire, mais ça je peux pas le savoir si tel est le cas :)

Quoi qu'il en soit, modifie tes boutons par des input type="submit", ainsi, le formulaire sera envoyé et tu passeras dans tes conditons.

merci c'est déjà fait et oui il marche mais aprés ne renvoye pas les informations completés dans le formulaire :( :(

Mettre un header avant le traitement des données ?!
Tu devrais mettre le header en dessous de ta requête d'insertion.

Au passage (j'ai peut être mal vu) $NumRespo et consorts sont déclarées quelque part ?

non, tout est dans ce code oui

Après relecture de ton code je ne vois rien... En fait je ne comprend pas ta logique. Tu rediriges vers respo.php si les données sont saisies ? Mais dans quel but ?

c'est parce que c'est dqns respo.php que ce trouve le tableau ou les données ont etait saisi!!