Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/04/2006, 18h04   #1
Invité régulier
 
Inscription : septembre 2003
Messages : 26
Détails du profil
Informations forums :
Inscription : septembre 2003
Messages : 26
Points : 7
Points : 7
Par défaut problème de création : priorité / mysql

bonjour

voila, j'ai besoin de réaliser une gestion de priorité sur des bon de commandes pour une journée

je m'explique : j'ai une page où je remplie mes champs avec ce qu'il faut
j'affiche un planning livreur, où je peux sélectionner le livreur, la date etc... mais aussi un ordre de livraison (jusqua 15)

le soucis, c'est que je voudrais, si par exemple je sélectionne l'ordre numéro 2, que la mise a jour du planning jour se fasse automatiquement

pour schématiser :

$planning_du_jour[1] = Client 10;
$planning_du_jour[2] = Client 125;
$planning_du_jour[3] = Client 57;
etc.

et j'aimerais mettre a jour si un nouveau client ayant la meme priorité s'insère

je gère par mysql bien sur et j'ai commencé a faire ceci :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// Pretest pour l'update
	$sql_test = "SELECT priorite FROM cmd_ent WHERE date_liv = '".$date_liv."' AND priorite = '".$priorite."' AND statut_livraison = 'non livrée'";
 
	$test_priorite = $db -> fetch_assoc( $db -> query($sql_test) );
 
	// On fait le mouvement up/down
	if(isset($test_priorite)){
 
		// Si la priorité est déjà présente
		if($test_priorite = $priorite){
 
			$db -> query("UPDATE cmd_ent SET priorite = '".($priorite+1)."' WHERE date_liv = '".$date_liv."' AND priorite = '".$priorite."' AND statut_livraison = 'non livrée'");
 
		}
 
	}
Nowhere est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/04/2006, 18h20   #2
Membre chevronné
 
Avatar de Hervé Saladin
 
Développeur Web
Inscription : décembre 2004
Messages : 636
Détails du profil
Informations personnelles :
Âge : 30

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2004
Messages : 636
Points : 689
Points : 689
salut,
à mon avis tu ne devrais pas stocker l'ordre des livraisons dans ta base.
Tu devrais stocker uniquement les données relatives aux clients, à leurs commandes, éventuellement au caractère prioritaire des livraisons.
Mais l'ordre lui-même devrait être calculé à la volée au moment ou l'utilisateur le demande par des algorithmes que tu dois écrire selon la logique qui déterminera l'ordre de livraison voulu.
__________________
Ne cliquez pas sur ce lien
Hervé Saladin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/04/2006, 18h58   #3
Membre émérite
 
Avatar de Yobs
 
Inscription : avril 2004
Messages : 675
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : avril 2004
Messages : 675
Points : 808
Points : 808
Envoyer un message via MSN à Yobs
Code :
$query = "UPDATE cmd_ent SET priorite=priorite+1 WHERE priorite < $priorite";
__________________
Chaque problème a une solution, mais il est plus facile de répondre si le problème est correctement renseignés
Yobs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2006, 07h23   #4
Invité régulier
 
Inscription : septembre 2003
Messages : 26
Détails du profil
Informations forums :
Inscription : septembre 2003
Messages : 26
Points : 7
Points : 7
Citation:
Envoyé par Hervé Saladin
salut,
à mon avis tu ne devrais pas stocker l'ordre des livraisons dans ta base.
Tu devrais stocker uniquement les données relatives aux clients, à leurs commandes, éventuellement au caractère prioritaire des livraisons.
Mais l'ordre lui-même devrait être calculé à la volée au moment ou l'utilisateur le demande par des algorithmes que tu dois écrire selon la logique qui déterminera l'ordre de livraison voulu.
je suis obligé de procéder ainsi, c'est le besoin qu'on rechercher, je ne peux faire autrement que de le définir car l'utilisateur affecte un ordre dès la saisie

Citation:
Envoyé par Yobs
Code :
$query = "UPDATE cmd_ent SET priorite=priorite+1 WHERE priorite < $priorite";
ça uniformise l'ordre de priorite
Nowhere est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2006, 13h34   #5
Invité régulier
 
Inscription : septembre 2003
Messages : 26
Détails du profil
Informations forums :
Inscription : septembre 2003
Messages : 26
Points : 7
Points : 7
j'ai ce bout de script qui marche seulement quand il s'agit de faire remonter le client, mais pour le descendre, ça met le bordel dans le classement

(sur une table test)

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
 
$mode = $_GET['mode'];
$nom = $_POST['nom'];
$priorite = $_POST['priorite'];
 
IF($mode=='update'){
 
	$sql_test = "SELECT ordre FROM ordre WHERE id = '".$nom."'";
 
	$query_test = mysql_query($sql_test);
	$boucle_i = mysql_fetch_array($query_test);
 
	$sql = "SELECT * FROM ordre WHERE ordre < '".$boucle_i['ordre']."'";
 
	$qr =  mysql_query($sql);
 
	while($test = mysql_fetch_array($qr) ){
 
		IF( ($test['ordre'] > $priorite) && ($priorite == 1) ){
 
			$test['ordre'] += 1;
 
		}
		elseif( $test['ordre'] < $priorite ){
 
			$test['ordre'] -= 1;
 
		}
		elseif($test['ordre'] == 1){
 
			$test['ordre'] += 1;
		}
		else{
 
			$test['ordre'] = $priorite;
		}
 
 
		mysql_query("UPDATE ordre SET ordre = '".$test['ordre']."' WHERE id = '".$test['id']."'");
		echo 'Client id '.$test['id'].' en position '.$test['ordre'].'<br />'."\n";
 
	}
 
	mysql_query("UPDATE ordre SET ordre = '".$_POST['priorite']."' WHERE id = '".$nom."'");
 
}
Nowhere est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2006, 13h09   #6
Invité régulier
 
Inscription : septembre 2003
Messages : 26
Détails du profil
Informations forums :
Inscription : septembre 2003
Messages : 26
Points : 7
Points : 7
Nowhere est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h57.


 
 
 
 
Partenaires

Hébergement Web