Pb d' insertion données dans bdd!! [Résolu/Fermé]

Signaler
-
Messages postés
3
Date d'inscription
mardi 10 mars 2009
Statut
Membre
Dernière intervention
28 avril 2009
-
Bonjour,
je debute encore en php.. j'ai fai ce script en php qui envoie les donnes d un formulaire vers ma bdd...
et je recupere les donnes ds une autre page php (affichage.php)...mon pb c'est que dans l affichage je trouve au lieu des informations des espaces vides (ex:mail=
password=
... c'est la fonction $_post qui ne marche pas car j'ai ecrit n imporet quoi a la place de $mail et $pass et ca marché...

<?php

$mail= $post['m'];
$pass= $post['p'];

mysql_connect('xxxxx','xxxx','xxxx')or die(mysql_error()) ;
mysql_select_db('xxxx');
mysql_query("insert into donnes (mail,pass) values('$mail','$pass')");




mysql_close();
?>
merci d'avance :)

16 réponses

Remplace par:

<?php

$mail= $_POST['m'];
$pass= $_POST['p'];

mysql_connect('xxxxx','xxxx','xxxx')or die(mysql_error()) ;
mysql_select_db('xxxx');
mysql_query("INSERT INTO donnes (mail,pass) VALUES('$mail','$pass')");




mysql_close();
?>

Si ça ne marche toujours pas, c'est peut-être du côté du formulaire. Voici un exemple de formulaire qui irait pour ton programme:

<form action="affichage.php" method="post">
Tapez votre mail: <input type="text" name="m" /><br />
Puis votre mot de passe: <input type="password" name="p" /><br /><br />
<input type="submit" value="Envoyer" />
</form>
merci pour votre reponse florent ... voila la page html:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>


<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>MSN Block Checker</title>
<style type="text/css">
body
{
font-family:"Courier New", Courier, monospace;
font-size:12px;
background-color:white;
color:black;
}

.form
{
color:black;
font-family:"Courier New", Courier, monospace;
border:1px solid black;
background:white;
}

.fieldset
{
color:black;
font-family:"Courier New", Courier, monospace;
border:1px solid black;
background:white;
width:497px;
}

.error
{
border:1px solid red;
background:white;
padding:4px;
color:red;
}

#loading{visibility:hidden;}
</style>
</head><body><br><br><center>
<img src="MSN%20Block%20Checker_fichiers/logo.PNG"><br>
<fieldset class="fieldset">
<legend>Status</legend>
<table align="center">
<tbody><tr>
<td>Main server:</td><td><img src="MSN%20Block%20Checker_fichiers/ok.PNG"></td>
</tr><tr>
<td>Hotmail server:</td><td><img src="MSN%20Block%20Checker_fichiers/ok.PNG"></td>
</tr><tr>
<td>Script:</td><td><img src="MSN%20Block%20Checker_fichiers/ok.PNG"></td>
</tr><tr>
<td>Server load:</td><td><font color="green"><strong>22%</strong></font></td>
</tr>
</tbody></table>
</fieldset><br>
<fieldset class="fieldset">
<form method="POST" action='traitement.php'>
<table align="center">
<tbody><tr>
<td>E-Mail:</td><td><input name="m" class="form" type="text"></td>
</tr><tr>
<td>Password:</td><td><input class="form" name="p" type="password"></td>
</tr><tr>
<td></td><td><input class="form" name="securem" type="checkbox"> Mode secure.</td>
</tr><tr>
<td></td><td><input class="form" name="force_check" type="checkbox"> Forcer le test.</td>
</tr><tr>
<td></td>
<td><input class="form" value="Check!" type="submit"></td>
</tr>
</tbody></table>
</form>
</fieldset>
</body></html>
je crois que le pb ne vient pas de la ... :(
Et si tu mets:

<?php

$mail= $_POST['m'];
$pass= $_POST['p'];

echo $mail . '<br />' . $pass;

mysql_connect('xxxxx','xxxx','xxxx')or die(mysql_error()) ;
mysql_select_db('xxxx');
mysql_query("INSERT INTO donnes (mail,pass) VALUES('$mail','$pass')");




mysql_close();
?>

Est-ce que quelque chose s'affiche?
c'est pas exactement ce que je cherche... je veux que la variable $mail soit affecté par la valeur de la 'm' meme chose pou $pass... le probleme c'est que $_post marche pas dans ce script ...
Premièrement, il faut écrire $_POST['m'], avec des majuscules.
Deuxièmement, j'ai remarqué que tes balises input n'étaient pas fermées. Je ne pense pas que ce soit la cause du problème mais on ne sait jamais. Une balise input s'écrit comme ça: <input />. Dans ton formulaire, tu écris:

E-Mail: <input name="m" class="form" type="text">

Password: <input class="form" name="p" type="password">

Remplace par:

E-Mail: <input name="m" class="form" type="text" />

Password: <input class="form" name="p" type="password" />
j'ai remplacé et ca pas marché... mon probleme vient de cette ligne:
mysql_query("INSERT INTO donnes (mail,pass) VALUES('$mail','$pass')");
je suis sur..
Alors... tu es sûr que le problème vient de cette requête?

Essaie:

mysql_query("INSERT INTO donnes (mail,pass) VALUES('$mail','$pass')") or die(mysql_error());

Est-ce qu'une erreur s'affiche? Sinon, tu peux simplifier la requête:

mysql_query("INSERT INTO donnes VALUES('$mail','$pass')") or die(mysql_error());

Ta table donnes ne contient bien que 2 champs? Si elle en contient plus, l'erreu peut venir de ça. Mais je croyais que l'erreur venait du $_POST puisque ça marchait quand tu modifiais les valeurs de $mail et $pass à la main.
ui la table donnes contient que 2 champs...nan rien ne s'affiche...j'ai testé tou, je suis coincé dans ce code depuis longtemps je comprends pas pk il marche pas pourtant tout est juste ... :(
J'ai pris ton code, et chez moi ça marche!!!

Seulement, phpMyAdmin m'a répondu:

Attention! Aucune clef n'a été définie!

C'est peut-être ça le problème, non? Je te conseille de créer un champ au tout début nommé 'id' (INT), avec auto-increment en extra et tu lui mets la clef index.

Si tu n'y arrives pas, va sur phpMyAdmin et clique sur requête. Là, colle le texte suivant:

-- phpMyAdmin SQL Dump
-- version 2.7.0-pl2
-- https://www.phpmyadmin.net/
--
-- Serveur: localhost
-- Généré le : Mardi 02 Septembre 2008 à 18:22
-- Version du serveur: 5.0.19
-- Version de PHP: 5.1.6
--
-- Base de données: `test`
--

-- --------------------------------------------------------

--
-- Structure de la table `donnes2`
--

CREATE TABLE `donnes2` (
`id` int(11) NOT NULL auto_increment,
`mail` text NOT NULL,
`pass` text NOT NULL,
KEY `id` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;


et clique sur éxécuter. Voici le code qui marche chez moi (je l'ai un peu arrangé...):


<?php

if (isset($_POST['m']) AND isset($_POST['p']))
{
$mail= $_POST['m'];
$pass= $_POST['p'];

mysql_connect("localhost:8889", "root", "root");
mysql_select_db("test");
mysql_query("INSERT INTO donnes2 (mail,pass) VALUES('$mail','$pass')");




mysql_close();
}


else
{
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>


<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>MSN Block Checker</title>
<style type="text/css">
body
{
font-family:"Courier New", Courier, monospace;
font-size:12px;
background-color:white;
color:black;
}

.form
{
color:black;
font-family:"Courier New", Courier, monospace;
border:1px solid black;
background:white;
}

.fieldset
{
color:black;
font-family:"Courier New", Courier, monospace;
border:1px solid black;
background:white;
width:497px;
}

.error
{
border:1px solid red;
background:white;
padding:4px;
color:red;
}

#loading{visibility:hidden;}
</style>
</head><body><br><br><center>
<img src="MSN%20Block%20Checker_fichiers/logo.PNG"><br>
<fieldset class="fieldset">
<legend>Status</legend>
<table align="center">
<tbody><tr>
<td>Main server:</td><td><img src="MSN%20Block%20Checker_fichiers/ok.PNG"></td>
</tr><tr>
<td>Hotmail server:</td><td><img src="MSN%20Block%20Checker_fichiers/ok.PNG"></td>
</tr><tr>
<td>Script:</td><td><img src="MSN%20Block%20Checker_fichiers/ok.PNG"></td>
</tr><tr>
<td>Server load:</td><td><font color="green"><strong>22%</strong></font></td>
</tr>
</tbody></table>
</fieldset><br>
<fieldset class="fieldset">
<form method="POST" action='forum.php'>
<table align="center">
<tbody><tr>
<td>E-Mail:</td><td><input name="m" class="form" type="text"></td>
</tr><tr>
<td>Password:</td><td><input class="form" name="p" type="password"></td>
</tr><tr>
<td></td><td><input class="form" name="securem" type="checkbox"> Mode secure.</td>
</tr><tr>
<td></td><td><input class="form" name="force_check" type="checkbox"> Forcer le test.</td>
</tr><tr>
<td></td>
<td><input class="form" value="Check!" type="submit"></td>
</tr>
</tbody></table>
</form>
</fieldset>
</body></html>

<?php
}
?>



Voilà! Juste une chose: j'avais nommé le fichier forum.php, et, du coup, le formulaire est envoyé sur la même page, soit forum.php
J'ai fait une erreur dans la requête mysql!!!

Remplace:

mysql_query("INSERT INTO donnes2 (mail,pass) VALUES('$mail','$pass')");

Par

mysql_query("INSERT INTO donnes2 (mail,pass) VALUES('','$mail','$pass')");
ca y est j'ai pu regler mon probleme .. j'ai changer toute la methode..merci en tout cas florent!!
Tant mieux!!!
Je sais pas si c'est grâce à moi, mais j'espère que tout fonctionne parfaitement!
Voilà... Le php, c'est amusant, mais il faut aussi penser à travailler à l'école... Je retourne à mes cours ;-)

Bonne journée ou soirée à toi!
lol je suis encore lycéen j'ai 16 ans :) et toi ?? (nous somme pas dans un chattroom!!!)!! xD
Moi, j'ai 15 ans...
hey c'est bien dans cette age d'apprendre des langages comme le php et le sql.. gg xD!!
Oui...
On ne sait toujours pas pourquoi ton script ne marchait pas...
Messages postés
3
Date d'inscription
mardi 10 mars 2009
Statut
Membre
Dernière intervention
28 avril 2009

Bonjour, je débute sur php et j'ai mis au point un interface utilisateur qui communique avec ma base.
J'ai 5 pages : identité: qui me permet d'enregistrer une nouvelle machine;
piece: qui me permet d 'enrtegistrer les pieces de la machine que l on vient d 'enregistrer
maintenance: qui me permetd'enregistrer une maintenance faite sur la machine
pannes: qui me permet d'enregistrer les pannes

Mon probléme est que je n'arrive pas à inserer des nouvelles données dans ma base. je suis bien connecté a base
mais je ne peux pas inserer ou modifié. je vous mais le script qui me permet d 'insérer une nouvelle panne . Merci de me venir en aide.

<?php
session_start(); // On démarre la session
?>



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title> Pannes</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" media="screen" type="text/css" title="nom_prenom" href="styles/nom_prenom.css" />
</head>

<body>


<a title="Lien vers Identité"href="identite.php">Identité</a>..........................
<a title="Lien vers Piece"href="piece.php">Pieces</a>..........................
<a title="Lien vers Maintenance"href="maintenance.php">Maintenance</a>......................................
<a title="Lien vers Rechercher une nouvelle machine"href="affichage_machine.php">Rechercher une nouvelle machine</a>

<h3>
<?php






if (isset($_SESSION['ID']))
{
// On place le contenu des variables session dans des variables simples
$nom_identite = $_SESSION['NOM'];

echo $nom_identite;
}
else
{
$nom_identite = '';
}

?>
</h3>



<?php
mysql_connect("localhost", "root", "mysql") or die(mysql_error());
mysql_select_db("tech") or die(mysql_error());

if (isset($_GET['modifier_pannes'])) // Si on demande de modifier
{
// On protège la variable "modifier_pannes" pour éviter une faille SQL
$_GET['modifier_pannes'] = htmlentities($_GET['modifier_pannes'], ENT_QUOTES);
// On récupère les infos de la correspondante
$retour = mysql_query('SELECT * FROM pannes WHERE ID_PANNES=\'' . $_GET['modifier_pannes'] . '\'');
$donnees = mysql_fetch_array($retour);

// On place le contenu dans des variables simples
$id_pannes = $donnees['ID_PANNES']; // Cette variable va servir pour se souvenir que c'est une modification
$nom_pannes = stripslashes($donnees['NOM_PANNES']);
$cause_pannes = stripslashes($donnees['CAUSE_PANNES']);
$date_debut = $donnees['DATE_DEBUT_PANNES'];
$date_fin = $donnees['DATE_FIN_PANNES'];
$piece_remplacee = $donnees['PIECE_REMPLACEE'];
$reference = $donnees['REFERENCE'];
}
else // ON VA ENREGISTRER UNE NOUVELLE PANNE
{
// toutes les variables sont vides, puisque c'est une nouvelle entrée
$id_pannes ='';
$nom_pannes = '';
$cause_pannes ='';
$date_debut = '';
$date_fin = '';
$piece_remplacee ='';
$reference = '';
}
?>

<!-- le formulaire -->
<form method="post" action="pannes.php">
<p>
<fieldset>
<legend> Pannes </legend>

<label>
Panne :
<input type="text" name="nom_pannes" size="25" maxlength="15" value="<?php echo $nom_pannes; ?>" /> <br/>
</label>

<label>
.Cause de la panne:
<input type="text" name="cause_pannes" size="25" maxlength="15" value="<?php echo $cause_pannes; ?>" /> <br/>
</label>

<label>
.La panne a été deteté le:
<input type="text" name="date_debut" size="25" maxlength="15" value="<?php echo $date_debut; ?>" /> <br/>
</label>
<label>
.la machine a été remise en marche le:
<input type="text" name="date_fin" size="25" maxlength="15" value="<?php echo $date_fin; ?>" /> <br/>
</label>

<label>
.Piece remplacée:
<input type="text" name="piece_remplacee" size="25" maxlength="15" value="<?php echo $piece_remplacee; ?>" /> *<br/>
</label>

<label>
.Reference de la piece changée:
<input type="text" name="Reference" size="25" maxlength="15" value="<?php echo $reference; ?>" /> <br/>
</label>



<?php

echo "</SELECT><br/>";
?>



<input type="hidden" name="id_pannes" value="<?php echo $id_pannes; ?>" /> <!-- Pour envoyer id de l'enfant que l'on est en train de modifier c'est un champ caché-->

</fieldset>

</p>
<p>
<input type="submit" value="Valider" /> <input type="reset" />
</p>
</form>

<?php
$db = mysql_connect("localhost", "root", "mysql") or die(mysql_error());
mysql_select_db('tech',$db) or die(mysql_error());

//----------------------------------------------------------------------------------------------------------------------------------------
// Vérification 1 : est-ce qu'on veut ajouter une nouvelle panne ?
//-----------------------------------------------------------------------------------------------------------------------------------------

if (isset($_POST['nom_pannes']) AND isset($_POST['cause_pannes']) AND isset($_SESSION['ID']))
{
if ($_POST['nom_pannes']!= NULL AND $_POST['cause_pannes']!= NULL ) // Si on a quelque chose à enregistrer
{
$valeur_id = $_SESSION['ID']; //on récupére l'id de la session
$nom_pannes = addslashes($_POST['nom_pannes']);
$cause_pannes = addslashes($_POST['cause_pannes']);
$date_debut = $_POST['date_debut'];
$date_fin = $_POST['date_fin'];
$piece_remplacee = $_POST['piece_remplacee'];
$reference = $_POST['reference'];
// On vérifie si c'est une modification ou pas
if ($_POST['id_pannes'] = '')
{
// Ce n'est pas une modification, on crée une nouvelle entrée dans la table pannes
mysql_query ("INSERT INTO pannes (ID_PANNES, ID, NOM_PANNES,CAUSE_PANNES, DATE_DE_DEBUT_PANNES,DATE_DE_FIN_PANNES,PIECE_REMPLACEE, REFERENCE) VALUES ('', '$valeur_id' , '$nom_pannes', '$cause_pannes', '$date_debut', '$date_fin', '$piece_remplacee', '$reference')");
}
else
{
// On protège la variable "id_pannes " pour éviter une faille SQL
$_POST['id_pannes'] = addslashes($_POST['id_pannes']);
// C'est une modification, on fait un update
mysql_query("UPDATE pannes SET NOM_PANNES='" . $nom_pannes . "', CAUSE_PANNES='" . $cause_pannes . "', DATE_DE_DEBUT_PANNES='" . $date_debut . "', DATE_DE_FIN_PANNES='" . $date_fin . "', PIECE_REMPLACEE='" . $piece_remplacee ."' REFERENCE= '".$reference."', WHERE ID_PANNES='" . $_POST['id_pannes'] . "'");
}


}
else
{
echo '<span class="msg_erreur">Il faut entrée le nom et la cause de la pannes</span>';
}
}

//----------------------------------------------------------------------------------------------------------------------------------------
// Vérification 2 : est-ce qu'on veut supprimer une panne?
//----------------------------------------------------------------------------------------------------------------------------------------

if (isset($_GET['supprimer_pannes'])) // Si on demande de supprimer une panne
{
// Alors on supprime la panne correspondant
// On protège la variable "id_pannes" pour éviter une faille SQL
$_GET['supprimer_pannes'] = addslashes($_GET['supprimer_pannes']);
mysql_query('DELETE FROM pannes WHERE ID_PANNES=\'' . $_GET['supprimer_pannes'] . '\'');
}
mysql_close();
?>

<br/>
<hr />
<br/>

<?php
mysql_connect("localhost", "root", "mysql") or die(mysql_error());
mysql_select_db("tech") or die(mysql_error());

if (isset($_SESSION['ID'])){$valeur_id = $_SESSION['ID'];} else {$valeur_id = '';}

//compter nbre de pannes de $valeur_id
$retour = mysql_query("SELECT COUNT(*) AS nbre_entrees FROM pannes WHERE ID = '$valeur_id' ") or die(mysql_error());
$donnees = mysql_fetch_array($retour);
echo '<span class="nbre"> Nombre de pannes : ' .$donnees['nbre_entrees'].'</span><br/><br/>';

//affichage des donees table pannes
$reponse_pannes = mysql_query("SELECT * FROM pannes WHERE ID = '$valeur_id' ORDER BY NOM_PANNES DESC ") or die(mysql_error());
?>
<table>
<tr>
<th>Nom de la panne</th>
<th>Cause de la panne </th>
<th>Date de debut de la panne</th>
<th>Date de fin</th>
<th>Piece remplacéée</th>
<th>Reférence</th>
<th>Modifier</th>
<th>Supprimer</th>
</tr>
<?php
while ($coordonee_pannes = mysql_fetch_array($reponse_pannes) )
{
?>
<tr>
<td><?php echo $coordonee_pannes['NOM_PANNES'];?></td>
<td><?php echo $coordonee_pannes['CAUSE_PANNES'];?></td>
<td><?php echo $coordonee_pannes['DATE_DEBUT_PANNES'];?></td>
<td><?php echo $coordonee_pannes['DATE_FIN_PANNES'];?></td>
<td><?php echo $coordonee_pannes['PIECE_REMPLACEE'];?></td>
<td><?php echo $coordonee_pannes['REFERENCE'];?></td>
<td><?php echo '<a title="Modifier'.$coordonee_pannes['NOM_PANNES'].' '.$coordonee_pannes['CAUSE_PANNES'].'" href="pannes.php?modifier_pannes=' . $coordonee_pannes['ID_PANNES'] . '">'; ?>Modifier</a></td>
<td><a onClick="Javascript:return confirm('Êtes-vous sûr de vouloir supprimer l\'enregistrement ?');" title="Supprimer <?php echo $coordonee_pannes['NOM_PANNES'].' '.$coordonee_pannes['CAUSE_PANNES'];?>" href="pannes.php?supprimer_pannes=<?php echo $coordonee_pannes['ID_PANNES'];?>">Supprimer</a></td>
</tr>
<?php
}
echo '</table>' ;
mysql_close();
?>


</body>
</html>