begin process at 2012 05 30 17:25:54
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Base de données

 > 

MySQL

 > 

Pas mal de requêtes et plantage !!


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Pas mal de requêtes et plantage !!

jeudi 3 avril 2008 à 23:43:21 | Pas mal de requêtes et plantage !!

Camomille

salut à vous,

  sans en être certain, je crois que la " boucle" pourrait m'aider à faire ce que je veux. J'ai toujours négligé cette méconnaissance et finis par m'en mordre les doigts !!

  Je vous explique par l'exemple ce que je veux en caricaturant quelque peu :

Une table contient une centaine de clients avec le montant de leur ardoise au 1er janvier, la somme déjà payée, une majoration mensuelle forfaitaire qui peut varier d'un client à l'autre! J'aimerais tous les mois, exécuter une suite de requêtes qui ajouterait la majoration (personalisée) aux clients qui n'ont pas règlé leur ardoise ( solde > 0 )

voici mes premières portions de code:
==============================================================================================
// TROUVER LES CLIENTS CONCERNES ET LE MONTANT DE LEURS MAJORATIONS
$mois=date("m");
$requete=mysql_db_query($sql_bdd,"select * from payements where maj <$mois AND solde > 0 ORDER BY numero",$db_link) or die(mysql_error());
$retard=mysql_result($requete,0,"retard");
$penalty=mysql_result($requete,0,"penalty");
=====================================================================================================
# mise à jour de la table via un autre fichier:
=====================================================================================================
$mois= date("m");

 $newpenalty= $penalty + $retard;
$suite=mysql_db_query($sql_bdd,"update payements set penalty =$newpenalty, maj=$mois  where Client_num=$num",$db_link) or die(mysql_error()); 
===================================================================================================
"retard" est le montant personalisé de la majoration, "penalty" est les montant actuel des majorations des retard des mois précédents et maj est le mois de la dernière mise à jour de cette majorations.

  J'ai déjà fait des tas d'essais dont je ne suis pas fier !! #^==""--!! ] . Quen pensez-vous, vous qui avez l'habitude de jouer avec ces requêtes ???
  Je ne demande pas de m'écrire mon code mais quelques bons conseils et indications. Je bricole à tatons sans trop savoir quelle est la meilleure orientation à suivre !!

  Chaque client est identifié par son 'Client_num". Comme cette table a été crée par un  "INSERT INTO payements(Client_num,nom,Prenom,ardoise,.................)
SELECT DISTINCT FROM.... " , une numerotation continue a été générée!


  Mille mercis pour votre patience, compassion ou bonne volonté d'aider un débutant ;)
 
 
Bien amicalement.

Camomille

vendredi 4 avril 2008 à 00:33:41 | Re : Pas mal de requêtes et plantage !!

Axe971

Salut,

Je pense que tu peux faire ceci avec une seule requête :

"UPDATE payements SET penalty = penalty + retard WHERE maj <$mois AND solde > 0;"

Bonne chance,
vendredi 4 avril 2008 à 21:19:03 | Re : Pas mal de requêtes et plantage !!

Camomille

Merci pour ta réponse!

   Ton update fonctionnerait sans problème si tous les clients avaient le même "$retard" !!

  J'ai continué mes recherches avec mon manque d'exercice et ma tendance à faire compliqué. Je vous soumets mes portions de script qui fonctionne en calant après une trentaine d'updates. Ne riez pas trop svp !!!

1° pour compter les enregistrements:

<?php

$numero=@$_GET["numero"];

require "connect.php3" ;

$requete=mysql_db_query($sql_bdd,"select * from payements ",$db_link) or die(mysql_error());

$max=mysql_num_rows($requete);

header("Location:newmensuel.php?numero=$numero&max=$max+1");

 

?>


====================================================================================================
2° Sélection des clients concernés (newmensuel.php)  :

<?

$numero=@$_GET["numero"];

$max=@$_GET["max"];

require("connect.php3");

$next=($numero + 1);

$mois=date("m");


if ($numero < $max)

{

$requete=mysql_db_query($sql_bdd,"select * from payements where numero =$numero",$db_link) or die(mysql_error());

$solde=mysql_result($requete,0,"solde");

$retard=mysql_result($requete,0,"retard");

$penalty=mysql_result($requete,0,"penalty");

$maj=mysql_result($requete,0,"maj");

$newpenalty=$penalty + $retard;

if ($solde > "0" AND $maj < "$mois")

header("Location:mensuel_valide.php?numero=$numero&newpenalty=$newpenalty&maj=$mois&max=$max");

else

header("Location:newmensuel.php?numero=$next&max=$max ");

}

else

header("Location:apercu_forfaits.php ");

?>

===================================================================================================

3° mon "mensuel_valide.php" :

<?php

$numero=@$_GET["numero"];

$max=@$_GET["max"];

$newpenalty=@$_GET["newpenalty"];

$maj=@$_GET["maj"];

$next=($numero + 1);

require "connect.php3" ;

 

$request=mysql_db_query($sql_bdd,"update payements set penalty =$newpenalty, maj=$maj where numero=$numero",$db_link) or die(mysql_error());

header("Location:newmensuel.php?numero=$next&max=$max ");

?>

   Que pensez-vous de mon "bricolage" ? Ca marche sur une trentaine d'enregistrements sans problème mais pas sur les 98 enregistrements actuellements présents!

J'aimerais vraiment apprendre à coder plus proprement. A force de tester dans son coin sans vrai prof, on continue à faire les mêmes erreurs. Les livres ne remplacent jamais un bon prof non plus. Si vous pouvez me conseiller une bonne méthode d'apprentissage, je suis preneur!!

Merci pour vos bons conseils .


Bien amicalement.

Camomille
vendredi 4 avril 2008 à 21:21:19 | Re : Pas mal de requêtes et plantage !!

malalam

Administrateur CodeS-SourceS
Hello,

je n'interviens pas pour grand chose : parce que j'approuve totalement la réponse d'Axe971. Et cela sera sûrement la solution à tes problèmes. Tu peux résuler en 1 requête ce que tu fais en X requêtes.
Non, mon intervention n'a qu'un seul but : te dire merci, Camomille. Parce qu'en ces temps troubles, il est très agréable de trouver sur PHPCS un message clair, écrit en BON français, et dégageant une bonne humeur reposante.  Voilà tout.
Merci aussi à Axe, hein...dont la réponse est polie, directe, et apporte la solution. Mais avouons qu'il était facile de répondre cor'rectement à une question posée de cette manière :-) Ceci dit : merci aussi Axe :-)
Voilà c'est tout, il s'agissait du message d'un admin fatigué... ;-)
vendredi 4 avril 2008 à 21:23:52 | Re : Pas mal de requêtes et plantage !!

malalam

Administrateur CodeS-SourceS
Ah, tu as répondu, Camomille, mais tu n'as pas vraiment tenu compte de la réponse : tu continues à faire un SELECT quand ton UPDATE pourrait contenir ses conditions (les conditions du SELECT). A mon sens, tes header() sont en trop : fais ton update directement. OU alors, je n'ai pas compris la finalité du bin's.
samedi 5 avril 2008 à 00:01:48 | Re : Pas mal de requêtes et plantage !!

Camomille

Vous êtes formidables!!
  Je viens polluer votre forum avec des lignes de code inutiles et au lieu de me répondre d'aller apprendre à coder, c'est un flot de gentillesse et d'amabilité que vous m'envoyez! Croyez bien que cela m'a touché et fait grand plaisir!!
 Je me sens de mieux en mieux "chez vous" et je tâcherai de venir plus souvent, sans attendre qu'un problème me pousse à demander de l'aide !!!

  Voyant votre insistance, j'ai oublié mes premières intuitions pour appliquer la réponse de Axe. Incroyable ce qu'on peut faire en une ligne ! J'essayerai de comprendre cette logique et de l'appliquer aux autres scripts tortueux que j'ai  déjà pu pondre!

  Rien que pour se faire plaisir, voici ce que sont devenues ma trentaine de lignes de code:

<?php
require "connect.php3" ;

$mois=date("m");

$request=mysql_db_query($sql_bdd,"UPDATE payements SET maj=$mois,penalty = penalty + retard WHERE maj <$mois AND solde > 0",$db_link) or die(mysql_error());

header("Location:apercu_forfaits.php");

?>

  Merci à toi l'Admin pour ton amabilité et à toi, Axe pour m'avoir sérieusement ouvert les yeux  ;)

Bien amicalement.

Camomille
samedi 5 avril 2008 à 01:27:46 | Re : Pas mal de requêtes et plantage !!

Axe971

Merci merci, de tant de remerciements. C'est toujours un plaisir d'aider. Et de plus quand c'est clair effectivement c'est plus facile

 

Allez bon dév messieurs



Cette discussion est classée dans : mysql, client, mois, retard, penalty


Répondre à ce message

Sujets en rapport avec ce message

UPDATE mystérieux [ par Hicks ] Salut les gars , c surement une question bateau que vous avez l'habitude de voir mais voila : je fais un update sur une base mysql en envoyant les rés ptit prob requete sql pour resltut num [ par destiny ] lo allbon en grosn je voudrais recup toute les enregistrements dont le mois qui est dans la date et 03 par exdans mon enregistrement la date correspon Sécurité sous PHP/MYSQL/APACHE [ par Onkgusd ] Salut à tous,je developpe en ce moment une appli de vente en ligne (de vinyl), je commence à m'inquieter niveau sécurité....en fait j'ai deux partie : PHP5 et MySQL 4.1.7 [ par TMT ] J'ai installé PHP5 et MySQL sur mon Windows XP avec IIS. J'ai bien activé le module php_mysql dans le fichier php.ini Là mon problème est qu-à chaque souhaiter les anniversaires [ par jpdeion ] Bonjour,voici un code (que j'ai trouvé) pour souhaiter les anniversaires sur un site en fonction d'une base MySQL.J'ai une liste de 1200 personnes dan erreur lors de la connexion a mysql [ par benstar ] salut les gars. jusqu'ici j'utilisais easyphp coe package de developpment et tests. coe vs le savez c'est un logiciel pr effectuer les tests lors du recup de variables (dans liste deroulante) sur la meme page [ par atomik29 ] Bonjour a tousVoila mon problemeJ'ai 2 deux listes deroulante dans une page ( une avec les noms des clients et l'autre avec les sites correspondant au PHP-MYSQL => Tri des entrée selon le mois ou l'année [ par karaemrah ] Bonjour,J'ai une table sous Mysql qui est alimenté en données de vente d'un produit sur ma boutique en PHP.la table s'appelle Vente:Elle a ces champs: developpement d'une interface [ par redlotfi ] Bonjour à tous et à toutes, une petite intro :)Voila je suis étudiante, actuellement j'effectue un stage de fin d'études conceranant le développement; requetes multitables liées par clés etrangeres en mysql [ par tricour ] Bonjour, je suis en train de mettre en ligne une base de données clients avec 11 tables en Mysql.J'ai des contraintes pour certaines tables. 1 client


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 5,023 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales