Pb "insert into" une base de données

[Résolu/Fermé]
Signaler
-
 fiu -
Bonjour,




A ceux qui auraient un tout petit peu de temps pour observer mon code car il ne tourne pas ! Rien ne s'inscrit dans la base de données . J'ai beau le lire et le relire (du haut de ma toute petite expérience (env.2 semaines)), je n'arrive pas à trouver l'erreur, alors en dernier recours je m'adresse à vous !

MERCI D'AVANCE du temps que vous me ferez gagner !

(je précise que le fichier suivant est nommé : act_choix_metiers.php)

<?php
session_start();
$nom=$_SESSION['nom'];
?>

<?php
echo $nom;
echo $metier1;
?>

<?php
if(isset($_POST['metier1']) AND isset($_POST['metier2']) AND isset($_POST['metier3']) AND isset($_POST['raison1']))
{
if($_POST['metier1']!=NULL OR $_POST['metier2']!=NULL OR $_POST['metier3']!=NULL OR $_POST['raison1']!=NULL)
{

mysql_connect('localhost','root','');
mysql_select_db('db');
$metier1=mysql_real_escape_string(htmlspectialchars($_POST['metier1']));
$metier2=mysql_real_escape_string(htmlspectialchars($_POST['metier2']));
$metier3=mysql_real_escape_string(htmlspectialchars($_POST['metier3']));
$raison1=mysql_real_escape_string(htmlspectialchars($_POST['raison1']));
mysql_query("INSERT INTO eleves VALUES('','$nom','','$date','$heure','$metier1','$metier2','$metier3','$raison1') where nom='$nom' ");
mysql_close();


}
}



?>

<!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" lang="fr">
<link rel="stylesheet" media="screen" type="text/css" title="styles2" href="styles1.css" />

<head>
<title>activite</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>

<body>
<div id="en_tete">
<center><img src="img2/titre_classeur.JPG"/>
</div>

<div id="menu">
<div class="menuhaut">
<div class="bordure">

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

</div>
</div>
<div class="menubas"></div>
</div>


<div id="corps">
<div class="bordure">
<strong>Elève connecté : <?php echo $_SESSION['nom'];?></strong><br/><br/>

<?php
$date=date('d/m/Y');
$heure=date('H/i');
?>
Note ici trois métiers qui t'attirent : <br/>
<form action="act_choix_metiers.php" type="post">
Métier 1 : <input type="text" size="80" name="metier1"/><br/>
Métier 2 : <input type="text" size="80" name="metier2"/><br/>
Métier 3 : <input type="text" size="80" name="metier3"/><br/>
Raisons qui me font choisir ces trois métiers : <textarea rows="6" cols="60" name="raison1"></textarea><br/>
<input type="submit" value="Valider mon choix"/>
</form>

3 réponses

Salut

Je suis pas très doué en php, mais je pense que l'erreur vient de
mysql_query("INSERT INTO eleves VALUES('','$nom','','$date','$heure','$metier1','$metier2','$metier3','$raison1') where nom='$nom' "); 

car ca ressemble furieusement à l'appel de la fonction mysql_query avec un argument '$nom' et un autre ",'$date',$heure....nom='$nom'"
(en plus tu as rajouté where qui est incompatible avec insert en sql, mais là il est noyé dans la chaine)

prefère donc l'écriture
$req = "insert into eleves values('$nom', '$date', '$heure' ....'$raison1')";
mysql_query($req);
Merci pour ta réponse.
Ca ne marche toujours pas.
Il est vrai que nul part je ne vois de where avec insert mais alors, comment faire en sorte qu'il n'entre mes données qu'à une ligne de ma table voulue.
Le but est de compléter une table déjà existante (elle contient des id + noms d'élèves + un mot de passe pour chacun).
Je suis un peu perdue mais je commence à prendre l'habitude de passer des heures sur quelques petites lignes de code.
Merci de votre aide
Salut

Pour compléter une ligne, on utilise l'instruction Mettre À Jour, à savoir UPDATE
la syntaxe rudimentaire est
UPDATE table SET colonne = expression WHERE prédicat

je connais pas la structure de eleves, mais si eleves comportait les colonnes nom, date, heure, metier1, metier2, metier3 & raison1, la mise à jour d'une ligne de eleves s'écrirait
$req="
update eleves
set date='$date'
, heure='$heure'
, metier1='$metier1'
, metier2='$metier2'
, metier3='$metier3'
, raison1='$raison1'
where nom = '$nom'
";

J'aime bien cette syntaxe, elle permet avec un echo (je fais bcp d'echo étant débutant) de vérifier que la requête est bien celle qu'on attend

nb: je n'ai pas regardé ton code php. je n'ai donc aucune idée de ce à quoi tu destines chaque valeur... à toi de mettre les bonnes valeurs aux bons endroits