Pb formulaire php pour inserer dans ma bdd

Fermé
guispider Messages postés 50 Date d'inscription mardi 25 novembre 2008 Statut Membre Dernière intervention 31 mai 2009 - 5 févr. 2009 à 09:27
tite_tête13 Messages postés 125 Date d'inscription mardi 20 mai 2008 Statut Membre Dernière intervention 19 février 2010 - 10 févr. 2009 à 13:43
Bonjour,

Voila la situation :), je créer un formulaire php pour inserer dans ma BDD access mais je bug, surment a cause de l'insertion de deux champs qui sont des dates : CLOTURE et DELAI !

voila mon script !


<?php

//--------------- Connexion à la base ---------------//

require('Connexion.php');

//--------------- Définition des variable de la table ---------------//

$INTITULE = $_POST['INTITULE'];
$DELAI = $_POST['DELAI'];
$PILOTE = $_POST['PILOTE'];
$CLOTURE = $_POST['CLOTURE'];
$COMPLEMENT_CLOTURE = $_POST['COMPLEMENT_CLOTURE'];

//--------------- Calcul et incrémente le numéro ---------------//

$sql = "SELECT COUNT(*) FROM PLAN_ACTION ";

$sql_result = odbc_prepare($conn,$sql) or die("ERROR");
odbc_execute($sql_result) or die("ERROR");
$rc = odbc_fetch_into($sql_result, $my_array_plan);
/*echo ("Total rows: " . $my_array[0]);*/
odbc_free_result($sql_result);

//--------------- Définition de la variable NUM ---------------//

$NUM = $my_array_plan[0]+1 ;

//--------------- Requete éxecuté dans la table ---------------//

$sql1 = " INSERT INTO PLAN_ACTION (NUMERO_PLAN_ACTION, INTITULE, DELAI, PILOTE, CLOTURE, COMPLEMENT_CLOTURE)
VALUES ($NUM, '$INTITULE', #$DELAI#, '$PILOTE', #$CLOTURE#, '$COMPLEMENT_CLOTURE')";

$req = odbc_exec($conn,$sql1) or die('Erreur SQL : <br />'.$sql1);

?>
A voir également:

4 réponses

tite_tête13 Messages postés 125 Date d'inscription mardi 20 mai 2008 Statut Membre Dernière intervention 19 février 2010 3
5 févr. 2009 à 09:38
Slt,

Peux-tu expliquer quel est le problème?
0
guispider Messages postés 50 Date d'inscription mardi 25 novembre 2008 Statut Membre Dernière intervention 31 mai 2009 3
5 févr. 2009 à 11:35
Le problème était l'insertion d'un champ date dans une bdd acces via un pormulaire php, c'est résolu.

Maintenant j'ai un autre pb avec un formulaire de mise a jour

$sql = " UPDATE PLAN_ACTION
SET INTITULE = '$INTITULE',
DELAI = '$DELAI',
PILOTE= '$PILOTE',
WHERE NUMERO_PLAN_ACTION = $num";

Sa coince ici on me di que j'ai fai une erreur de synthaxe dans la requete mais laquel ?
0
tite_tête13 Messages postés 125 Date d'inscription mardi 20 mai 2008 Statut Membre Dernière intervention 19 février 2010 3
5 févr. 2009 à 12:02
Je ne sais pas, je ne connais pas trop acces, mais à tout hasard essaies ça:

$sql = " UPDATE PLAN_ACTION
SET INTITULE = '. $INTITULE .',
DELAI = '. $DELAI .',
PILOTE= '. $PILOTE .',
WHERE NUMERO_PLAN_ACTION = '. $num .'";

bonne chance
0
Bonjour

tite_tête13 -> Sans vouloir être méchant... c'est vraiment n'importe quoi. Indépendamment des connaissances en access
guispider -> n'aurais-tu pas d'apostrophe dans une de tes valeurs ? peux tu nous recopier le message d'erreur complet ?
0
tite_tête13 Messages postés 125 Date d'inscription mardi 20 mai 2008 Statut Membre Dernière intervention 19 février 2010 3
5 févr. 2009 à 13:24
y a pas de soucis, j'accepte les critiques (ça permet de s'améliorer).
Mais si j'ai mis ça c'est juste qu'une fois j'ai eu un problème aussi dans une requête et après avoir mis les points qui entourent la variable dans les quotes ça fonctionnait.... Donc voilà ...
0
toto > tite_tête13 Messages postés 125 Date d'inscription mardi 20 mai 2008 Statut Membre Dernière intervention 19 février 2010
5 févr. 2009 à 15:50
Ça n'était sûrement pas la même chose. Le point est utilisé en PHP pour concaténer des chaînes.
Que ces chaînes constituent une requête mysql ou access, ou servent à tout autre chose qu'une requête ne change rien à l'utilisation du point.
Mais de plus, ici, tu les a laissés à l'intérieur de la chaine délimitée par les doubles quotes. Il n'y a qu'une seule chaîne et ils en font partie, au même titre que les mots UPDATE ET INTITULE etc... Pour qu'ils servent d'opérateur de concaténation, il faut qu'ils soient entre deux chaines.
supposons que $INTITULE vaille "titre", $DELAI "3 jours", $PILOTE "chauffeur" et $num 99:
" UPDATE PLAN_ACTION SET INTITULE = '. $INTITULE .', DELAI = '. $DELAI .', PILOTE= '. $PILOTE .', WHERE NUMERO_PLAN_ACTION = '. $num .'"; 

est équivalent à :
" UPDATE PLAN_ACTION SET INTITULE = '. titre .', DELAI = '. 3 jours .', PILOTE= '. chauffeur .', WHERE  NUMERO_PLAN_ACTION = '. 99 .'";

alors que guispider voulait:
" UPDATE PLAN_ACTION SET INTITULE = 'titre', DELAI = '3 jours', PILOTE= 'chauffeur', WHERE NUMERO_PLAN_ACTION = 99"


Il reste à attendre que guispider donne son message d'erreur exact pour voir quel est le problème
0
tite_tête13 Messages postés 125 Date d'inscription mardi 20 mai 2008 Statut Membre Dernière intervention 19 février 2010 3 > toto
10 févr. 2009 à 13:43
Exact ma proposition n'est pas bonne, c'est pas :

$sql = " UPDATE PLAN_ACTION
SET INTITULE = '. $INTITULE .',
DELAI = '. $DELAI .',
PILOTE= '. $PILOTE .',
WHERE NUMERO_PLAN_ACTION = '. $num .'";

mais plutôt :

$sql = " UPDATE PLAN_ACTION
SET INTITULE = ' ". $INTITULE ." ',
DELAI = ' ". $DELAI ." ',
PILOTE= ' ". $PILOTE ." ',
WHERE NUMERO_PLAN_ACTION = ' ". $num ." '";

et là ne me dis pas que c'est n'importe quoi parce que je l'ai testé et quand je fais une echo $sql ça donne :

" UPDATE PLAN_ACTION SET INTITULE = 'titre', DELAI = '3 jours', PILOTE= 'chauffeur', WHERE NUMERO_PLAN_ACTION = 99"
0