Donnée non enregistrée dans bdd !

Mali
Invité n'ayant pas de compte PHPfrance

03 nov. 2006, 11:58

JE VEUX SURTOUT COMPRENDRE POURQUOI JE N'ARRIVE PAS A COMMUNIQUER DANS UN SENS AVEC MA BDD MAIS PAS DANS L'AUTRE ! ou cela peut il coincer ?????

ci dessous post dans un forum OScommerce sans réponse... S'il vous plait.

Merci

Mali
-------------------------------------------------------------------
Bonjour,

je me prends la tete depuis deux jours sur une contribution pour OScommerce, et je fais finir par vider les pharmacies de Kemper/Quimper en aspirine !

Voilà,

je souhaite envoyé le n° de suivi d'un colissimo au client via l'interface de l'admin. J'ai donc installé la contrib :

http://s144508932.onlinehome.fr/trackin … mo+ups.txt

du post (forum oscommerce) :

http://www.oscommerce-fr.info/forum/ind … &st=75


Tout fonctionne QUASIMENT bien, j'ai bien les champs dans l'admin (admin\orders.php...) mais une fois que je renseigne le champ Colissimo, il n'enregistre pas le n° dans la base de donnée. Par contre si je vais dans la BDD et que je rentre le N°, il apparait dans la page d'admin. Ca marche dans un sens mais pas dand l'autre ! argggg.

Apparement, c'est par cette ligne que la BDD est sollicitée :

        tep_db_query("insert into " . TABLE_ORDERS_STATUS_HISTORY . " (orders_id, orders_status_id, date_added, customer_notified, comments, track_num, track_num2) values ('" . (int)$oID . "', '" . tep_db_input($status) . "', now(), " . tep_db_input($customer_notified) . "', '" . tep_db_input($comments)  . "', '" . tep_db_input($track_num) . "', '" . tep_db_input($track_num2) . "')");
Quelqu'un voit le souci ? avant que j'attaque les antidepresseurs !

PS : track_num et track_num2 ont été crée avec :

Code:

Code : Tout sélectionner

ALTER TABLE `orders_status_history` ADD `track_num` VARCHAR( 20 ) DEFAULT NULL; ALTER TABLE `orders_status_history` ADD `track_num2` VARCHAR( 20 ) DEFAULT NULL;
J'ai juste rajouté, pour que cela fonctionne, : "osc_orders_status_history" au lieu de "orders_status_history"


Je sais que c'est galère de se plonger dedans, qui plus est, dans une contrib inconnue, et que personne n'est là pour faire le taf de l'autre, mais j'ouvre la boutique dans 1 bonne semaine. Si quelqu'un à un peu de temps :roll: ...


Merci d'avance (en espérant avoir ici des réponses)

Kenavo

Mali

Eléphant du PHP | 193 Messages

03 nov. 2006, 12:23

Tu as contrôlé cette requête, en faisant par exemple un truc comme ça:
$requete="insert into " . TABLE_ORDERS_STATUS_HISTORY . " (orders_id, orders_status_id, date_added, customer_notified, comments, track_num, track_num2) values ('" . (int)$oID . "', '" . tep_db_input($status) . "', now(), " . tep_db_input($customer_notified) . "', '" . tep_db_input($comments)  . "', '" . tep_db_input($track_num) . "', '" . tep_db_input($track_num2) . "')";

echo $requete;
Modifié en dernier par Vikchill le 03 nov. 2006, 13:00, modifié 1 fois.

Invité
Invité n'ayant pas de compte PHPfrance

03 nov. 2006, 12:56

Merci d'avoir pris le temps de répondre. J'ai copié ta reqûete dans ma page, mais rien ne s'affiche... :(

Eléphant du PHP | 193 Messages

03 nov. 2006, 13:01

Il y avait une erreur dans mon petit bout de code, je l'ai corrigé, j'espère que tu en avais fait de même de ton côté.

Invité
Invité n'ayant pas de compte PHPfrance

03 nov. 2006, 13:11

euh.... honnêtement non. Je suis, comment dire, une bille en PHP... :oops:

je comprends un petit peu, mais de là à corriger des erreurs ! y'a une marge.

Mali
Invité n'ayant pas de compte PHPfrance

03 nov. 2006, 13:15

Ca me marque directement sur ma page :
insert into osc_orders_status_history (orders_id, orders_status_id, date_added, customer_notified, comments, track_num, track_num2) values ('1', '', now(), ', '', '', '')
...

Mali
Invité n'ayant pas de compte PHPfrance

03 nov. 2006, 14:06

en fait , il manquait dans ta requete juste un petite apostrophe... j'ai corrigé et ca me marque :
insert into osc_orders_status_history (orders_id, orders_status_id, date_added, customer_notified, comments, track_num, track_num2) values ('1', '', now(), ', '', '', '')
ce qui signifie que je communique bien avec ma BDD ? (c'est ca ?)

Comment se fait-il par contre que je n'arrive pas à y inscrire dans ces deux colonnes (track_num et track_num2) ce que je veux ?

merci à toi

Eléphant du PHP | 193 Messages

03 nov. 2006, 14:53

Non, ça ne veut pas dire que ça communique avec ta base, c'est juste la requête qui lui est envoyée.

D'abord, il faut éviter d'envoyer une requête sans vérifier qu'elle s'éxecute sans erreur, je ne suis pas certain que tu le fasse. Visiblement ici c'est fait avec une fonction, et comme tu comprends pas tout ce qui se passe dans le script c'est pas facile pour toi de revenir dessus.

On voit plusieurs problèmes déjà, d'abord tu as soit un quote en trop ou un en moins autour de tep_db_input($customer_notified). , dans le echo on le voit mieux après les now(): tu as une virgule, une seule quote puis une autre virgule. Ensuite, pas mal de variables de ta requête sont vides, on le voit parce qu'il n'y a rien entre les quotes.

En bref, on est pas rendus :s Quand tu insères les infos manuellement dans la base avec phpmyadmin, il te montre la requête après, peux-tu la donner? C'est ce résultat que tu dois avoir avec ton echo $requete.

Mali
Invité n'ayant pas de compte PHPfrance

03 nov. 2006, 17:00

Après avoir renseigner
comments, track_num et track_num2 :

insert into osc_orders_status_history (orders_id, orders_status_id, date_added, customer_notified, comments, track_num, track_num2) values ('2', '', now(), '', '', '', '')

Eléphant du PHP | 193 Messages

03 nov. 2006, 17:17

Pareil:

Code : Tout sélectionner

values ('2', '', now(), '', '', '', '')
Cinq des sept valeurs insérées sont vides. Je parie que si tu copies la requete et que tu l'éxécutes dans phpMyAdmin, il te renvoie une erreur non?

Invité
Invité n'ayant pas de compte PHPfrance

03 nov. 2006, 17:19

MySQL a répondu:Documentation
#1064 - 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 'nsert into osc_orders_status_history (orders_id, orders_status_i
[/code]

Invité
Invité n'ayant pas de compte PHPfrance

03 nov. 2006, 17:21

oups la truffe, j'ai oublié le i à insert
excuses, laisse tombé le message ci dessu.

Par contre avec la bonne ligne SQL, il a enregistré :

Code : Tout sélectionner

Nombre d'enregistrements insérés : 1 Identifiant de l'enregistrement inséré: 27 (traitement: 0.0005 sec.)

Invité
Invité n'ayant pas de compte PHPfrance

03 nov. 2006, 17:36

Et si je tape :

Code : Tout sélectionner

insert into osc_orders_status_history (orders_id, orders_status_id, date_added, customer_notified, comments, track_num, track_num2) values ('2', '', now(), '', '', '[b]3333[/b]', '')
Il me rentre bien 3333 dans la colonne track_num sans aucun souci.

Mali
Invité n'ayant pas de compte PHPfrance

06 nov. 2006, 12:18

euhhh...