PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#51 24-06-2012 12:42:43

maxredphenix
Membre
Inscription : 06-11-2010
Messages : 58

Re : Questions et problèmes sur MYSQL

Bonjour,

Je viens de regarder ton post, tu fais des tutos? parce que tu explique super bien.

Pour la protection du site, je sais pas si j'aurai besoin au final d'avoir un si gros cryptage, c'est juste pour apprendre vu que je débute. Comme vous êtes des experts tous les 2, c'est super parce que j'apprends énormément de choses avec vous (je connaissais même pas le sha1, ni les regex à l'origine). Je vais faire un tout sur le manuel mysql ça aa l'air sympa.

D'ailleurs pour les regex j'ai décidé de créer un php avec tous mes expressions dedans et je l'appel dans chaque fichier de traitement via un require_once
http://dl.dropbox.com/u/31901874/Copie% … /Regex.php

<?php
// ############ Test avec une date format jj-mm-aaaa #################
if (isset($_POST['date_appel'])){if (check_date($_POST['date_appel'])!=0){$date_appel=ConversionDate($_POST['date_appel'], '-');}else{$date_appel="";}}else{$date_appel="";}

// ############ Test avec une date format jj-mm-aaaa hh:mm:ss #################
if (isset($_POST['date_appel'])){if (check_datetime($_POST['date_appel'])!=0){$date_appel=ConversionDate($_POST['date_appel'], '/');}else{$date_appel="";}}else{$date_appel="";}

// ############ Test mail ############################################
if (isset($_POST['mail'])){if (check_mail($_POST['mail'])!=0){$mail=$_POST['mail'];}else{echo 'Le champ ' . $_POST['mail'] . ' n\'est pas dans un format valide, il doit contenir des caractères non autorisés, recommencez !';}}else{echo 'Le champ ' . $_POST['mail'] . ' n\'est pas dans un format valide, il doit contenir des caractères non autorisés, recommencez !';}

// ########### Test Champs texte ####################################
if (isset($_POST['commentaires'])){if (check_texte($_POST['commentaires'])!=0){$commentaires=$_POST['commentaires'];}else{echo 'Le champ ' . $_POST['commentaires'] . ' n\'est pas dans un format valide, il doit contenir des caractères non autorisés, recommencez !';}}else{echo 'Le champ ' . $_POST['commentaires'] . ' n\'est pas dans un format valide, il doit contenir des caractères non autorisés, recommencez !';}
?>

Merci pour toutes les informations que tu me donnes

jérémy

Hors ligne

#52 24-06-2012 13:39:12

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : Questions et problèmes sur MYSQL

Bonjour,

Merci pour le compliment. Pour tout te dire, la réponse est non, mais je suis en train de considérer/reconsidérer la chose. Pour information, et même si je considère que ce n'est pas une référence, j'ai déjà eu un agrément education nationale pour faire de la formation en informatique il y a déjà de ça de nombreuses années.

Pour ton include, je t'encourage dans cette démarche, bien qu'une classe objet pour gérer tout cela serait encore mieux.

Bon dimanche.

Jc.


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#53 24-06-2012 13:59:23

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Questions et problèmes sur MYSQL

Saluton,
C'est pour moi l'occasion de citer l'adage paradoxal de Dédé le toulousard, mon maître à penser en informatique, et néanmoins ami:

Dédé le toulousard a écrit :

Si tu ne sais pas, enseigne

Cela peut se décliner de différentes manières, et dans tous les domaines. L'idée implicite est qu'on ne sait vraiment que lorsque l'on peut expliquer.
Dualité bien connue entre le savoir-faire et le faire-savoir.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#54 24-06-2012 15:41:46

maxredphenix
Membre
Inscription : 06-11-2010
Messages : 58

Re : Questions et problèmes sur MYSQL

Je pense que tu pourrais faire de très bon tutos et en plus il y a largement de quoi faire. La preuve: j'ai recherché sur le net les regex, tu en trouves pas mal mais c'est juste des explications rapides ou alors ils traitent d'un seul type d'expression régulière, il y a rien qui dit: voila comment faire une classe vous permettant de vérifier entièrement les principaux types de champs: texte, date, heure, numéro, email. Il en est de même pour énormément de sujet , c'est pas pour rien que les forums sont remplis de gens comme moi smile

Tu as fait quoi comme formation? moi je voulais faire une licence info mais j'ai arrêté après le DUT et maintenant je le regrette parce que cela m'aurait bien servi, surtout que les livres (certes bien fait) ne suffisent pas, ils ne remplacent pas un prof.

Sinon, je connais Dédé le toulousard mais j'adore ça citation, c'est sûr que c'est paradoxal mais génial.

Je vais continuer dans mon require_once vu que tu me le confirmes et tester le bon fonctionnement de ces dernières (à part les dates ou je suis sûr que c'est pas ok mais ????)

Bon dimanche à vous aussi.

maxredphenix

Hors ligne

#55 24-06-2012 17:50:45

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : Questions et problèmes sur MYSQL

Bonjour,

Encore un vaste sujet smile
Considère moi comme un marginal, avec un parcours très atypique. Le problème avec la formation, c'est que savoir faire une synthèse ne s'apprends pas. On sait naturellement la faire ou pas. On peut s'entrainer à la développer à l'affuter jour après jour mais c'est un vaste débat qui a fait l'objet d'une thèse relativement récente que j'ai eu l'occasion de lire et fort interessante de surcroit (ne me demandez pas de lien je ne l'ai plus, mais si je trouve je ferais passer promis).
Le but de tout parcours scolaire, est il me semble, de développer cette capacité à travers à la reflexion et les exercices. On apprends le cours, et donc les outils nécessaires pour résoudre des problèmes (qui se distinguent en problèmes d'application et en problèmes d'analyse principalement) que l'on a jamais abordés. A nous ensuite de faire le reste du chemin. Face à ce genre d'exercices il y a deux sortes d'élèves à mon sens. D'abord les moins nombreux, ceux qui sont capables de trouver et synthétiser la solution de ce problème seuls, et les plus nombreux, représentés par ceux qui n'y arrivent pas et qui sauront le faire qu'une fois que quelqu'un leur aura enseigné l'analyse spécifique au problème donné nécessaire à sa résolution.
La plupart fonctionnent comme cette deuxième catégorie et c'est d'ailleurs pour cette raison que les étudiants fraichement sortis de l'université ont du mal à trouver du travail: Parcequ'ils ne connaissent pas les problèmes spécifiques de l'entreprise, ils n'ont jamais été confrontés à leur résolution, et comme on ne leur a jamais enseigné, ne savent pas les résoudre (ou statistiquement réputés comme tels), ou ne peuvent offrir des performances de résolution acceptables pour les besoins de production d'entreprise. Cette catégorie de personnes ne deviendra performante en d'autre termes qu'au fil du temps grâce à l'expérience, même si l'expérience est profitable à tout le monde et profite différemment selon les personnes. Normalement sur le marché du travail, le titre, la qualification qui représente le mieux la première catégorie minoritaire de personnes citée précedemment est les ingénieurs, car ils sont censés avoir démontré cette capacité pour avoir leur diplôme.

Normalement donc, si tu sais construire une classe objet, et que tu manipules les regex aisément, pourquoi faire un tuto sur comment faire des regex dans une classe? C'est un peu la question que je me pose, surtout qu'il peut y avoir plusieurs façons de le faire, selon les besoins contextuels applicatifs, qui peuvent se valoir aisément.
Le fonctionnement de forums comme celui-ci va dans mon sens question vision que j'ai de la formation: on ne donne pas de solutions/scripts tout faits, à vous de les trouver, mais on va vous aider pour y arriver. On ne fera jamais donc la synthèse de votre problème à votre place, et pour les mêmes raisons citées précedemment, difficile de trouver un site qui le fasse même si j'ai parfois dépassé cette limite avec quelques uns sur ce forum, mais je pense, à chaque fois que je l'ai fait, c'était parce que cela valait la peine que je le fasse (très subjectif et inégalitaire je l'admets bien volontier mais bon).

Les commentaires sont comme d'habitude, très appréciés wink

Cordialement,

Jc.

Dernière modification par Jc (24-06-2012 18:40:06)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#56 25-06-2012 06:24:18

maxredphenix
Membre
Inscription : 06-11-2010
Messages : 58

Re : Questions et problèmes sur MYSQL

Oua, tu étais très inspiré smile

Je suis assez d'accord avec toi. Au final c'est vrai qu'il est beaucoup mieux de faire découvrir la solution par la personne concernée, c'est peut être pour moi une des seules façon d'être sûr que cette dernière va comprendre et s'en souvenir.

Après je dirais qu'il y a un 3 type de personnes, j'en aurai mis un entre les 2 que tu as cité. Je vois dans mon cas (je sors d'un DUT en électronique, je suis maintenant spécialiste en télécommunication donc pas du tout dans ma branche) je viens seulement d'apprendre la programmation afin de me facilité la vie au boulot et éviter de gâcher du temps, de l'argent et surtout du papier, du coup je pioche des idées et des cours un peu partout afin de tout assembler et créer ce dont j'ai besoin, il y a juste certaines choses que je trouverai jamais et c'est grâce à des gens comme vous que j'y arriverai. J'arrive très bien à trouver mes problèmes et créer quelque chose de spécifique mais seulement si j'ai un petit truc qui m'aide ou me montre juste le départ, d'ou le 3eme type de personne(d'ailleurs merci Maljuna Kris pour un de tes forum de 2008 sur devellopez, j'ai pris un de tes bout de code afin de l'adapter et connaitre le nombre de jours ouvrés dans un mois donné).

Passe une bonne journée

Cordialement,

jérémy

Hors ligne

#57 25-06-2012 07:05:04

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Questions et problèmes sur MYSQL

Jc a écrit :

Le problème avec la formation, c'est que savoir faire une synthèse ne s'apprends pas. On sait naturellement la faire ou pas. On peut s'entrainer à la développer à l'affuter jour après jour mais c'est un vaste débat qui a fait l'objet d'une thèse relativement récente que j'ai eu l'occasion de lire et fort interessante de surcroit (ne me demandez pas de lien je ne l'ai plus, mais si je trouve je ferais passer promis).

Pour avoir, au cours de ma carrière aujourd'hui achevée, préparé des dizaines de candidats à l'épreuve de note de synthèse des concours administratifs, je m'inscris évidemment en faux contre cette affirmation.
On peut très bien orienter des individus non préparés à cet exercice vers des méthodes assez efficaces.
Charge à eux, ensuite de se les approprier pour en faire des outils de leur performance et non un carcan à leur créativité.
Il faut savoir que pendant longtemps, dans les appréciations hiérarchiques d'un fonctionnaire, la langue de bois permettait de dire "excellent esprit d'analyse", ce qui n'était pas du tout un compliment mais le propos sous-jacent implicite et péjoratif était "pas d'esprit de synthèse".
Le terme même d'"esprit" y prend une forme d'arrogance, sauf si on l'entend comme "tournure d'esprit", ce que le sens commun nomme souvent et à juste titre "déformation professionnelle".
C'est un peu comme ces recruteurs qui cherchent des débutants, pour les sous-payer (et je ne parle même pas de l'esclavagisme déguisé envers le stagiaires) mais qui exigent d'eux de l'expérience.
On prête à Spartacus à qui un notable romain (peut-être Pompée ou Crassus, peu importe, l'authenticité de la légende de Spartacus étant très controversée en tout état de cause) reprochait sa jeunesse (comprendre son manque d'expérience et de rouerie politique):

Spartacus a écrit :

La jeunesse est un défaut dont je me corrige chaque jour un peu.

Il ne faudrait pas en conclure qu'il suffit de laisser passer le temps, que la sagesse n'est qu'affaire de temps vécu, comme directeur de maison de retraite j'ai pu vérifier qu'il n'en était souvent rien et Brassens, dans "Le temps ne fait rien à l'affaire", l'a plaisamment mis en exergue, non. Mon propos est de rappeler que les génies sont rares, et rarement autoproclamés, et que de grandes choses ont souvent été le résultat inattendu d'erreurs (souvent, au demeurant, dans les préparations culinaires).
De même qu'il faut tenter de concilier le savoir-faire et le faire-savoir, les cimetières étant très pourvus en personnalités irremplaçables, il faut mettre l'enseignement, en priorité au service de l'auto-apprentissage.
Ce sont ces notions que l'on retrouve dans l'adage prétendument confucéen

Quand le sage montre la Lune, le commun regarde le doigt.

ou cette citation de Martin Luther King

Notre monde sera sauvé du sort qui le menace non par l'adaptation docile de la majorité conformiste mais par l'inadaptation créatrice de la minorité non-conformiste.

Ne décourageons donc pas les rares débutants entreprenants d'autant que

rien ne sert d'espérer pour entreprendre, ni de réussir pour persévérer.

Une dernière citation et puis je vais prendre mon petit déjeuner avant de retourner à mon chantier de peinture du plafond de notre couloir d'entrée. C'est l'anglais Chesterton qui a écrit

Si tu ne peux pas être le grand arbre sur la colline soit le buisson dans la vallée, mais soit le meilleur petit buisson possible.

Amike, ĝis.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#58 25-06-2012 13:11:52

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : Questions et problèmes sur MYSQL

Bonjour,

Merci pour vos retours. J'essaierai de retrouver pour toi mk cette thèse. Peut être que j'ai sauvegardé le pdf quelque part. Si je le retrouve je le remettrais en ligne pour vous.
J'aimerais citer un exemple d'un ancien pote ingénieur industriel qui pour moi réponds à la définition de ce que doit être un vrai ingénieur. Un jour une entreprise a fabriqué une pièce en acier d'une centaine de tonnes, aux formes très spécifiques et arrondies conformément à un cahier des charges particulier. Elle faisait environ 50mètres d'envergure de mémoire pour vous donner une idée. La pièce devait être insérée en hauteur avec une précision inférieure au milimètre dans une structure spécifique et avec une orientation particulière. Or cette pièce était unique et il n'y avait aucun moyen connu pour pouvoir effectuer cette tâche. Quand la plupart se disaient qu'ils étaient confrontés à une impossibilité technique, que c'était impossible à faire et irréaliste, mon pote, lui a fait le travail qu'on lui a demandé: il a étudié toutes les contraintes, et à conçu l'ensemble des outils nécessaires à la réalisation de cette tâche.


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#59 25-06-2012 14:04:16

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Questions et problèmes sur MYSQL

Ça me rappelle cette citation

Mark Twain a écrit :

Ils ne savaient pas que c'était impossible, alors ils l'ont fait.

Dans le même ordre d'idée, mon ami Dédé le Toulousard a un jour été sollicité par un grand magasin parisien dans le cadre d'un appel d'offres pour résoudre un problème récurrent dont se plaignait la clientèle, l'attente au pieds des escalators, ceux-ci étant trop étroits.
La solution qu'il a proposée était éminemment moins coûteuse que toutes les autres offres reçues, mais il ne l'exposait pas, se contentant de leur proposer de lui verser une journée d'honoraires en échange de sa solution.
Piqués par la curiosité et vu la maigre somme demandée en rapport des autres ils l'ont convoqué pour recevoir son chèque en échange de sa solution.
Il leur a suggéré d'utiliser l'ego narcissique de la clientèle en disposant des miroirs au pied des escalators. La clientèle, ravie de se contempler, les plaintes ont quasiment cessé.
Moralité: Pensu aliamaniere (think different), même si tout le monde ne peut pas être Scherlock Holmes.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#60 25-06-2012 16:35:33

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : Questions et problèmes sur MYSQL

Merci MK pour cet exemple, j'adore smile

Sinon concernant ton argumentation s'inscrivant en faux à ce que j'ai pu exprimer, je m'attendais à plus d'arguments de ta part, et non seulement tu ne m'as pas convaincu mais en plus, je trouve que tu apportes même de l'eau au moulin à mes propos.


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#61 25-06-2012 20:42:13

maxredphenix
Membre
Inscription : 06-11-2010
Messages : 58

Re : Questions et problèmes sur MYSQL

C'est vrai que cette citation est terrible.

Tu est directeur de maison de retraite MK, j'ai fait 2 étés de suite en maison de retraite entre chaque année scolaire (DUT), c'était peut être un de mes meilleur souvenir de job d'été mais ça commence à dater (6ans déjà). Vous avez donc tous les deux de longues années d'expérience à ce que je vois, je suis très très loin de vous rattrapper wink

J'ai commencer à créer une petite page de test qui faire appelle au fichier regex.php via un require_once (merci JC), cette page me permet de vérifier que ces derniers fonctionnent bien et cela avec les outils que moi j'utilise ex: jquery datepicker (pour le moment, il y a que les mail). Si au cas ou ça vous interresse:
http://dl.dropbox.com/u/31901874/Copie% … 0Regex.rar

Est-ce que je peux profiter de votre expérience à tous les 2 pour quelques questions? Vous n'êtes pas obligés de répondre, c'est juste pour me diriger dans la bonne direction:

1) Après quatre mois passé sur mon projet de webapp (et mon apprentissage), je me suis rendu compte que le positionnement en css etait très embêtant à partir du moment ou il y a plusieurs css qui s'ajoutent. Donc qu'est ce que vous pensez du principe de grille comme960 js : http://960.gs/?
2) Lorsqu'on à plusieurs date à manipuler, quel est le meilleur moyen de la faire? les convertir en timestamp ou en heures via strtotime?
Par exemple, en ce moment je dois calculer le temps passé sur une intervention (d'ou ma question), ce qui donne une formule dans ce style:
(date de fin)-(debut inter+debut impo acces+fin impo acces+temps accès et signature)

soit si je le veux en jour(s) (pas testé pour le moment)
$nbjours = round((strtotime($datefin) - (strtotime($debutinter) + strtotime($debutimpoacces) + strtotime($finimpo) + $tpsacces)))/(60*60*24)-1);

3) Lorsqu'on veut faire un GROUP BY, est ce qu'on peut faire une sorte de double GROUP BY?
Je m'explique, par exemple on a une table "depannage" avec les champs "date", "type", "element", "demandeur" (un element est relier à un type: element:samsung gs2, type:telephone), si je veux faire une requête pour avoir les différents type de matériels utilisés dans le mois je fais ça:
   

$req=mysql_query("SELECT id,type FROM depannage WHERE MONTH(date)=$mois AND YEAR(date)=$annee ORDER BY type");

ou pour les elements
       

$req=mysql_query("SELECT id,element FROM depannage WHERE MONTH(date)=$mois AND YEAR(date)=$annee GROUP BY element ORDER BY element");

mais comment faire pour afficher ma requete groupée par "type" et "element" dans mon tableau (vu qu'il peut il y avoir plusieurs "element" identique donc il faut les grouper eux aussi):
    __________________________
    Type..................nbre
    __________________________
    type1.................16
    ...element1...........5
    ...element2...........5
    ...element3...........6
    type2.................30
    ...element4...........10
    ...element5...........10
    ...element6...........10

J'ai tenter pas mal de choses mais j'ai toujours pas trouvé pour le moment....
   
4) Je cherche d'ou vient l'erreur depuis plus de 2 semaines, de temps en temps je me remets dessus mais ....
Voila, comme je vous l'ai dit, je crée mon appli pour gagner de temps et economiser du papiers (500feuilles/mois c'est pas négligeable), je dois créer un compte rendu dans lequel je regroupe les interventions du mois, des stats etc...
Pour cela j'utilise html2pdf, j'ai crée un popup dans lequel je note à l'intérieur d'un input le mois et l'année (mm/aaaa) et si je clique sur "créer pdfé, cela génère le pdf.
Mon code de la popup:
       

<!-- Fenêtre modale servant à rentrer le mois et l'année désiré pour la création du compte rendu-->
      <div id="popup_cptrendu" class="popup_block">
        <div id="donneepdf">
          <a><img src="images/pdf.png" alt="CEA" style="float: center" /></a>
          <h2 style="color: blue; margin-top:-3%;">Création du Compte Rendu Mensuel</h2>
          <p>Choisisser le mois et l'année</p>
          <form action="pdf/conversion_compte_rendu.php" id="formcptrendu" method="post">
            <span class= "date" style="float:center">
              <input type="text" name="date" id="date" placeholder="MM/AAAA"/>
            </span>
            <!-- Envoie / Annulation du formulaire -->
            <div id="inputs">
              <input type="submit" value="Créer PDF" id="creerpdf" class="submit" title="Vous voulez créer le PDF ? Cliquez !"/>
            </div>
          </form>
        </div>
        <div id="loader" style="display:none; float:center;">
          <img src="images/loader.gif">
          <p style="float:center">Création du compte rendu en cours</p>
        </div> 
      </div>

la div loader, sert à afficher un gif et un message, ce que je comprends pas, c'est pourquoi le POST ne se fait pas...si je clique sur "créer pdf" j'ai bien mon loading (durée 3s environ) puis je reviens à ma page d'accueil et non à la page conversion_compte_rendu.php
Voila un aperçu de la fenêtre modale de création du pdf
[img align=C]http://dl.dropbox.com/u/31901874/Copie%20site%20pour%20forum/cr%C3%A9ation%20pdf.jpg[/img]

Voila ce que ça donne après le clic sur créer pdf:
[img align=c]http://dl.dropbox.com/u/31901874/Copie%20site%20pour%20forum/Cr%C3%A9ation%20PDF%202.jpg[/img]

mais je reste sur la même page, et voila l'url : http://localhost/Monsite/index.php?date=06%2F2012, il devrait pas il y avoir le 06%2F2012 vu que c'est un envoie en POST non?


J'espère ne pas trop vous déranger avec mes questions

Cordialement

Jérémy

Dernière modification par maxredphenix (25-06-2012 20:47:37)

Hors ligne

#62 26-06-2012 02:45:19

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : Questions et problèmes sur MYSQL

Bonsoir,

Sincèrement je ne vois pas trop l'intérêt du composant dont tu parles. Pour gérer tes CSS la première règle à appliquer c'est à bien les architecturer/structurer tant au niveau fichier qu'au niveau fonctionnalités, au même titre que ton site web ou ton applicatif (dossier css, js, php, html, par module, par type de contenu de fichier, etc...). Choisir des conventions de nom et s'y tenir. Travailler au niveau global et segmenter au fur et à mesure des besoins.

Pour les dates, il faut travailler au niveau SGBDR et dans le format natif et réserver un rendu particulier qu'au moment de l'affichage.

Pour la popup, la construction me paraît un peu bizarre. Pour la comprendre il faudrait connaître le contexte d'appel.

Question requêtes on peut tout faire à part le café wink Fait nous un SHOW CREATE TABLE sur les tables concernées ca m'aidera pour t'expliquer la solution adaptée à ton cas.

++


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#63 26-06-2012 06:07:35

maxredphenix
Membre
Inscription : 06-11-2010
Messages : 58

Re : Questions et problèmes sur MYSQL

Bonjour,

Pour les grilles, je voulais voir ce que tu en pensais, parce qu'il y a de plus de en plsu de site qui se mettent à ça (Graphikart, alsacréation...). Après pour mon site actuel, j'ai fait comme toi (enfin 1 mois après avoir commencer, donc j'ai du refaire plusieurs de mes codes...)

Pour les dates, si tu travail qu'au niveau de SGBDR tu fais comment alors? parce que la c'est quelque chose que j'ai jamais fait et dans tout ce que j'ai lu il utilisait tout le temps strtotime ou autres.

Voila le code entier de ma page index qui contient la fenêtre popup:

<?php
// On prolonge la session
session_start();
// On teste si la variable de session existe et contient une valeur
if(empty($_SESSION['login'])) {
  // Si inexistante ou nulle, on redirige vers le formulaire de login
  header('Location: authentification.php');
  exit();
}
?>
<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <!--Rafraichissement de la page toutes les minutes -->
    <meta http-equiv="refresh" content="60" />
    <!-- Icone de la fenêtre du navigateur -->
    <link rel="icon" type="image/png" href="images/favicon.png" />
    <!-- Titre de la page -->
    <title>Infogérance</title>
    <!-- Appel des Divers CSS -->
    <link href="css/template_index.css" rel="stylesheet" type="text/css" /><!-- CSS de mise en forme générale -->
    <link href="css/fenetre_modale.css" rel="stylesheet" type="text/css" /><!-- CSS pour la fenêtre modale -->
    <link href="css/footer.css" rel="stylesheet" type="text/css" /><!-- CSS pour la fenêtre modale -->
    <!--Appel des Divers Scripts -->
    <script type="text/javascript" src="javascript/jquery-1.7.2.min.js"></script> <!-- Script JQUERY minifiée-->
    <script type="text/javascript" src="javascript/jquery-1.8.19.js"></script> <!-- JQUERY-->
    <script type="text/javascript">
    // Gestion de fenêtres modales
    $(document).ready(function() {
    $('a.poplight[href^=#]').click(function() {
      var popID = $(this).attr('rel'); //Trouver la pop-up correspondante
      var popURL = $(this).attr('href'); //Retrouver la largeur dans le href
      //Récupérer les variables depuis le lien
      var query= popURL.split('?');
      var dim= query[1].split('&');
      var popWidth = dim[0].split('=')[1]; //La première valeur du lien
      //Faire apparaitre la pop-up et ajouter le bouton de fermeture
      $('#' + popID).fadeIn().css({ 'width': Number( popWidth ) }).prepend('<a href="#" class="close"><img src="images/close_pop.png" class="btn_close" title="Close Window" alt="Close" /></a>');
      //Récupération du margin, qui permettra de centrer la fenêtre - on ajuste de 80px en conformité avec le CSS
      var popMargTop = ($('#' + popID).height() + 80) / 2;
      var popMargLeft = ($('#' + popID).width() + 80) / 2;
      //On affecte le margin
      $('#' + popID).css({
        'margin-top' : -popMargTop,
        'margin-left' : -popMargLeft
      });
      //Effet fade-in du fond opaque
      $('body').append(''); //Ajout du fond opaque noir
      //Apparition du fond - .css({'filter' : 'alpha(opacity=80)'}) pour corriger les bogues de IE
      $('#fade').css({'filter' : 'alpha(opacity=80)'}).fadeIn();
      return false;
      });
      //Fermeture de la pop-up et du fond
      $('a.close, #fade').live('click', function() { //Au clic sur le bouton ou sur le calque...
        $('#fade , .popup_block').fadeOut(function() {
          $('#fade, a.close').remove();  //...ils disparaissent ensemble
        });
        return false;
      });
    });
    </script>
    <!-- Affichage d'un .gif de chargement lors du clic sur creerpdf (pour la création du compte rendu)-->
    <script type="text/javascript">
    $(document).ready(function() {
      $('#creerpdf').click(function() {
        $('#loader').show(); <!-- On affiche la div contenant le gif et le texte de chargement -->
        $('#donneepdf').hide(); <!-- On cache la div contenant le champ date pour la création du compte rendu -->
      });
    });
    </script>
  </head>
 
  <body><div class="wrapper">
    <!-- En Tête -->
    <!-- Banniere avec logo -->
    <div id="header" class="banniere">
      <div id="logo"><a href="#?w=500" rel="popup_name" class="poplight" title="Vous voulez des infos sur cette page ? Cliquez !" alt="logo"><img src="images/logo.gif" /></a></div> 
      <div id="titre"><a>Menu Principal</a></div>
      <div id="date_du_jour">
        <?php
          $jour = array("Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi");
          $mois = array("","Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre");
          $datefr = $jour[date("w")]." ".date("d")." ".$mois[date("n")]." ".date("Y");
          echo $datefr;
        ?>
      </div>
    </div>
    <!-- Menu -->
    <div id="barre_navigation">
      <div id="nbre_connecte">
        <?php
          require_once('php/connexionbdd.php');
          require_once('php/nombre_online.php');
          // Préparation requete permettant de compter le nbre de connectés au site
          $sql = 'SELECT count(*) FROM nb_online';
          // On lance la requete et on affiche une erreur s'il y en a une
          $req = mysql_query($sql) or die('Erreur SQL! <br /> '.$sql.'<br />'.mysql_error());
          // On récupère le nombre de connectés
          $data=mysql_fetch_array($req);
          // On libère l'espace mémoire alloué pour la requete sql
          mysql_free_result($req);
          // On affiche dans la barre de navigation le nombre de connectés
          function AuPluriel($chiffre) {if($chiffre>1) {return 's';};}
          echo $data[0].' collaborateur'.AuPluriel($data[0]).' '.'connecté'.AuPluriel($data[0]);
        ?>
      </div>
      <div id="deconnexion">
        <a href="authentification.php?erreur=logout""><img src="images/logout.png" alt="logout" title="Vous avez terminé ? Déconnectez-vous !" /></a>
      </div>
      <div id="identifiant">
        <?php
          if (isset($_SESSION["login"])) {
            // Le membre est connecté puisqu'une variable de session existe
            echo htmlentities($_SESSION['nom_prenom']); // Affiche le Login
          } else {
            // Il n'est pas connecté, on lui donne la possibilité de le faire
            // On redirige vers le fichier authentification.php
            header('Location: authentification.php');
            exit();
          }
        ?>
      </div>
    </div>
    <form>
      <!--Menu centrale avec le raccourci vers chaque page principale -->
      <div id="menucentrale">
        <ul>
          <li><a href="php/formulaires_tableau/gest_demande_tableau.php"><img src="images/menu/demande.png" alt="Réception des Demandes" title="Réception des Demandes" /><p><a href="php/formulaires_tableau/gest_demande_tableau.php">Réception des Demandes</a></p></li>
          <li><a href="php/formulaires_tableau/gest_correctif_tableau.php"><img src="images/menu/correctif.png" alt="Gestion des Dépannages" title="Réception des Dépannages" /><p><a href="php/formulaires_tableau/gest_correctif_tableau.php">Gestion des Dépannages</a></p></li>
          <li><a href="php/formulaires_tableau/gest_exploitation_tableau.php"><img src="images/menu/exploitation.png" alt="Gestion des Exploitations" title="Gestion des Exploitations" /><p><a href="php/formulaires_tableau/gest_exploitation_tableau.php">Gestion des Exploitations</a></p></li>
          <li><a href="php/formulaires_tableau/gest_preventif_tableau.php"><img src="images/menu/preventif.png" alt="Gestion Préventif" title="Gestion Préventif" /><p><a href="php/formulaires_tableau/gest_preventif_tableau.php">Gestion Préventive</a></p></li>
          <li><a href="php/formulaires_tableau/gest_astreinte_tableau.php"><img src="images/menu/astreinte.png" alt="Gestion des Astreintes" title="Gestion des Astreintes" /><p><a href="php/formulaires_tableau/gest_astreinte_tableau.php">Gestion des Astreintes</a></p></li>
        </ul>
        <ul> 
          <li><a href="php/formulaires_tableau/gest_devis_tableau.php"><img src="images/menu/devis.png" alt="Gestion des Devis" title="Gestion de Devis" /><p><a href="php/formulaires_tableau/gest_devis_tableau.php">Gestion Des Devis CEA</a></p></li>
          <li><a href="php/formulaires_tableau/gest_inventaire_tableau.php"><img src="images/menu/inventaire.png" alt="Inventaire" title="Inventaire" /><p><a href="php/formulaires_tableau/gest_inventaire_tableau.php">Gestion du Matériel</a></p></li>
          <li><a href="php/formulaires_tableau/gest_annuaire_tableau.php"><img src="images/menu/annuaire.png" alt="Annuaire" title="Annuaire" /><p><a href="php/formulaires_tableau/gest_annuaire_tableau.php">Annuaire Entreprises</a></p></li>
          <li><a href="php/formulaires_tableau/gest_pabx_tableau.php"><img src="images/menu/pabx.png" alt="PABX" title="PABX" /><p><a href="php/formulaires_tableau/gest_pabx_tableau.php">Gestion Données PABX</a></p></li>
          <li><a href="php/calendrier/calendrier.php"><img src="images/menu/calendrier.png" alt="calendrier" title="calendrier" /><p><a href="php/calendrier.php">Calendrier Personnels</a></p></li>
        </ul>
        <ul> 
          <li><a href="pdf/conversion_compte_rendu.php" id="chargement"><img src="images/menu/compte_rendu.png" alt="Compte Rendu d'Activité" title="Compte Rendu d'Activité" /><p><a href="pdf/conversion_compte_rendu.php?date=06%2F2012">Compte Rendu d'Activité</a></p></li>
          <li><a href="#?w=350" rel="popup_cptrendu" class="poplight" id="chargement"><img src="images/menu/compte_rendu.png" alt="Compte Rendu d'Activité" title="Compte Rendu d'Activité" /><p><a href="#?w=350" rel="popup_cptrendu" class="poplight" id="chargement">Compte Rendu d'Activité</a></p></li>
          <li><a href="php/autres/parametres.php"><img src="images/menu/parametre.png" alt="parametre" title="parametre" /><p><a href="php/autres/parametres.php">Paramètres & Gestion</a></p></li>
        </ul>
      </div>
     
      <!-- Fenêtre modale servant à rentrer le mois et l'année désiré pour la création du compte rendu-->
      <div id="popup_cptrendu" class="popup_block">
        <div id="donneepdf">
          <a><img src="images/pdf.png" alt="CEA" style="float: center" /></a>
          <h2 style="color: blue; margin-top:-3%;">Création du Compte Rendu Mensuel</h2>
          <p>Choisisser le mois et l'année</p>
          <form action="pdf/conversion_compte_rendu.php" id="formcptrendu" method="post">
            <span class= "date" style="float:center">
              <input type="text" name="date" id="date" placeholder="MM/AAAA"/>
            </span>
            <!-- Envoie / Annulation du formulaire -->
            <div id="inputs">
              <input type="submit" value="Créer PDF" id="creerpdf" class="submit" title="Vous voulez créer le PDF ? Cliquez !"/>
            </div>
          </form>
        </div>
        <div id="loader" style="display:none; float:center;">
          <img src="images/loader.gif">
          <p style="float:center">Création du compte rendu en cours</p>
        </div> 
      </div>
     
      <!-- Fenêtre Modale lors du clic sur le logo -->
      <div id="popup_name" class="popup_block">
        <a><img src="images/info.png" alt="Logo" style="float: right; margin: 50px 0 0 20px;" /></a>
        <h2>Logiciel d'Infogérance</h2>
        <p>Bienvenue sur le site d'infogérance, cette webapp a pour but de gérer les appels, les pannes, les exploitations etc...</p>
      </div>
    </form>
  </div><!--Fin de la div qui rassemble tout le contenu de la page -->
  <!-- Pied de Page -->
  <?php require_once('php/footer.php'); ?>
  </body>
</html>

En faite je fais juste un envoie de la dimension de fenêtre via le href et c'est l'id de ma popup qui est pris en compte. A partir de la dès que tu cliques sur l'icone de création du compte rendu, cela affiche (précédemment cacher) la div via le code js placé dans le <head>

Et pour finir, voila le code sql de ma bdd (il y a juste le unicode_ci que j'ai pas fini de mettre sur tous mes champs de mes différentes tables, c'est le code créer par Mysql Workbench):
http://dl.dropbox.com/u/31901874/Copie% … stspie.sql

Ps: Ne prends pas peur sur certaine table comme pabx et pabx_taxa, ce sont deux tables très spécifiques.

Passe une bonne journée

Dernière modification par maxredphenix (26-06-2012 07:46:31)

Hors ligne

#64 26-06-2012 07:55:36

maxredphenix
Membre
Inscription : 06-11-2010
Messages : 58

Re : Questions et problèmes sur MYSQL

Si tu veux je peux d’envoyé un fichier excel dans lequel j'ai crée un aperçu de mes tables (c'est plus lisible)

