Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1711 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Formulaire php Valeur envoyer NULL et non vide

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

Formulaire php Valeur envoyer NULL et non vide

n°1436893
jiojiofore​ver
Posté le 05-09-2006 à 16:13:12  profilanswer
 

Bonjour,  
j'ai créé un formulaire sous php/mysql et je voudrais envoyé NULL dans ma base qu'une chaine vide (pour mais test ensuite notnull ect ect)  
J'ai bien configuré mysql NULL = oui ...DEFAUT = NULL
mais si je ne remplie pas une chose dans mon formulaire il me renvoit une chaîne vide "".  
Donc dans ma base j'ai un "" au lieu de NULL...
merci d'avance  
 
ps: ne me dites pas de faire un teste  et de mettre en toute lettre NULL...il considére ça comme une chaîne de caractere ;)

mood
Publicité
Posté le 05-09-2006 à 16:13:12  profilanswer
 

n°1436902
anapajari
s/travail/glanding on hfr/gs;
Posté le 05-09-2006 à 16:16:48  profilanswer
 

jiojioforever a écrit :

ps: ne me dites pas de faire un teste  et de mettre en toute lettre NULL...il considére ça comme une chaîne de caractere ;)


Try again, tu étais bien parti :o ( sans les quotes autour du NULL hein)
Si ça marche toujours pas, fais nous un print de ta requête qu'on voit à quoi elle ressemble.

n°1436907
jiojiofore​ver
Posté le 05-09-2006 à 16:20:46  profilanswer
 

oups...


Message édité par jiojioforever le 05-09-2006 à 16:21:08
n°1436910
jiojiofore​ver
Posté le 05-09-2006 à 16:24:15  profilanswer
 

Par exemple,  
j'ai une page ou je fais appel à une requetes pour mettre des choses dans des champs. Pour être plus clair, j'ai des dates de concerts et je choisis d'en modifier une. Unep age s'ouvre avec les champs à modifier mais ces champs sont déjà remplis par des données que j'ai applé par la requête concerné.
Je continu...par exemple je décide de retirer le prix qui était de 3€ l'entrée et je laisse mon champ vide...  
 
je clique sur le bouton envoyer les modifications et op tout repart par POST sur une page qui execute cette requête :  
 
   $req = mysql_query('UPDATE concert SET concert_date = "'.$_POST['date_concert'].'", concert_heure  = "'.$_POST['heure_concert'].'", concert_prix = "'.$_POST['prix_concert'].'", concert_ville = "'.$_POST['ville_concert'].'",  concert_departement = "'.$_POST['dep_concert'].'", concert_lieu = "'.$_POST['lieu_concert'].'", concert_groupe1 = "'.$_POST['groupe1_concert'].'", concert_site1 ="'.$_POST['site1_concert'].'", concert_groupe2 = "'.$_POST['groupe2_concert'].'", concert_site2 ="'.$_POST['site2_concert'].'", concert_groupe3 = "'.$_POST['groupe3_concert'].'", concert_site3 ="'.$_POST['site3_concert'].'", concert_guest = "'.$_POST['guest'].'",  concert_flyer = "'.$image.'" WHERE concert_num = '.$_GET['concert_num']);

n°1436911
jiojiofore​ver
Posté le 05-09-2006 à 16:24:48  profilanswer
 

et donc pour mon exemple du prix...celui-ci passe en chaine vide et non en NULL ^^

n°1436916
anapajari
s/travail/glanding on hfr/gs;
Posté le 05-09-2006 à 16:37:05  profilanswer
 
n°1436919
jiojiofore​ver
Posté le 05-09-2006 à 16:42:11  profilanswer
 

euh oui et ? :s

n°1436923
anapajari
s/travail/glanding on hfr/gs;
Posté le 05-09-2006 à 16:49:51  profilanswer
 

Bin c'est de la bouse ce que tu écris donc tu arrêtes de mettre directement tes champs du formulaire dans ta requete.
Tu peux donc en profiter pour faires des tests sur chaque champs reçu, voir le reformater correctement ( donc y mettre NULL).
[:spamafote]

n°1436949
jiojiofore​ver
Posté le 05-09-2006 à 17:15:01  profilanswer
 

oui mais c'était pour te montrer que je ne voyais pas comment mettre NULL dans ma requête vu que je prend tous les champs par une methode POST...donc si mon champ est vide ça m'insera un "" et non NULL...

n°1436952
anapajari
s/travail/glanding on hfr/gs;
Posté le 05-09-2006 à 17:19:11  profilanswer
 

exemple sur un champs:

Code :
  1. $date_concert = empty($_POST['date_concert'])?'NULL':mysql_real_escape_string($_POST['date_concert']);


Et ensuite tu te sers de $date_concert dans ta requête.

mood
Publicité
Posté le 05-09-2006 à 17:19:11  profilanswer
 

n°1436958
jiojiofore​ver
Posté le 05-09-2006 à 17:21:42  profilanswer
 

donc en gros avant de balancer la grosse requete je teste champ par champ pour contrôler si c'est NULL ou non ?
mais je trouve ça bizar (et chiant) vu que dans la config Mysql on dit que le champt peut être null et si c'est le cas mettre NULL par défaut...

n°1436966
soju
One shot !
Posté le 05-09-2006 à 17:27:11  profilanswer
 

jiojioforever a écrit :

mais je trouve ça bizar (et chiant) vu que dans la config Mysql on dit que le champt peut être null et si c'est le cas mettre NULL par défaut...

la valeur par défaut est utilisée lors d'un INSERT

n°1436970
jiojiofore​ver
Posté le 05-09-2006 à 17:29:16  profilanswer
 

ok merci pour l'info donc UPDATE c'est mort..c'est bête ça :s

n°1436973
soju
One shot !
Posté le 05-09-2006 à 17:31:34  profilanswer
 

de plus comment veux tu que ton champ prenne une valeur par défaut alors que tu lui affecte une valeur justement !

n°1436976
jiojiofore​ver
Posté le 05-09-2006 à 17:34:27  profilanswer
 

non justement c'est ma page de modification...le champ peut être rempli par exemple par le prix du concert soit 3€ mais si je veux retirer le prix et donc laisser le champ vide puis envoyer le chamtp est donc null non?

n°1436982
soju
One shot !
Posté le 05-09-2006 à 17:38:47  profilanswer
 

...
1) la valeur par défaut est utilisée lors d'un INSERT, dans ton cas c'est un UPDATE
2) '' != NULL
3) dans ta requete tu affectes des valeurs à tous tes champs
 
cqfd
 
donc relis bien les messages d'anapajari et tu t'en sortiras


Message édité par soju le 05-09-2006 à 17:48:31
n°1437016
jiojiofore​ver
Posté le 05-09-2006 à 18:21:40  profilanswer
 

par contre ça me renvoi une chaîne  
 
$date_concert = empty($_POST['date_concert'])?'NULL':mysql_real_escape_string($_POST['date_concert']);  
 
avec marqué NULL :s

n°1437019
jiojiofore​ver
Posté le 05-09-2006 à 18:36:27  profilanswer
 

j'ai fait un test comme ça et ça marche nikel...
 
if ($_POST['groupe3_concert'] == '')
{
$groupe3_concert = null;
}

n°1437034
FlorentG
Unité de Masse
Posté le 05-09-2006 à 18:59:28  profilanswer
 

Sauf que c'est la chaîne "NULL" à mettre dans le champs...

n°1437038
jiojiofore​ver
Posté le 05-09-2006 à 19:04:24  profilanswer
 

oui en majuscule j'ai vu ça :) ! je vais tester

n°1437039
jiojiofore​ver
Posté le 05-09-2006 à 19:05:45  profilanswer
 

comme ça ?  
 
if ($_POST['site3_concert'] == '')  
{
$site3_concert = "NULL";
}
 
çame renvoit une chaîne de caractere NULL dans ma base :s

n°1437045
jiojiofore​ver
Posté le 05-09-2006 à 19:09:32  profilanswer
 

grr je fais bien ça pourtant  
 
Il y a seulement une valeur de type NULL et c'est le mot-clé NULL , insensible à la casse. La valeur NULL  
 
<?php$var = NULL;?>
 
 
 

n°1437047
jiojiofore​ver
Posté le 05-09-2006 à 19:15:28  profilanswer
 

ça non plus de fonctionne pas :(
 
if (empty($_POST['groupe3_concert']))  
{
$groupe3_concert = NULL;
}

n°1437052
jiojiofore​ver
Posté le 05-09-2006 à 19:28:34  profilanswer
 

je pensais là...il n'est pas possible de dire par exemple dans mysql si on trouve un champ vide alors on lui attribut automatiquement NULL ? une sorte de règle...

n°1437076
FlorentG
Unité de Masse
Posté le 05-09-2006 à 20:05:58  profilanswer
 

Attention, ne pas confondre le null de PHP qui ne met rien dans une variable, et le null mysql qui doit être explicité dans la requête. Sûrement ça bug parce que t'as mis des quotes.
 
Quand t'as une valeur :

site3_concert="zePouet"


Mais quand c'est null, y'a pas de quotes :

site3_concert=NULL


 
On se retrouve avec :
 

$site3_concert = isset($_POST['site3_conert']) ? '"' . mysql_real_escape_machin($_POST['site3_concert']) . '"' : 'NULL';
 
...
 
UPDATE ...... AND site3_concert = ' . $site3_concert . ' ...


Donc tu mets des quote quand y'a une valeur, et sinon pouet
 

n°1437478
jiojiofore​ver
Posté le 06-09-2006 à 11:27:20  profilanswer
 

ça ne fonctionne toujours pas...
 
regarde dans ta requête :
UPDATE ...... AND site3_concert = ' . $site3_concert . ' ...
 
tu mets des guillemets donc même si on a NULL ça mettra 'NULL' donc uen chaîne de carateres...
mon probleme est toujours pas résolu snif.

n°1437481
FlorentG
Unité de Masse
Posté le 06-09-2006 à 11:29:12  profilanswer
 

Nan j'en met pas.
 

$site3_concert = 'NULL';


->y'a la chaîne de caractère NULL dans la variable
 
Quand c'est ensuite injecté dans la requête, ça se transforme en

AND site3_concert = NULL ...


Donc c'est bon

n°1437507
jiojiofore​ver
Posté le 06-09-2006 à 11:51:02  profilanswer
 

mais tu utilises bien ce code ?  
$site3_concert = isset($_POST['site3_conert']) ? '"' . mysql_real_escape_machin($_POST['site3_concert']) . '"' : 'NULL';  
 
à la place du machin c'est string non ?

n°1437509
jiojiofore​ver
Posté le 06-09-2006 à 11:52:34  profilanswer
 

je pense là... il faut que je retire mais " " dans ma requête alors :
 
$req = mysql_query('UPDATE concert SET concert_date = "'.$date_concert.'", concert_heure  = "'.$heure_concert.'",
 
soit  
 
$req = mysql_query('UPDATE concert SET concert_date = '.$date_concert.', concert_heure  = '.$heure_concert.',

n°1437510
anapajari
s/travail/glanding on hfr/gs;
Posté le 06-09-2006 à 11:55:18  profilanswer
 

après ton

Code :
  1. $req = "update ...".$desvaleurs." ...";


est-ce que tu peux faire

Code :
  1. print $req;


et nous donner ce qui est affiché?

n°1437515
jiojiofore​ver
Posté le 06-09-2006 à 12:01:50  profilanswer
 

j'ai juste un 1 qui s'affiche....

n°1437541
FlorentG
Unité de Masse
Posté le 06-09-2006 à 12:53:00  profilanswer
 

oula [:johneh]

n°1437546
jiojiofore​ver
Posté le 06-09-2006 à 12:59:16  profilanswer
 

effectivement ^^ mais ça modifie bien mes données...


Message édité par jiojioforever le 06-09-2006 à 13:03:58
n°1437558
anapajari
s/travail/glanding on hfr/gs;
Posté le 06-09-2006 à 13:16:09  profilanswer
 

jiojioforever a écrit :

j'ai juste un 1 qui s'affiche....


my bad, j'aurais du être plus clair ...
 
Tu as dans ton code:

Code :
  1. $req = mysql_query('UPDATE concert SET ...');


Change le en:

Code :
  1. $sql = 'UPDATE concert SET ...'; // avec tes concaténations
  2. print $sql;
  3. $req = mysql_query($sql);


et dis nous ce que cela affiche!

n°1437649
jiojiofore​ver
Posté le 06-09-2006 à 14:28:32  profilanswer
 

voilà ce que ça m'affiche
 
UPDATE concert SET concert_date = "2005-12-18", concert_heure = "21h", concert_prix = "NC", concert_ville = "Auchel", concert_departement = "62", concert_lieu = "L'Odéon", concert_groupe1 = "Guerilla Poubelle", concert_site1 ="http://www.guerilla-poubelle.com", concert_groupe2 = """", concert_site2 ="NULL", concert_groupe3 = """", concert_site3 ="NULL", concert_guest = "non", concert_flyer = "" WHERE concert_num = 9

n°1437652
jiojiofore​ver
Posté le 06-09-2006 à 14:29:19  profilanswer
 

j'ai mis le code que pour ça :  
 
$groupe2_concert = isset($_POST['groupe2_concert']) ? '"' . mysql_real_escape_string($_POST['groupe2_concert']) . '"' : 'NULL';  
$site2_concert = isset($_POST['site2_conert']) ? '"' . mysql_real_escape_string($_POST['site2_concert']) . '"' : 'NULL';  
$groupe3_concert = isset($_POST['groupe3_concert']) ? '"' . mysql_real_escape_string($_POST['groupe3_concert']) . '"' : 'NULL';  
$site3_concert = isset($_POST['site3_conert']) ? '"' . mysql_real_escape_string($_POST['site3_concert']) . '"' : 'NULL';  
 
en prenant soin de modifier mon formulaire en mettant vide

n°1437655
anapajari
s/travail/glanding on hfr/gs;
Posté le 06-09-2006 à 14:31:02  profilanswer
 

Donc là tu constates qu'il y a des " ( double quotes) autour de tes NULL alors qu'il ne devrait pas y en avoir.  
Ta requête devrait être de la forme:

Code :
  1. UPDATE concert SET ..., concert_site2 =NULL,... WHERE concert_num = 9


les " en trop proviennent de la chaine initiale ( celle dans laquelle tu fais tes concaténations).
 
Par ailleurs les valeurs en SQL sont généralement entourées de ' ( quotes) et non de " ( double quotes)


Message édité par anapajari le 06-09-2006 à 14:31:54
n°1437960
jiojiofore​ver
Posté le 06-09-2006 à 21:21:41  profilanswer
 

oui mais justement le NULL il ne faut pas de ' ' mais pour les chaînes de caracteres oui...sinon ça ne rentre pas dans la base ou alors c'est moi qui écrit mal ce code là :  
 
$groupe3_concert = isset($_POST['groupe3_concert']) ? '"' . mysql_real_escape_string($_POST['groupe3_concert']) . '"' : 'NULL';  
$site3_concert = isset($_POST['site3_conert']) ? '"' . mysql_real_escape_string($_POST['site3_concert']) . '"' : 'NULL';

n°1438066
anapajari
s/travail/glanding on hfr/gs;
Posté le 07-09-2006 à 09:51:00  profilanswer
 

nan c'est ta requête qui est mal écrite !!!!!

Citation :

$req = mysql_query('UPDATE concert SET concert_date = "'.$_POST['date_concert'].'",....

n°1438077
jiojiofore​ver
Posté le 07-09-2006 à 10:02:09  profilanswer
 

oui...et voilà ma requête  
 
UPDATE concert SET concert_date = 2005-10-31, concert_heure = 20h, concert_prix = gratuit, concert_ville = Valenciennes, concert_departement = 59, concert_lieu = Le Blue Note, concert_groupe1 = Low F (it), concert_site1 =http://www.low-f.com, concert_groupe2 = "Full Screen", concert_site2 =NULL, concert_groupe3 = "", concert_site3 =NULL, concert_guest = non, concert_flyer = WHERE concert_num = 6  
 
les chaînes de caractere n'ont pas de ' ' et donc rien ne s'insert dans l base...

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Formulaire php Valeur envoyer NULL et non vide

 

Sujets relatifs
[sockets] client/serveur, envoyer des msg en meme temps[javascript] Commande smtp pour envoyer un mail
[Resolu][DataGridView] Action quand on change la valeur d'une CheckBoxPb dans la condition if valeur null
[RESOLU] formulaire html multiplesarray : supprimer une valeur dans un array
[c++]Détecter la modification de la valeur d'une variable[JavaScript] Liste dynamique dans un formulaire SELECT
créer un formulaire 
Plus de sujets relatifs à : Formulaire php Valeur envoyer NULL et non vide


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR