Insérer et modifier en php

Résolu/Fermé
Yoshi - 13 mai 2008 à 16:29
 Yoshi - 13 mai 2008 à 19:15
Bonjour,
Voilà j'ai un projet de fin d'année dont le but est de faire un site pour une entreprise ou autre

Ma partie de projet est d'insérer et de modifier des réservations de gîtes mais lorsque je veux le faire, soit il me dit que la réservation est déjà insérer ou qu'il est impossible de la modifier donc je commence à m'énerver sur les scripts
Voilà celui pour insérer
body bgcolor="#000080" text="#FFFFFF" link="#FFFF00" vlink="#00FFFF">
<?php


$serveur = mysql_connect ('localhost','root') or die ('Erreur : .mysql_error()' );
mysql_select_db('gdv',$serveur);

// ISSET : teste si les zones à saisir sont bien renseignées
if (isset($_POST['nugite']))
{
$numero=$_POST['nugite'];
}
if (isset($_POST['datedeb']))
{
$datedeb=$_POST['datedeb'];
}
if (isset($_POST['datefin']))
{
$datefin=$_POST['datefin'];
}
$verif = "select * from reservation where NoGite=$numero and DateResDeb=$datedeb";
if (!$verif)
{
$sql="insert into RESERVATION (NoGite, DateResDeb, DateResFin) ";
$sql=$sql."values ($numero,'$datedeb','$datefin')";
mysql_query($sql) or die ("erreur !");
echo "reservation enregistrée";
}
else
echo "reservation deja existante"; (<---- là il me marque toujours se echo)

// on ferme la connexion à la base
mysql_close();


?>

Et là c'est la modif

<html>

<head>
</head>

<body bgcolor="#000080" text="#FFFFFF" link="#FFFF00" vlink="#00FFFF">

<?php

$NoRes=$_POST['NoRes'];
$DateResDeb=$_POST['DateResDeb'];
$DateResFin=$_POST['DateResFin'];
$NoGite=$_POST['NoGite'];


$maconnexion =mysql_connect("localhost","root","password")
or die("Connexion au serveur impossible");
$db=mysql_select_db("gdv",$maconnexion)
or die("Sélection de la base de données impossible");

$req = UPDATE SET `NoRes` = '$NoRes',`DateResDeb` = '$DateResDeb',`DateResFin` = '$DateResFin',`NoGite` = '$NoGite';

$ok=mysql_query($req);
if ($ok)

{
echo 'Requête exécutée<BR><BR> <a href="update_gite.php"> Cliquez ici pour revenir à la page précédente.';
}
else

{
echo 'Impossible d\'exécuter cette requête...';
}

mysql_close ();

?>

</body>

</html>


Donc si quelqu'un peut m'aider (sans forcer les cerveau) je doit le rendre pour jeudi!!

Merci de votre aide
A voir également:

12 réponses

Cralon Messages postés 557 Date d'inscription samedi 20 octobre 2007 Statut Membre Dernière intervention 11 novembre 2010 348
13 mai 2008 à 16:38
Tu fais un if(!$verif) ce qui signifie que tu veux que $verif soit égal à false. $verif contient une chaîne de caractère (ta requête), donc aucun rapport ! Normal que ça ne fonctionne pas.
$verif = "select * from reservation where NoGite=$numero and DateResDeb=$datedeb";
$req = mysql_query($verif);
if (mysql_num_rows($req)==0)
{
$sql="insert into RESERVATION (NoGite, DateResDeb, DateResFin) ";
$sql=$sql."values ($numero,'$datedeb','$datefin')";
mysql_query($sql) or die ("erreur !");
echo "reservation enregistrée";
}
else
echo "reservation deja existante"; (<---- là il me marque toujours se echo) 

Ceci devrait mieux fonctionner. Tu avais oublié de faire mysql_query pour exécuter la requête. Ensuite à présent dans le if tu testes si la requête renvoie 0 résultats ou pas.

Même problème pour la seconde page. Tu as pensé au mysql_query mais tu testes son résultat comme un booléen. A remplacer par mysql_num_rowst().
0
juste avant que je test les dates pour du php à MySql c bien YYYYMMDD??? (année mois jour)
0
Sinon je viens te tester avec YYYYMMDD et il me marque toujours réservation déjà effectués!!
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894 > Yoshi
13 mai 2008 à 16:53
pour faire un UPDATE il faut une condition WHERE sinon mysql ne saura pas quoi modifier,

tu dois avoir un numéro de gite $NoGite transmis par ta demande de modif, alors utilises le comme condition:

$req = UPDATE SET `NoRes` = '$NoRes',`DateResDeb` = '$DateResDeb',`DateResFin` = '$DateResFin' WHERE `NoGite` = '$NoGite'; 
0
Cralon Messages postés 557 Date d'inscription samedi 20 octobre 2007 Statut Membre Dernière intervention 11 novembre 2010 348
13 mai 2008 à 16:50
En MySQL il me semble que les dates sont sous le format YYYY-MM-DD. Sans certitude cependant.

Sinon je ne vois pas pourquoi le problème persiste. C'est étrange.
0
Bon comme un idiot j'avais oublié les tiret entre année et mois puis mois et jour! la réservation a été enregistré et je la retrouve sur MySql
Maintenant je test pour les mise à jour
0
Cralon Messages postés 557 Date d'inscription samedi 20 octobre 2007 Statut Membre Dernière intervention 11 novembre 2010 348 > Yoshi
13 mai 2008 à 16:55
Parfait si c'était ça. Par contre effectivement suit bien le conseil d'Alain_42, sinon t'auras quelques surprises. J'avais pas vu cette erreur.
0
je suis en train de refaire pour la mise à jour sous les conseils d'alain_42
0
Il me marque en parse error

<html>

<head>
</head>

<body bgcolor="#000080" text="#FFFFFF" link="#FFFF00" vlink="#00FFFF">

<?php

$NoRes=$_POST['NoRes'];
$DateResDeb=$_POST['DateResDeb'];
$DateResFin=$_POST['DateResFin'];
$NoGite=$_POST['NoGite'];


$maconnexion =mysql_connect("localhost","root")
or die("Connexion au serveur impossible");
$db=mysql_select_db("gdv",$maconnexion)
or die("Sélection de la base de données impossible");

$req = UPDATE SET `NoRes` = '$NoRes',`DateResDeb` = '$DateResDeb',`DateResFin` = '$DateResFin' WHERE `NoGite` = '$NoGite';
$ok=mysql_query($req);
if ($ok)
{
echo 'Requête exécutée<BR><BR> <a href="update_gite.php"> Cliquez ici pour revenir à la page précédente.';
}
else
{
echo 'Impossible d\'exécuter cette requête...';
}

mysql_close ();

?>

</body>

</html>

je trouve pas l'erreur!!
0
Cralon Messages postés 557 Date d'inscription samedi 20 octobre 2007 Statut Membre Dernière intervention 11 novembre 2010 348
13 mai 2008 à 17:01
Il manque des " " autour de ta requête. N'oublies pas de rajouter le mysql_num_rows dans le if. Sinon ça ne fonctionnera pas.
0
Cralon Messages postés 557 Date d'inscription samedi 20 octobre 2007 Statut Membre Dernière intervention 11 novembre 2010 348 > Cralon Messages postés 557 Date d'inscription samedi 20 octobre 2007 Statut Membre Dernière intervention 11 novembre 2010
13 mai 2008 à 17:02
Non d'ailleurs je dis des conneries, c'est pas un select donc y'a pas de mysql_num_rows...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Non toujours la même erreur!
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
13 mai 2008 à 17:27
Grrrr,

il faudrait peut être bien préciser quelle table est a UPDATER !!

Essayes comme ça:

$req ="UPDATE nom_de_ta_table SET `NoRes` = '".$NoRes."',`DateResDeb` = '".$DateResDeb."',`DateResFin` = '".$DateResFin."' WHERE `NoGite` = '".$NoGite."'";


@lain
0
J'ai un problème je ne vois pas la dernière réponse d'Alain_42!!
0
Il me dit toujours "Impossible d'exécuter cette requête... " en lui demandant de modifier la date d'une réservation!
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
13 mai 2008 à 18:07
Je t'en renvoie une copie:

Grrrr,

il faudrait peut être bien préciser quelle table est a UPDATER !!

Essayes comme ça:

$req ="UPDATE nom_de_ta_table SET `NoRes` = '".$NoRes."',`DateResDeb` = '".$DateResDeb."',`DateResFin` = '".$DateResFin."' WHERE `NoGite` = '".$NoGite."'";



@lain
0
Yoshi > Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017
13 mai 2008 à 18:10
Déjà essayer et ça marche pas!! il me marque mon echo 'Impossible d'exécuter cette requête... '
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894 > Yoshi
13 mai 2008 à 18:14
donnes nous une copie de la partie de code ou tu as ta requette.
0
<html>

<head>
</head>

<body bgcolor="#000080" text="#FFFFFF" link="#FFFF00" vlink="#00FFFF">

<?php

$NoRes=$_POST['NoRes'];
$DateResDeb=$_POST['DateResDeb'];
$DateResFin=$_POST['DateResFin'];
$NoGite=$_POST['NoGite'];


$maconnexion =mysql_connect("localhost","root")
or die("Connexion au serveur impossible");
$db=mysql_select_db("gdv",$maconnexion)
or die("Sélection de la base de données impossible");

$req ="UPDATE reservation SET `NoRes` = '".$NoRes."',`DateResDeb` = '".$DateResDeb."',`DateResFin` = '".$DateResFin."' WHERE `NoGite` = '".$NoGite."'";
$ok=mysql_query($req);
if ($ok)
{
echo 'Requête exécutée<BR><BR> <a href="update_gite.php"> Cliquez ici pour revenir à la page précédente.';
}
else
{
echo 'Impossible d\'exécuter cette requête...';
}

mysql_close ();

?>

</body>

</html>
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
13 mai 2008 à 18:29
essayes comme ça:

$req ="UPDATE reservation SET NoRes='".$NoRes."',DateResDeb= '".$DateResDeb."',DateResFin= '".$DateResFin."'  WHERE NoGite='".$NoGite."'";
$ok=mysql_query($req) or die ("Pb requette: ".mysql_error());



sinon vérifie que tes noms de champs de ta table sont bien pareils que ceux de ta requette majuscules minuscules etc..

idem pour le nom de la table
0
Il me marque "Pb requette: Duplicata du champ '32' pour la clef 1" sans modifier la réservation!
0
c'est 31 et non 32 désolé!!
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
13 mai 2008 à 19:00
Est ce que dans ta table tu n'as pas plusieurs enregistrements pour un même numéro de gite ?

il se peut que les erreurs précédentes aient polué ta table.
0
si justement un gite peut avoir plusieurs réservation comme dans un hôtel une chambre a plusieurs réservations donc je doi mettre le WHERE sur le Numéro de réservation??
0
c'est bon j'ai mis :
<html>

<head>
</head>

<body bgcolor="#000080" text="#FFFFFF" link="#FFFF00" vlink="#00FFFF">

<?php

$NoRes=$_POST['NoRes'];
$DateResDeb=$_POST['DateResDeb'];
$DateResFin=$_POST['DateResFin'];
$NoGite=$_POST['NoGite'];


$maconnexion =mysql_connect("localhost","root")
or die("Connexion au serveur impossible");
$db=mysql_select_db("gdv",$maconnexion)
or die("Sélection de la base de données impossible");

$req ="UPDATE reservation SET NoGite='".$NoGite."',DateResDeb= '".$DateResDeb."',DateResFin= '".$DateResFin."' WHERE NoRes='".$NoRes."'";
$ok=mysql_query($req) or die ("Pb requette: ".mysql_error());

if ($ok)
{
echo 'Requête exécutée<BR><BR> <a href="update_gite.php"> Cliquez ici pour revenir à la page précédente.';
}
else
{
echo 'Impossible d\'exécuter cette requête...';
}

mysql_close ();

?>

</body>

</html>

Et sa marche parfaitement !!

Merci à Alain_42 et Cralon pour l'aide!!!
0