Page 1 sur 1

inséré un id dans une table

Posté : 06 avr. 2009, 21:35
par badibad
Bonjour tout le monde

Je chercher à inséré un id et une date dans une table
que jai créé (orders_invoice) dans ma BDD.

Code
CREATE TABLE `orders_invoice` (
`orders_invoice_id` int(11) NOT NULL auto_increment,
`orders_id` int(11) default NULL,
`date_invoice` datetime default '0000-00-00 00:00:00',
PRIMARY KEY (`orders_invoice_id`),
KEY `idx_orders_invoice_orders_id` (`orders_id`)
) ENGINE=MyISAM AUTO_INCREMENT=6002 DEFAULT CHARSET=latin1 AUTO_INCREMENT=6002;


cette est jointe avec la table orders

Code : Tout sélectionner

CREATE TABLE `orders` ( `orders_id` int(11) NOT NULL auto_increment, `customers_id` int(11) NOT NULL default '0', `customers_name` varchar(64) NOT NULL default '', `customers_company` varchar(32) default NULL, `customers_street_address` varchar(64) NOT NULL default '', `customers_suburb` varchar(32) default NULL, `customers_city` varchar(32) NOT NULL default '', `customers_postcode` varchar(10) NOT NULL default '', `customers_state` varchar(32) default NULL, `customers_country` varchar(32) NOT NULL default '', `customers_telephone` varchar(32) NOT NULL default '', `customers_email_address` varchar(96) NOT NULL default '', `customers_address_format_id` int(5) NOT NULL default '0', `delivery_name` varchar(64) NOT NULL default '', `delivery_company` varchar(32) default NULL, `delivery_street_address` varchar(64) NOT NULL default '', `delivery_suburb` varchar(32) default NULL, `delivery_city` varchar(32) NOT NULL default '', `delivery_postcode` varchar(10) NOT NULL default '', `delivery_state` varchar(32) default NULL, `delivery_country` varchar(32) NOT NULL default '', `delivery_address_format_id` int(5) NOT NULL default '0', `billing_name` varchar(64) NOT NULL default '', `billing_company` varchar(32) default NULL, `billing_tva_intracom` varchar(32) default NULL, `billing_street_address` varchar(64) NOT NULL default '', `billing_suburb` varchar(32) default NULL, `billing_city` varchar(32) NOT NULL default '', `billing_postcode` varchar(10) NOT NULL default '', `billing_state` varchar(32) default NULL, `billing_country` varchar(32) NOT NULL default '', `billing_address_format_id` int(5) NOT NULL default '0', `payment_method` varchar(255) NOT NULL default '', `payment_info` text, `cc_type` varchar(20) default NULL, `cc_owner` varchar(64) default NULL, `cc_number` varchar(32) default NULL, `cc_expires` varchar(4) default NULL, `last_modified` datetime default NULL, `date_purchased` datetime default NULL, `orders_status` int(5) NOT NULL default '0', `orders_date_finished` datetime default NULL, `currency` char(3) default NULL, `currency_value` decimal(14,6) default NULL, `orders_numero_facture` int(11) NOT NULL default '0', PRIMARY KEY (`orders_id`) ) ENGINE=MyISAM AUTO_INCREMENT=7013 DEFAULT CHARSET=latin1 AUTO_INCREMENT=7013 ; -- -- Contenu de la table `orders` --

je doit créer une instruction pour recupéré l'id de orders_id puis l'inséré dans la table order_invoice
avec un nouvelle id et la date du début de l'instruction (timestamp).

Mais pour le reste je ne voix pas comment procédé.

j'ai essayé

Code : Tout sélectionner

$orders_statuses = array(); $orders_status_array = array(); $orders_status_query = tep_db_query("select orders_status_id, orders_status_name from " . TABLE_ORDERS_STATUS . " where language_id = '" . (int)$languages_id . "'"); while ($orders_status = tep_db_fetch_array($orders_status_query)) { $orders_statuses[] = array('id' => $orders_status['orders_status_id'], 'text' => $orders_status['orders_status_name']); $orders_status_array[$orders_status['orders_status_id']] = $orders_status['orders_status_name']; $orders_invoice = tep_db_query("select orders_invoice_id, orders_id, date_invoice from " . TABLE_ORDERS_INVOICE . " where orders_id = '" . (int)$oID . "'"); $orders_invoice = new order_invoice($oID);
mais ca ne marche pas.
Merci à vous.

Posté : 07 avr. 2009, 01:21
par Nours312
heu .... j'ai pâs pigé le but de ton second code, alors, je vais peut-etre dire des Conne*** :

SELECT order_id FROM `orders` WHERE ....

while ($id = mysql_fetch_row($req)){

mysql_query('INSERT INTO `orders_invoice` VALUES ("", "'.$id.'", NOW())' );

}

NON ... ?

Expliques toi un peu mieux alors STP ... @+

merci

Posté : 07 avr. 2009, 10:01
par badibad
oui je te remercie en effet ça doit être une boucle comment ça, j'avais oublier (je suis blond des fois).

Mais vu que j'utilise oscommerce j'ai du le modifier.

Voici le code

Code : Tout sélectionner

$order_query = tep_db_query("select customers_name, customers_company, customers_street_address, customers_suburb, customers_city, customers_postcode, customers_state, customers_country, customers_telephone, customers_email_address, customers_address_format_id, delivery_name, delivery_company, delivery_street_address, delivery_suburb, delivery_city, delivery_postcode, delivery_state, delivery_country, delivery_address_format_id, billing_name, billing_company, billing_street_address, billing_suburb, billing_city, billing_postcode, billing_state, billing_country, billing_address_format_id, payment_method, cc_type, cc_owner, cc_number, cc_expires, currency, currency_value, date_purchased, orders_status, last_modified, orders_numero_facture from " . TABLE_ORDERS . " where orders_id = '" . (int)$order_id . "'"); $order = tep_db_fetch_array($order_query); while ($id = tep_db_fetch_array($req)){ tep_db_query('INSERT INTO `orders_invoice` VALUES ("", "'.$id.'", NOW())' ); }
Le coté possitif c'est que je n'est pas d'erreur mais le négatif c'est que je n'est toujours aucun enregistrement dans ma table.

Posté : 07 avr. 2009, 10:30
par Nours312
Salut,

1. à quoi sert la seconde ligne ?

2. dans la boucle while, $id est une ligne du tableau, en l'occurrence, une table
while(...) '
/* print_r($id) donnerais :

array(
customers_name => value
[0] => la meme value (fetch_array() )
customers_compagny => ..
...
...
)

*/

// donc, il est normal que la seconde requete ne fonctionne pas !!

=> dans le seconde requete à la place de $id, mets $id['nom_de_la_colonne']

/* ça devrait mieux Fonctionner !! */

@+

Posté : 07 avr. 2009, 11:51
par badibad
merci de ton aide

j'ai essayé ce code mais c'est pareil.

Code : Tout sélectionner

$order_query = tep_db_query("select customers_name, customers_company, customers_street_address, customers_suburb, customers_city, customers_postcode, customers_state, customers_country, customers_telephone, customers_email_address, customers_address_format_id, delivery_name, delivery_company, delivery_street_address, delivery_suburb, delivery_city, delivery_postcode, delivery_state, delivery_country, delivery_address_format_id, billing_name, billing_company, billing_street_address, billing_suburb, billing_city, billing_postcode, billing_state, billing_country, billing_address_format_id, payment_method, cc_type, cc_owner, cc_number, cc_expires, currency, currency_value, date_purchased, orders_status, last_modified, orders_numero_facture from " . TABLE_ORDERS . " where orders_id = '" . (int)$order_id . "'"); $order = tep_db_fetch_array($order_query); while ( $id['$order_id'] = tep_db_num_rows($req)){ tep_db_query('INSERT INTO `orders_invoice` VALUES ("", "'.$id.'", NOW())' ); }
Je dois avouer que je n'ai pas bien compris ce que tu m'as dit. Je suis désolé je suis nul en programmation.

Merci de ton aide, c'est gentil (surtout pour un cas désespéré comme moi).

Posté : 07 avr. 2009, 13:34
par Nours312
vi !... tu l'a mis à l'envers !! ;)

$order_query = tep_db_query("select order_id from " . TABLE_ORDERS . " where orders_id = '" . (int)$order_id . "'");
 //     $order = tep_db_fetch_array($order_query);

while ( $id  = tep_db_fetch_array($req)){ // c'est fetch array qui va monter le tableau
     tep_db_query('INSERT INTO `orders_invoice` VALUES ("", "'.$id['order_id'].'", NOW())' );

} 


... heu par contre, pourquoi utilises tu $order_id dans la clause where ??? si tu l'a déja, pourquoi le récupérer à nouveau ?

r'ebonjour

Posté : 07 avr. 2009, 14:02
par badibad
REbonjour et merci

Je l'utilise dans la clause where pour recupéré le numéro (id) de la commande enfin de la reinséré dans la table orders_invoice.

par contre mainteant j'ai une erreur. Il me dit que la colonne orders_id n'existe pas ???

Code : Tout sélectionner

1054 - Unknown column 'order_id' in 'field list' select order_id from orders where orders_id = '0' [TEP STOP]

Merci à toi

Posté : 07 avr. 2009, 14:13
par Nours312
vi excuses moi, erreur de copier coller ... il manque un s au nom du champs ... non ?

pfffffffff je suis nul

Posté : 07 avr. 2009, 14:28
par badibad
pfffffffff je suis nul j'aurai du la voir cette erreur

Bon c'est réglé plus d'erreur mais toujours rien dans ma base

merci


C'est bon j'ai réglé le problème par une pirouet.
j'ai suprimer la boucle et j'ai installer le code à un endroit ou id été déjà récupéré

merci mille fois encore.