Probleme ordre copie champs table

Eléphant du PHP | 60 Messages

17 mai 2012, 18:59

Bonjour,

j'ai un composant Joomla/virtuemart qui est sensé me permettre de dupliquer une configuration de frais de port mais quand je l'utilise, les champs sont bien copiés mais l'ordre n'est pas respecté.
Dans la base, j'ai une table qui gère ça sous cette forme (en résumant un peu):

ID (auto increment) // département concerné // euros au kg // debut fourchette poids // fin fourchette poids
EX :
1 // 01 // 2 // 0 // 1
2 // 01 // 1.9 // 1 // 3
3 // 01 // 1.8 // 3 // 5
4 // 01 // 1.7 // 5 // 9

et après copie, je peux me retrouver avec ça :
EX :
6 // 01 // 1.9 // 1 // 3
5 // 01 // 2 // 0 // 1
7 // 01 // 1.8 // 3 // 5
8 // 01 // 1.7 // 5 // 9

J'essaie de trouver d'ou peut venir le problème et la fonction _task_rateduplicate() qui semble faire la copie donne ça :
	function _task_rateduplicate() {
		$db =& JFactory::getDBO();
		
		$shipping_rate_id = @(int)$_POST['shipping_rate_id'];
		if(!empty($shipping_rate_id)) {
			
			$db->Execute('INSERT INTO #__vm_ss_shipping_rate (shipping_rate_name,carrier_id,zone_id,parcel_starting_price,package_fee,currency_id,vat_id,unit,image,zip_start,zip_end,unit_measure,extra_info,zip_exclude,published,fuel_surcharge)
						SELECT shipping_rate_name,carrier_id,zone_id,parcel_starting_price,package_fee,currency_id,vat_id,unit,image,zip_start,zip_end,unit_measure,extra_info,zip_exclude,published,fuel_surcharge
						  FROM #__vm_ss_shipping_rate
						 WHERE shipping_rate_id='.$shipping_rate_id);
			$new_shipping_rate_id = $db->insertid();
			if(!empty($new_shipping_rate_id)) {
				$db->Execute('INSERT INTO #__vm_ss_shipping_rate_weight ( shipping_rate_id,rate_weight_start,rate_weight_end,rate_value )
							SELECT  '.$new_shipping_rate_id.',rate_weight_start,rate_weight_end,rate_value
							  FROM #__vm_ss_shipping_rate_weight
							 WHERE shipping_rate_id='.$shipping_rate_id);
			}
		}

		return True;
	}
et les infos sur insertid() sont là >> http://help.joomla.org/content/view/716/125/

Je ne vois pas ou est le problème ... quelqu'un aurait-il une idée svp ?
Ps: j'ai 25 paramètres sur 95 départements à faire ... au secours si je ne peux pas dupliquer ...

Par avance merci pour votre aide.

ViPHP
ViPHP | 2287 Messages

17 mai 2012, 22:56

Bonjour,

Le problème vient du fait que tu ne précises aucun tri dans le SELECT qui alimente le processus de copie, du coup ton MySQL fait un peu ce qu'il veut :)

Il faudrait donc ajouter dans les SELECT de tes requêtes un ORDER BY correspondant au tri que tu veux mettre en place (par ID croissant, par euros/kg décroissant, ou autre logique de ton choix).
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Eléphant du PHP | 60 Messages

18 mai 2012, 01:07

Je vais potasser ça, ça devrait être dans mes cordes .. Merci beaucoup !