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

PHP & Base de données Discussion :

Amélioration requete sql [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 391
    Points : 84
    Points
    84
    Par défaut Amélioration requete sql
    Bonjour à tous,

    Je me pose une question pour améliorer ma requete car elle est assez longue.

    Sur ma première page, je coche un peu près 800 lignes en checkbox et je les récupére sur ma page où je réalise mes requetes.

    Par contre sur ma page requete, je fais un update, puis un insert avec un select.

    Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    if(isset($_POST['preleve']))
    	{ 		 
    		foreach($_POST['preleve'] as $num_preleve)
    		{
    			$req_edit_paiements = 'UPDATE paiements SET etat_paiements="1" WHERE id_paiements="'.$num_preleve.'"';
    			$res_edit_paiements = mysql_query($req_edit_paiements);
     
    			$req_creer_bordereaux = 'INSERT INTO bordereaux (numero_bordereaux, date_debut_bordereaux, date_fin_bordereaux, date_bordereaux, date_paiement_bordereaux, montant_paiement_bordereaux, type_bordereaux, id_paiements_bordereaux, id_facture_bordereaux, id_adh_bordereaux) SELECT "'.$numero1.'", STR_TO_DATE("'.$date_debut_bordereaux.'","%d/%m/%Y"), STR_TO_DATE("'.$date_fin_bordereaux.'","%d/%m/%Y"), "'.$date_auj.'", date_paiements, montant_paiements, "'.$type_paiements.'", "'.$num_preleve.'", id_facture_paiements, id_adherent_paiements FROM paiements WHERE id_paiements="'.$num_preleve.'"';
     
    			$res_creer_bordereaux = mysql_query($req_creer_bordereaux);
    		}
    	}
    Est ce que je peux améliorer cela ?

    Merci d'avance

    Cordialement

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Avec une clause IN :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $WhereIn = ' WHERE id_paiement IN (' . implode(", ", array_map('intval', $_POST['preleve'])) . ')';
     
    $req_edit_paiements = 'UPDATE paiements SET etat_paiements = 1' . $WhereIn;
     
    $req_creer_bordereaux = 'INSERT INTO bordereaux (numero_bordereaux, date_debut_bordereaux, date_fin_bordereaux, date_bordereaux, date_paiement_bordereaux, montant_paiement_bordereaux, type_bordereaux, id_paiements_bordereaux, id_facture_bordereaux, id_adh_bordereaux) SELECT "'.$numero1.'", STR_TO_DATE("'.$date_debut_bordereaux.'","%d/%m/%Y"), STR_TO_DATE("'.$date_fin_bordereaux.'","%d/%m/%Y"), "'.$date_auj.'", date_paiements, montant_paiements, "'.$type_paiements.'", "'.$num_preleve.'", id_facture_paiements, id_adherent_paiements FROM paiements'  . $WhereIn;
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 391
    Points : 84
    Points
    84
    Par défaut
    Je ne comprends pas trop et donc je n'arrive pas à le faire fonctionner

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Plutôt que d'executer une requête pour chacune des valeurs, j'ai mis toutes les valeurs dans une seule requête avec une clause IN.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 391
    Points : 84
    Points
    84
    Par défaut
    Mais quand je fais un copier coller bete et mechant, il ne se passe rien

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu as bien mis les mysql_query qui vont avec ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 391
    Points : 84
    Points
    84
    Par défaut
    Voici mon code :
    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
    if(isset($_POST['preleve']))
    	{ 		 
    		foreach($_POST['preleve'] as $num_preleve)
    		{
     
    			$WhereIn = ' WHERE id_paiement IN (' . implode(", ", array_map('intval', $_POST['preleve'])) . ')';
     
    			$req_edit_paiements = 'UPDATE paiements SET etat_paiements = 1' . $WhereIn;
    			$res_edit_paiements = mysql_query($req_edit_paiements);
     
    			$req_creer_bordereaux = 'INSERT INTO bordereaux (numero_bordereaux, date_debut_bordereaux, date_fin_bordereaux, date_bordereaux, date_paiement_bordereaux, montant_paiement_bordereaux, type_bordereaux, id_paiements_bordereaux, id_facture_bordereaux, id_adh_bordereaux) SELECT "'.$numero1.'", STR_TO_DATE("'.$date_debut_bordereaux.'","%d/%m/%Y"), STR_TO_DATE("'.$date_fin_bordereaux.'","%d/%m/%Y"), "'.$date_auj.'", date_paiements, montant_paiements, "'.$type_paiements.'", "'.$num_preleve.'", id_facture_paiements, id_adherent_paiements FROM paiements'  . $WhereIn;
    			$res_creer_bordereaux = mysql_query($req_creer_bordereaux);
     
    		}
    	}

  8. #8
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 391
    Points : 84
    Points
    84
    Par défaut
    C'est bon en reflechissant ca marche mieux

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème Requete SQL et QuickReport
    Par arnaud_verlaine dans le forum C++Builder
    Réponses: 7
    Dernier message: 07/01/2004, 09h31
  2. Prob de requete sql et variable
    Par agent-zaizai dans le forum ASP
    Réponses: 11
    Dernier message: 21/10/2003, 16h54
  3. requete sql
    Par autumn319 dans le forum ASP
    Réponses: 22
    Dernier message: 10/09/2003, 16h46
  4. Paramètre requete SQL (ADOQuery)
    Par GaL dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/07/2002, 11h24
  5. Resultat requete SQL
    Par PierDIDI dans le forum Bases de données
    Réponses: 2
    Dernier message: 23/07/2002, 13h43

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