maxredphenix

Hors ligne

#65 26-06-2012 12:50:42

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : Questions et problèmes sur MYSQL

Bonjour,

En ce qui concerne ta proposition de fichier excel, non merci, je préfère ton code SQL il me parle beaucoup plus.
Il y a beaucoup de choses à dire sur ton code, et la première et la plus importante, et que ton code est sujet aux effets de bords d'une manière assez importante. La première, que je te conseille vivement de supprimer de suite, c'est le rafraichissement automatique du formulaire toutes les minutes. A éviter sauf dans un contexte spécifique et maîtrisé. Pour peu que tu génères ton pdf pendant le rafraichissement, et c'est mort.
Ensuite évite de charger le dom initialement avec toutes tes boîtes de dialogues et tes formulaires. En effet cela peut facilement être conflictuel sans parler des performances réduites car tu augmentes ta bande passante pour éventuellement ne pas utiliser les données récupérées. Idéalement, toutes tes boîtes de dialogues html affichées avec JQUERY doivent se charger à la demande en Ajax. Le faire en ajax te permets en plus de maîtriser l'isolation de tes process et de simplifier ton environnement de travail au strict nécessaire.

Concernant ton modèle de base de données, aucun prétexte ne peut justifier une mauvaise modélisation de tes données, en l'occurrence celle de tes deux tables spéciales qui sont à revoir complètement. Travailler en innoDB ne sert strictement à rien si tes contraintes métier n'y sont pas implémentées ainsi que tes index associés.
C'est l'heure du café je reviens vers toi pour tes requêtes. wink


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#66 26-06-2012 17:07:34

maxredphenix
Membre
Inscription : 06-11-2010
Messages : 58

Re : Questions et problèmes sur MYSQL

Ok pour le fichier excel (on sait jamais, je l'avais crée donc je propose).

J'ai mis le rafraîchissement auto pour le nombre de connecté, le code vient de la page nombre_online.php qui vérifie le nombre d'adresse ip présente depuis moins de 3min et le mémorise cela dans la table nb_online. Et moi du coup j'affiche cela dans ma page d'index (et seulement celle-la), logiquement la création du pdf doit durée 16secondes (sachant que pour le moment c'est mon pc qui le génère et j'ai pas une bête de course). tu me conseils d'enlever le rafraichissement?

Pour le chargement du javascript et des fenêtres, c'est une des seule page qui créer cela. Toutes les autres étant dans un dossier nommé "php" font appel à ce script via un require_once, idem pour les formulaires, c'est seulement une fois qu'on clique sur un bouton qu'on:
1) Charge une nouvelle page
ou
2) On ouvre une page html à l'intérieur de la fenêtre modale

Concernant les 2 tables, je t'envoie via mail 2 liens pour te montrer à quoi elles servent, je sais que cela ne m'excuse pas mais j'ai pas trouvé d'autres solution.

Pour innoDB, c'est bizarre il y a jamais personne qui me dit pareil smile je me suis fait limite engueulé il y a pas longtemps parce que ma table était en MyIsam alors que j'avais fait ce choix vu que ce moteur était plus rapide et moins grourmand. Vu les commentaires de cette personne, je pense que je plus suivre tes conseils et me tourné vers  MyIsam.

J'attends avec impatience de tes nouvelles, en attendant je corrige mon moteur et  je continue à chercher d'ou vient ce fichu problème de regex.

maxredphenix

Dernière modification par maxredphenix (26-06-2012 17:07:56)

Hors ligne

#67 26-06-2012 18:21:40

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : Questions et problèmes sur MYSQL

Bonsoir,

Je t'ai pas dit de passer en myisam^^. Je t'ai dit juste que cela ne sert à rien (même si cela sert un peu quand même car tu bénéficies de plus de souplesse niveau montée en charge de part la gestion des verrous et de la mise en cache des données par l'optimiseur) si tu n'y intègres pas les contraintes référentielles et donc ta logique métier. Je te rappele qu'il y a huit sortes de contraintes en SQL et que si MySQL ne les implémente pas toutes, ce n'est pas une raison pour n'en n'implémenter aucune.

Pour le nombre de connectés cela ne doit pas être géré côté serveur mais côté client, sauf si tu as besoin d'avoir une visibilité en temps réel sur les personnes connectées dans un contexte par exemple de travail collaboratif.


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#68 26-06-2012 18:26:17

maxredphenix
Membre
Inscription : 06-11-2010
Messages : 58

Re : Questions et problèmes sur MYSQL

Bonsoir,

Ok, je savais pas pour les contraintes sql, je vais me renseigné sur ça.

Pour le nombre de connectés, oui c'est fait pour du travail collaboratif donc je dois voir combien de personnes sont connectés sur le site.

Je t'ai envoyé le mail dans lequel tu auras plus d'info sur mes tables.

Hors ligne

#69 26-06-2012 20:03:49

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : Questions et problèmes sur MYSQL

Ok je regarde tout ca tout à l'heure. Par contre si c'est pour du collaboratif, il y a mieux pour faire cela que ce que tu as fais et pour les raisons que je t'ai déjà données La mise à jour de ces informations doit se faire sans recharger la page et donc en Ajax.

++

Dernière modification par Jc (26-06-2012 20:04:10)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#70 26-06-2012 21:09:25

maxredphenix
Membre
Inscription : 06-11-2010
Messages : 58

Re : Questions et problèmes sur MYSQL

Ok, merci.

Je savais pas qu'on pouvait faire cela en javascript, pour moi c'était obligé de le faire en php vu que les gens se connectent sur un serveur, c'est pour cela que j'ai fait de cette manière (et aussi parce que je suis nul en ajax et que j'ai juste lu un petit tuto big_smile c'est ma prochaine étape, 1 livre à la fois, c'est pas donné ces bêtes la)

Passe une bonne soirée

Dernière modification par maxredphenix (26-06-2012 21:09:38)

Hors ligne

#71 27-06-2012 15:23:35

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : Questions et problèmes sur MYSQL

En fait pour tout te dire, vu que c'est en collaboratif, faut le faire en mixte: Idéalement il te faut une tâche cron côté serveur pour mettre à jour le cache de connexion, et une interrogation de ce même cache en ajax côté client. Ca optimise de plus les flux de données et les temps de communication entre le client et le serveur.

Dernière modification par Jc (27-06-2012 15:24:56)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#72 27-06-2012 17:02:38

maxredphenix
Membre
Inscription : 06-11-2010
Messages : 58

Re : Questions et problèmes sur MYSQL

Ok, j'ai un autre projet en tête mais pour du perso cette fois donc le site sera en ligne et la il faudra que j’économise au maximum de la bande passante donc merci pour l'info.

Sinon je suis content, les regex, ça avance un peu, maintenant, j'ai les mails et les dates qui sont ok et le datetime comment ça être bien, reste plus que le texte.....enfin smile

Hors ligne

#73 27-06-2012 20:25:11

maxredphenix
Membre
Inscription : 06-11-2010
Messages : 58

Re : Questions et problèmes sur MYSQL

Bon je comprends pas du tout, je suis quasi sûr que c'est ça pour le datetime mais cela ne fonctionne pas sad

est-ce que tu pourrais m'aider s'il te plait?? 

Voila le fichier qui contient la page de test, le fichier contenant les regex/conversions et le plugin jquery datepicker et une modif en datetimepicker
http://dl.dropbox.com/u/31901874/Copie% … ex%202.rar

Au faite, est-ce que tu as une idée de ce qui bloque le post pour la création du pdf?

Merci d'avance et bonne soirée

Hors ligne

#74 27-06-2012 21:19:11

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : Questions et problèmes sur MYSQL

Bonsoir,

Merci de consulter ta boite aux lettres


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#75 29-06-2012 06:12:51

maxredphenix
Membre
Inscription : 06-11-2010
Messages : 58

Re : Questions et problèmes sur MYSQL

Bonjour,

Enfin c'est bon j'ai mon datetime convertie pour mysql
// Fonction de conversion des dates pour l'enregistrement dans la bdd
function ConversionDateTime($datetime){
    $dateInTime = strtotime($datetime);
    $date = date('Y-m-d H:i:s', $dateInTime);
    return $date;
}

Je me suis basé sur ce que tu m'avais dit dans le mail: forcer à  0000-00-00 00:00:00  donc je me suis dit que je vais le faire avec date()

Reste plus que le texte et se sera bon

Bonne journée

maxredphenix

Hors ligne

Pied de page des forums