IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Procédural MySQL Discussion :

problème de création : priorité / mysql


Sujet :

SQL Procédural MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 27
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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'");
     
    		}
     
    	}

  2. #2
    Membre émérite Avatar de Hervé Saladin
    Homme Profil pro
    Ingénieur d'études en développement et déploiement d'applications
    Inscrit en
    Décembre 2004
    Messages
    647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur d'études en développement et déploiement d'applications
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2004
    Messages : 647
    Par défaut
    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.

  3. #3
    Membre émérite Avatar de Yobs
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    675
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2004
    Messages : 675
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query = "UPDATE cmd_ent SET priorite=priorite+1 WHERE priorite < $priorite";

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 27
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    $query = "UPDATE cmd_ent SET priorite=priorite+1 WHERE priorite < $priorite";
    ça uniformise l'ordre de priorite

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 27
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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."'");
     
    }

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 27
    Par défaut

Discussions similaires

  1. Problème de création de table MySQL : ERROR 1118
    Par Mayhem555 dans le forum Requêtes
    Réponses: 3
    Dernier message: 23/09/2009, 12h23
  2. Réponses: 2
    Dernier message: 17/02/2009, 21h38
  3. [Mysql]Problème de création de vue
    Par cwamgis dans le forum Free
    Réponses: 1
    Dernier message: 18/09/2007, 00h56
  4. Réponses: 10
    Dernier message: 09/06/2007, 21h11
  5. Problème de création de table sous MySql
    Par ducamba dans le forum Requêtes
    Réponses: 2
    Dernier message: 21/06/2003, 09h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo