PHP - POSTGRESQL 8 problème insert integer

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : PHP - POSTGRESQL 8 problème insert integer

par bzayid » 28 avr. 2006, 12:48

Merci beaucoup, ça marche !

J'y avait pensé et j'avais déjà essayé mais ça ne fonctionnait pas... j'avais sans doute du faire une erreur quelque part.

En tout cas, encore merci ;)

par Vaedan » 28 avr. 2006, 12:22

$nombre1 = !empty( $_POST["nombre1"] ) ? "'".$_POST["nombre1"]."'" : "NULL";
$nombre2 = !empty( $_POST["nombre2"] ) ? "'".$_POST["nombre2"]."'" : "NULL";
$nombre3 = !empty( $_POST["nombre3"] ) ? "'".$_POST["nombre3"]."'" : "NULL";
$nombre4 = !empty( $_POST["nombre4"] ) ? "'".$_POST["nombre4"]."'" : "NULL";

$rq = "INSERT INTO table (nombre1,nombre2,nombre3,nombre4,) VALUES ($nombre1,$nombre2,$nombre3,$nombre4)";

$sql = pg_query($rq);

par bzayid » 28 avr. 2006, 11:49

insere tout simplement du vide ''
je te dis qu'il veut pas insérer du vide...
A ce moment j'ai une erreur comme quoi le champ de type integer ne peut pas recevoir la valeur '' (qui est le vide). En fait, ce sont les simples cot qui m'embêtent. Le problème c'est que si je les mets pas, j'ai une syntaxe erreur.

par Vaedan » 28 avr. 2006, 11:42

bah bah bah ! pourquoi tu veux du null alors que du vide suffit :)
insere tout simplement du vide '' au lieu d'un null. et si tu veux vraiment du null :
if ( strlen( $ma_chaine_postgre ) === 0 )
{
    $ma_chaine_postgre = NULL;
}

par bzayid » 28 avr. 2006, 11:29

oui, si je mets null sans cot, ça marche (j'avais déjà essayé) mais le problème c'est que je ne sais pas à priori si je vais recevoir une valeur ou pas...

par Vaedan » 28 avr. 2006, 11:26

il me semble que pour mysql, il suffit d'avoir un insert contenant NULL (sans cot simple ou double). ça doit être pareil pour postgresql 8 ...

PHP - POSTGRESQL 8 problème insert integer

par bzayid » 28 avr. 2006, 11:14

Bonjour à tous,

J'ai un petit problème à cause de ma db postgresql 8.



Le problème est le suivant :

je traite un formulaire qui m'envoie la valeur de plusieurs champs "nombre".
$nombre1 = $_POST["nombre1"];
$nombre2 = $_POST["nombre2"];
$nombre3 = $_POST["nombre3"];
$nombre4 = $_POST["nombre4"];
dans ma db, ces champs sont de type integer sans restriction càd null.

si l'utilisateur entre quelque chose j'aurais
- soit la valeur du champ nombre
- soit le vide.

J'effectue une requete d'INSERT
$rq = "INSERT INTO table (nombre1,nombre2,nombre3,nombre4,) VALUES ('$nombre1','$nombre2','$nombre3','$nombre4')";

$sql = pg_query($rq);
A ce moment j'ai une erreur comme quoi le champ de type integer ne peut pas recevoir la valeur '' (qui est le vide). En fait, ce sont les simples cot qui m'embêtent. Le problème c'est que si je les mets pas, j'ai une syntaxe erreur.

J'ai essayé ça :
if (empty($_POST["nombre1"])) { $nombre1 = null; } else { $nombre1 = $_POST["nombre1"]; }
Mais les simples cot empêchent là aussi la valeur null d'être insérée...

A moins de faire 4 requêtes séparées en testant avant si la valeur du la variable est vide, je ne vois pas comment faire... Est-ce la seule solution ?

Note: dans la version antérieure de postgresql, le problème ne se posait pas. je suppose qu'il ont rendu le typage des champs plus strict...

Merci d'avance.