Le script n'inserre aucune données dans la bdd...

Petit nouveau ! | 7 Messages

27 oct. 2005, 22:26

Bonjour,
Le script que j'ai créer ci-dessous (qui récupère les données d'un formulaire pour les insérer dans la bdd), ne m'affiche aucun message d'erreur, cependant il ne m'inserre aucunes données dans la bdd ! 8-[
(Dans le formulaire il y notament a des cases à cocher.)
<?

\\connexion a la base
*************
*************

$semaine = $_POST['semaine'];
$jour = $_POST['jour'];
$num_jour = $_POST['num_jour'];
$mois = $_POST['mois'];
$annee = $_POST['annee'];
$minimes = $_POST['Minimes'];
$benjamins = $_POST['Benjamins'];
$poussins = $_POST['Poussins'];
$minipoussins = $_POST['Mini-Poussins'];
$type = $_POST['type'];
$l_rdv = $_POST['lieu_rdv'];
$rdv_h = $_POST['rdv_heure'];
$rdv_min = $_POST['rdv_minutes'];
$commentaires = $_POST['commentaires'];

$date = "'.$jour.' '.$num_jour.' '.$mois.' '.$annee.'";
$h_rdv = "'.$rdv_h.'h'.$rdv_min.'"; 

for ($i = 0; $i < count($categorie); $i++)
{
    echo "$categorie[$i] . ";
}


mysql_query("INSERT INTO matchmail(id,semaine,date,type,h_rdv,l_rdv,commentaires) 

VALUES('', '$semaine', '$date', '$type', '$h_rdv', '$l_rdv', '$commentaires')");

print("<center><br><br> $type ajouté avec succès !</center>");

?>
Merci d'avance ! :wink:

Invité
Invité n'ayant pas de compte PHPfrance

27 oct. 2005, 22:41

2 début de piste :
voir htmlentities
voir stripslashes
voir ENT_QUOTES

si magic_quotes_gpc sont a "on" :

$semaine = stripslashes(htmlentities($_POST['semaine']));

Petit nouveau ! | 7 Messages

27 oct. 2005, 23:01

??
J'ai chercher dans le manuel PHP la signification de ce que tu as écrit, mais je ne vois pas où est le problème dans mon script ? 8-[

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

27 oct. 2005, 23:16

Salut, 1 autre piste ... le nom de ton champ date !!

"date" étant un nom réservé par mysql, échange le par date_mail ou dte ou autre encore, et refait un test.

De plus c'est quoi ce format de date ?
$date = "'.$jour.' '.$num_jour.' '.$mois.' '.$annee.'";
qui d'ailleur a des guillemets de trop

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 55 Messages

27 oct. 2005, 23:21

Ce qui est drôle c'est que tu dis que la requete est effectuée avec succès, sans le vérifier d'abord :D
rajoute un truc de ce genre, pour voir si une erreur est apparue:
$requete = "INSERT INTO etc...";
$resultat = mysql_query($requete) 
or die("Une grosse erreur est survenue : <br> requete: " . $requete . "<br> erreur: (" . mysql_errno() . ") " . mysql_error());
ainsi, tu verras pour de vrai si tout c'est bien passé ou pas .
Mais qu'importe..

Petit nouveau ! | 7 Messages

27 oct. 2005, 23:22

Salut, 1 autre piste ... le nom de ton champ date !!

"date" étant un nom réservé par mysql, échange le par date_mail ou dte ou autre encore, et refait un test.
J'ai testé avec $date_match mais ca ne change rien ! :(
De plus c'est quoi ce format de date ?
PHP:
$date = "'.$jour.' '.$num_jour.' '.$mois.' '.$annee.'";

qui d'ailleur a des guillemets de trop
Jeudi 27 Octobre 2005
Ou sont les guillemets en trop O:)
Modifié en dernier par phylis le 27 oct. 2005, 23:23, modifié 1 fois.

Mammouth du PHP | 19672 Messages

27 oct. 2005, 23:23

Si dans les données il y a du texte comportant par exemple des apostrophes, elles vont créer un conflit avec les apostrophes encadrant les valeurs à insérer. il faut donc les protéger. L'utilisation de addslashes() (et non stripslashes() qui les enlève)

Ensuite, ton code aurait besoin d'un peu de ménage:
<?
/*
connexion a la base
*************
*************
*/
$semaine      = $_POST['semaine'];
$jour         = $_POST['jour'];
$num_jour     = $_POST['num_jour'];
$mois         = $_POST['mois'];
$annee        = $_POST['annee'];
$minimes      = $_POST['Minimes'];
$benjamins    = $_POST['Benjamins'];
$poussins     = $_POST['Poussins'];
$minipoussins = $_POST['Mini-Poussins'];
$type         = $_POST['type'];
$l_rdv        = $_POST['lieu_rdv'];
$rdv_h        = $_POST['rdv_heure'];
$rdv_min      = $_POST['rdv_minutes'];
$commentaires = $_POST['commentaires'];

$date  = $jour." ".$num_jour." ".$mois." ".$annee;
$h_rdv = $rdv_h."h".$rdv_min;

for ($i = 0; $i < count($categorie); $i++)
{
    echo "$categorie[$i] . ";
}
mysql_query("INSERT INTO matchmail(semaine,date,type,h_rdv,l_rdv,commentaires) ".
            "VALUES('". $semaine ."', '". $date ."', '". $type ."', '". $h_rdv ."', '". $l_rdv ."', '". $commentaires ."')");

print("<center><br><br>". $type ." ajouté avec succès !</center>");
?>
-1- c'est plus lisible comme ça;
-2- les concaténation, c'est pas n'importe comment pour la création des heures et dates ou les valeurs dans la requête SQL;
-3- dans la requête d'insertion, préciser un champ pour mettre une valeur vide ne sert à rien: on enlève le champ et les apostrophes vides tout simplement.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Petit nouveau ! | 7 Messages

27 oct. 2005, 23:33

Cyrano, j'ai remplacé ton code par le mien, effectivement ca marche ! :D

Par contre dans la bdd, dans le champ categorie il y a marqué NULL, ce qui est logique puisque lorsque le script insère les données dans la bdd il n'y insère pas le champ catégorie, mais comment faire pour insérer le résultat de cette boucle

Code : Tout sélectionner

for ($i = 0; $i < count($categorie); $i++) { echo "$categorie[$i] . "; }
dans le champ categorie de la bdd ?


Encore merci à vous tous pour votre aide ! :wink:

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

27 oct. 2005, 23:45

Je m'explique mieux
Salut, 1 autre piste ... le nom de ton champ date !!

"date" étant un nom réservé par mysql, échange le par date_mail ou dte ou autre encore, et refait un test.
J'ai testé avec $date_match mais ca ne change rien ! :(
Je parlais du nom du CHAMP pas de la variable, ton champ s'appel "date" c'est lui qu'il faut changer ... ça peut éviter des problemes :wink:
De plus c'est quoi ce format de date ?
PHP:
$date = "'.$jour.' '.$num_jour.' '.$mois.' '.$annee.'";

qui d'ailleur a des guillemets de trop
Jeudi 27 Octobre 2005
Ou sont les guillemets en trop O:)

oui bien sur comme ça c'est plus clair si ton champ est en varchar , mais ça ne va pas etre évident de faire des traitement sur la date :?

Pour ton autre probleme ... il n'y a pas de champ catégorie proposé dans la requete !?

c'est ce champ qui doit contenir les valeurs des cases cochées ?

ou as tu plusieurs champ... un pour chaque valeur de case cochée ?

la variable $catégorie n'est pas initialisée avec la variable POST correspondant au cases cochées !

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 55 Messages

27 oct. 2005, 23:57

c'est quoi $categorie ? un tableau ?
sinon tu imploses le tout dans une chaîne de caractères, et tu l'exploses quand t'en as besoin, c'est tranquille.

$cat=implode("|", $categorie);

*****
$categorie=explode("|", $cat);
Mais qu'importe..

Petit nouveau ! | 7 Messages

28 oct. 2005, 00:05

Les cases à cocher sont de ce type:
[ ] otpion 1
[ ] option 2
[ ] option 3
[ ] option 4

Et ce que je veux c'est:
par exemple on a cette situation:
[x] otpion 1
[x] option 2
[ ] option 3
[x] option 4
eh bien il faudrait que le script m'insère au niveau du champ 'categorie' ceci:
option 1, option 2, option 4:

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

28 oct. 2005, 00:14

je suppose que tu as des cases a cocher avec comme attribut "name" quelque chose comme ça .... name="categorie[]"... avec des [].
$categorie= $_POST['categorie'];
$categorie=implode (",",$categorie);
et tu poura ainsi inserer $categorie dasn le champ prévu.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Petit nouveau ! | 7 Messages

28 oct. 2005, 00:16

Voici les cases à cocher:

Code : Tout sélectionner

<input type="checkbox" name="categorie[]" value="Minimes"> Minimes<br> <input type="checkbox" name="categorie[]" value="Benjamins"> Benjamins<br> <input type="checkbox" name="categorie[]" value="Poussins"> Poussins<br> <input type="checkbox" name="categorie[]" value="Mini-Poussins"> Mini-Poussins<br>

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

28 oct. 2005, 00:19

oui oui , merci (impecable comme ça):lol:

tu n'a plus qu'a mettre en place ce que je viens de dire, avec une requete comme tu l'a deja :wink:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Petit nouveau ! | 7 Messages

28 oct. 2005, 00:27

Super, ca marche !! 8)

Merci à vous tous pour votre aide ! :wink: