insert into avec condition - SQL/NoSQL - Programmation
Marsh Posté le 21-04-2016 à 12:05:44
regarde plutôt du coté des trigger, ils peuvent s'excuter avant l'insertion et modifier des valeurs
Marsh Posté le 21-04-2016 à 13:18:18
malhek69 a écrit : Bonjour à tous et merci de l'intérêt que vous portez à mon problème !
|
Code :
|
Le trigger ne pourrait être une solution que si le tarif minute est dans la BDD (ce qui te permettrait de le retrouver) mais dans ce cas, ta base ne serait pas optimisée et ne respecterait pas les standards.
Sinon pas le choix, faut le fixer dans la requête.
Marsh Posté le 21-04-2016 à 16:07:45
Code :
|
Je ne comprends pas cette ligne.. cela veut-il dire en gros si nomdestination==France Fixe ou France mobile tu mets 0 sinon tu calcules tarifminute*1,3 ???
Je ne connais pas cette syntaxe..
Mais merci beaucoup de ta réponse
Marsh Posté le 21-04-2016 à 16:15:46
et voilà l'erreur que ça me fait:
Erreur SQL !<br>INSERT INTO forfaits (forfaits.forfait, forfaits.forfaits_id, forfaits.prefixe, forfaits.destination_name, forfaits.connection, forfaits.prix_minute)VALUES ('Illimite France fixe et Mobile','1','','',''*1.3,''*1.3,0)<br>Column count doesn't match value count at row 1
Marsh Posté le 21-04-2016 à 18:36:13
malhek69 a écrit :
|
C'est un IF sous forme ternaire en PHP. Bien pratique parfois
Marsh Posté le 21-04-2016 à 18:40:38
malhek69 a écrit : et voilà l'erreur que ça me fait: |
Cela veut juste dire que tu as plus de colonnes dans VALUES que dans INSERT INTO (ma faute, je ne peux pas tester). En plus, il faut tester le type de données sinon tu multiplies des chaînes de caractères ,ce qui est assez discutable.
Code :
|
Marsh Posté le 22-04-2016 à 08:47:56
Ah oui dans ma BDD j'ai mis tarifminute et miseenrelation en décimal. Je vais peut-être les changer en float même si j'ai jamais bien compris la différence.
En tout cas merci beaucoup je vais tester ça de suite
Marsh Posté le 22-04-2016 à 09:43:51
Decimal : Troncature si ça dépasse la taille (en fait c'est une chaîne de caractère en interne)
Float : Arrondi si ça dépasse la taille
Quoi qu'il en soit, il faut fixer le type en PHP et surtout ne jamais placer une variable postée dans une requête sans l'avoir typé avant et viré les caractères d'échappements éventuels (éviter une injection SQL).
Par ailleurs, si tu ne fais pas ça et que le nom de la destination contient une apostrophe, ça va crasher.
Marsh Posté le 22-04-2016 à 10:04:07
Toujours une erreur..
Erreur SQL !<br>INSERT INTO forfaits (forfaits.forfait, forfaits.forfaits_id, forfaits.prefixe, forfaits.destination_name, forfaits.connection, forfaits.prix_minute) VALUES( 'Illimite France fixe et Mobile', 1, '', '' 0, 0)<br>You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '0, 0)' at line 1
Comme s'il n'arrivait plus d'un coup à récupérer les variables $prefix et $nomdestination. Alors que sur la requête précédente et la suivante il y arrive très bien...
Marsh Posté le 22-04-2016 à 10:22:03
Il ta manque une virgule après '$nomdestination'
Après pour le fait que tes variables soient vides, je n'en sais rien
Marsh Posté le 22-04-2016 à 10:31:44
Bon... Je ne ferai aucun commentaire sur ma bêtise.. c'était bien juste la virgule qui manquait..
Merci infiniment de cette aide et bonne journée ! ! ! !
Marsh Posté le 21-04-2016 à 12:01:16
Bonjour à tous et merci de l'intérêt que vous portez à mon problème !
Bon je bosse avec une BDD mysql, j'essaye de faire un insert into avec une condition qui changerait la valeur inséré. pour le moment j'ai pondu ça, mais comme je m'en foutais c'est faux ^^Quelqu'un aurait une idée??
Merci à tous pour l'aide apportée.
Et bonne journée sous ces chaleurs.