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 :

Une question de débutante sur PHP-MySql


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 55
    Points : 22
    Points
    22
    Par défaut Une question de débutante sur PHP-MySql
    Bonjour,

    Une question de débutante sur PHP-MySql que vous pourrez résoudre facilement

    En fait c'est sans doute un blocage de compréhension, donc il s'agit plus d'un coup de pouce.

    Nous avons déjà travaillé sur les livres, notamment le "zéro" et nous avons créé une base MySql et nous l'avons chargé chez notre hébergeur.

    Les tables MySql sont aujourd’hui au nombre de 15.

    Notre projet revient, dans une section 'membre' à reproduire l'existant, actuellement en pages statiques, mais avec des pages dynamiques qui s'affichent après requêtes PHP.

    Rien de bien original.
    Actuellement notre page standard contient:
    1- le code de protection de la page type $_SESSION["MEMBRE"] !
    2- un div header avec des boutons menus statiques et des liens divers
    3- un div menu à gauche avec les 26 lettres de l'alphabet qui se déploie avec en javascript en des dizaines de liens pour chaque lettre.
    4- un div center dans lequel se trouve les données (variables) toujours selon la même structure, ligne par ligne, avec un même item pour tous (titre) suivi de la donnée spécifique de la page considérée
    5- un div lower avec des info de type footer


    Voilà pour les principes.
    Voici nos 2 questions, A, B.

    A
    Dans le menu de gauche nous avons actuellement un code de type
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <div class="sousmenu"><a href="blabla124.php"><i>blabla124.php</i></a></div>
    Dans le header nous avons des liens avec un code de type
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <li><a href="blablaxx.php" target="_self" onMouseOver="this.title='blablaxx'" OnMouseOut="this.title=''">BLABLAXX</a> |</li>

    Comment modifier les 2 types de codes ci-dessus pour qu'ils appellent maintenant la base mysql? (ou bien peut-être n'y a -t-il rien à changer ici, sauf si chaque lien était appelé via la base Msql, ce qui est prévu mais pour une étape ultérieure)

    B
    Dans le center de notre page standard, voici 2 exemples de lignes pour blabla124pour notre page statique
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <p>Nom Index: <b>donnée 22</b></p>
    <p>Nom complet: <b>donnée 46</b></p>

    Comment modifier les 2 types de codes ci-dessus pour qu'ils appellent maintenant la base mysql, sachant que:
    - pour la 1ère ligne la donnée 22 doit être cherchée maintenant dans le champ 18 de la table3 pour la ligne qui contient blabla124 dans le champ 4 de la table 1
    - pour la 2ème ligne la donnée 26 doit être cherchée maintenant dans le champ 29 de la table8 pour la ligne qui contient blabla124 dans le champ 4 de la table 1

    Cela doit être très facile mais on bloque car on ne trouve pas de situations identiques dans nos livres.
    Votre petit coup de pouce va nous permettre de démarrer et de finaliser plein de lignes car elles sont aussi simples dans 95% des cas (c'est à dire aller chercher une donnée dans un champ d'une table pour une ligne avec correspondance de la 'racine' pour la même ligne dans le champ 4 de la table 1, et la copier sans modification après le titre (par exemple ici Nom Index et Nom complet).

    J'espère que j'ai été claire comme de l'eau de source!

    Bon WE !

    Merci de votre aide,

    A+, Steph

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 55
    Points : 22
    Points
    22
    Par défaut
    Bonjour,

    Et merci à Artemus 24 d'avoir donné une réponse conseillant de déplacer le fil.

    A vrai dire nous avions hésité...

    Car notre blocage est d'abord conceptuel pour MySql.

    Avant de penser aux requêtes PHP il nous faudrait bien comprendre le "conversationnel" MySql.
    Prenons un exemple :
    - pour notre menu gauche on comprend intuitivement que notre menu gauche actuellement dans un txt et inclus dans la page standard avec un include doit pouvoir se générer sans passer par le txt (et alors plus d'include?)...
    - mais pour notre (nos) page(s) standard(s) qui a (ont) des titres invariables et des données que l'on ira chercher dans les tables avec un "if" pour l'occurrence qui correspond à la même ligne, nous bloquons pour savoir si nous devons créer une page pour chacun des blabla du menu gauche et dans cette page écrire tous nos titres qui seront suivis de la requête OU BIEN si il n'y aura qu'une seule page standard qui en fonction du clic sur le menu gauche, par exemple dans blabla124, repèrera la ligne correspondante puis ira chercher les données les unes après les autres pour chaque titre dans la ligne en question.

    Quand on aura compris ce comment de principe, on sera bien plus claires pour discuter d'une requête type (comme indiqué dans le premier message).

    Peut-être que la montagne va accoucher d'une souris... par avance, pardon.

    Donc merci à l'avance à Artemus24 si avec toute sa gentillesse il peut nous éclairer.

    A+
    Steph

  3. #3
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    pour la question A : c'est simple c'est ton script blabla124.php qui se chargera de faire les appels nécessaires à la base de données quand le lien sera cliqué.
    pour la question B : tu as la possibilité de personnaliser l'appel comme ça : blabla124.php?parama=xxx&paramb=yyy, ainsi tu sauras comment orienter le déroulement du script blabla124.php en fonction de son paramétrage qui est accessible dans ce cas via le tableau super global $_GET : $_GET['parama'] et $_GET['paramb'], à lire ici.

    M'est d'avis que vous partez de très loin. Sans ces bases assimilées, je ne vous dis pas la galère...

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 55
    Points : 22
    Points
    22
    Par défaut
    Bonjour cher modérateur rawsrc,
    Merci de cette réponse qui éclaire pas mal.
    Pour la galère, c’est probable, mais il faut bien débuter et on a déjà créé la base MySql.
    Maintenant on voudrait rentrer dans le très concret sur un exemple complet et te demander le coup de pouce qui nous permettra d’avancer un petit peu (et après, promis, on revient sur les bases).
    Notre base s’appelle papiliophpmysql, elle a 15 tables dont 2 d’entr’elles sont nommées taxabase1 et taxabase6 (qui servent à cet exemple).

    Donc nous avons pour l’exemple Chazara briseis briseis:
    Dans le menu de gauche nous avons actuellement un code de type
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <div class="sousmenu"><a href="briseisChaza.php"><i>briseisChaza.php</i></a></div>
    … qui ouvre la page standard briseisChaza.php après clic
    Dans la page standard briseisChaza.php pour Chazara briseis briseis (extraits), nous avons 2 titres suivants, après les tags habituels invariables:
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <codes-de-session-membres><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml">
    <head><link rel="stylesheet" type="text/css" href="az-papilio-base.css" /></head><body>
    <p>Nom Index: <b>Ermite</b></p>
    <p>Nom complet: <b>Chazara briseis briseis</b></p>
    </body></html>
    Donc que devient notre menu gauche ?
    Et surtout que devient le début de notre page standard pour NomIndex et Nom complet (si on a bien compris, y en a plus de page standards par dizaines, en tant que telles)?
    … sachant que le contenu briseisChaza figure en entier (et pas plus) dans une des lignes du 4ème champ appelé codeindex de taxabase1, que dans le champ 1 de la même table taxabase1 appelé Rk_Hist (clé primaire, nombres entiers) de la même ligne, il y a un nombre, 124, et qu’il faut extraire pour la même ligne 124, cette fois dans taxabase6, le contenu du 28ème champ appelé nom_index et le copier après <p>Nom Index: <b> (le cas de Nom complet est identique avec un autre champ, donc oublions).

    Bien sûr les codes invariables peuvent être appelés avec un (cela, on sait)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo 'blabla'; ?>
    Voilà, merci de ton aide

    Basique pour toi et un sacré coup de pouce pour nous comme tremplin vers l’avenir !

    A+, Steph

  5. #5
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Citation Envoyé par Stephdem Voir le message
    Basique pour toi et un sacré coup de pouce pour nous comme tremplin vers l’avenir !
    Avant de parler d'avenir, il faudrait s'attarder sur le présent et régler le problème du jour, à savoir votre niveau global dans le développement en général et web en particulier.

    Vu les questions, je suis persuadé que c'est votre premier projet et que vous tentez l'ascension de l'Everest sans la préparation adéquate.

    Pour commencer, il faut se pencher sur ce chouette tutoriel de la miss Sylvie Vauthier alias dendrite : PHP : Le tutoriel pour grands débutants pressés.

    Sans ces pré-requis pleinement assimilés, vous allez bloquer toutes les 5 minutes et rager tant et plus à cause de la frustration de ne pas pouvoir faire un pas sans avoir une béquille permanente.

    Pour faire un développement web assez propre : il faut maîtriser pas mal de savoirs : SQL, PHP, HTML, CSS, JavaScript, principes généraux du monde web.

    Bref, je vous conseille de prendre quelques cours et de pratiquer sur des petits projets avant de vous embarquer sur l'océan.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 55
    Points : 22
    Points
    22
    Par défaut
    Bonjour modérateur rawsrc,

    Merci de cette réponse rapide qui m’étonne beaucoup.

    Ma réponse sera factuelle. Veuillez n’y lire aucune agressivité.

    Débutante dans MySql-PHP, bien sûr, c’est dans le titre de ce fil.
    Pour le reste je ne suis pas sûre que vous soyez dans le vrai.
    Nous avons créé et géré 4 sites Internet avec des fonctions php et des js de base plus des css complexes qui totalisent plusieurs centaines de milliers de visiteurs uniques par mois.
    Le site pour la base papilio est en place depuis plus de 15 ans, la section membre totalise plus de 2000 pages.
    Donc débutante sur html, js, php, il y a sûrement pire.

    Pour ce site nous avons créé la base MySql qui pèse 18 Mega via wamp, nous l’avons installée chez l’hébergeur.
    Donc de 2 choses l’une : ou bien ce que nous avons souhaité pour débloquer la situation est banal et prend 5 minutes, et un des experts de ce forum y compris vous-même peut satisfaire notre besoin.
    Ou bien il ne l’est pas ou personne ne veut consacrer 5 minutes, alors nous passerons notre chemin.

    Evidemment comme déjà indiqué, nous avons lu pas mal de bouquins et entre hier soir et aujourd’hui j’ai passé un moment certain sur le tutoriel maison dont vous faites positivement la promotion.

    Il est clair, très basique, mais pas différent de plein d’autres (y compris sur YouTube).

    J’espère vous avoir convaincu de ma sincérité et de mon besoin spécifique et je vous remercie à l’avance de votre compréhension et de votre aimable aide pratique.

    A+

    Steph

  7. #7
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 381
    Points : 10 410
    Points
    10 410
    Par défaut
    Salut,

    Pas mieux que rawsrc.

    Modifier et faire évoluer des scripts demande des connaissances que vous n'avez pas puisque vous ne comprenez pas les réponses. Je ne dis pas que vous n'avez aucune connaissance mais vous n'avez pas les bases nécessaires.

    Comment voulez-vous apprendre sur des exemples complexes ? Avec votre méthode de travail vous obtenez des scripts non adaptés qu'il faudra beaucoup plus de cinq minutes à corriger. Et si l'architecture n'est pas bonne alors c'est toute la structure de navigation qu'il faudra revoir.

    La méthode de travail pour progresser est de reproduire le schéma de fonctionnement souhaité dans des exemples simples dans des pages spécifiques, sans utiliser votre script. Ensuite vous pourrez monter en puissance et projeter le système dans votre script.

    Si vous pensez pouvoir éviter ces étapes vous n'irez nulle part dans la compréhension du développement. Dans ce cas vous pourrez vous contenter d'utiliser des CMS avec les fonctionnalités proposées mais pas plus.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 55
    Points : 22
    Points
    22
    Par défaut
    Bonjour,
    Ah on progresse, merci.
    Vous indiquez que le codage pour ces 2 petits exemples est complexe.
    Ce qui est une surprise.
    C’est respectable, et j’espère que ce point de vue est partagé par les autres visiteurs de ce fil.
    Pour le reste chacun est libre de procéder comme il le souhaite et je ne partage pas vos méthodes.
    J’ai besoin de voir comment se traduit en code une structure simple, après je peux avancer plus clairement (est-ce de l’intuition féminine ?).
    Je ne pense pas que l’avenir soit aussi apocalyptique que vous le prévoyez tous les 2, surtout après le défaut d’appréciation précédent sur notre savoir-faire actuel.
    Vous êtes tous les 2 des prestataires web professionnels, en freelance ou en société, donc je comprends que si je veux obtenir un devis pour la réalisation de mes 2 petits exemples (à mes risques et périls, s’entend) il me suffit de vous envoyer un message privé n’est-ce pas ?
    Le site existe et fonctionne très bien, le progrès même attractif via mysql peut attendre des jours meilleurs.
    Mais comme ce forum s’affiche comme un lieu d’entraide, ce que j’ai pu déjà constater avec plaisir à quelques reprises (je n’abuse pas), j’attendrai pour voir si quelqu’un peut aider, sinon nous passerons notre chemin.
    A+, Steph

  9. #9
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Le truc c'est que ton problème est loin d'être une structure simple...
    Gérer un menu dynamique sous forme arborescente est loin d'être évident surtout quand on débute.
    Ensuite pour ce qui est de gérer les données, il faut au minimum dans votre cas maîtriser les jointures et cela ne semble pas être le cas pour l'instant.

    Tiens voici une discussion relative à la génération dynamique d'un menu arborescent ici et tu vas te rendre compte par toi-même que cela n'est pas si évident.

    Ce que le sieur ABCIWEB et moi-même essayons de te faire passer comme message, c'est que sans une pratique préalable des bases en développement web, tu vas être amenée à poser un sacré paquet de questions pour réaliser une petite partie de ton projet. C'est tout, il n'y a pas de jugement ou d'attaque personnelle, juste une mise en garde au regard de la difficulté.

    Ne te trompe pas, ici tout le monde répond bénévolement aux questions des apprenants, chacun essaie de partager au mieux son savoir en fonction de paramètres qui sont personnels. Et crois-moi, DVP n'est pas le meilleur endroit pour gagner sa vie...

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 55
    Points : 22
    Points
    22
    Par défaut
    Bonjour,
    Dont acte.
    Et tout de suite je corrige un motif d’incompréhension (notamment si cela crée la dite complexité).
    Pas besoin de se fixer sur le menu dynamique sous forme arborescente, on peut laisser le menu statique à ce stade, donc ce serait au départ, sans lettre de l’alphabet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <li><a href="briseisChaza.php"><i>briseisChaza.php</i></a></li>
    , etc.
    Et comme je l’ai déjà dit ce menu n’est pas obligé d’être généré par MySql à ce stade.
    Mais faut-il changer le code pour ajouter des instructions-requêtes PHP qui adressent MySql pour la page standard (1ère question).
    Et surtout, que devient le début de notre page standard pour NomIndex ?
    Sachant que (je recopie)… le contenu briseisChaza figure en entier (et pas plus) dans une des lignes du 4ème champ appelé codeindex de taxabase1, que dans le champ 1 de la même table taxabase1 appelé Rk_Hist (clé primaire, nombres entiers) de la même ligne, il y a un nombre, 124, et qu’il faut extraire pour la même ligne 124 (toujours champ 1), cette fois dans taxabase6, le contenu du 28ème champ appelé nom_index et le copier après <p>Nom Index: <b>.

    Je comprend la mise en garde et je m'engage à ne pas solliciter à nouveau le forum avant d'avoir encore plus approfondi (plusieurs mois), une fois mes 2 codes obtenus.
    Je veux juste commencer "my way".
    Merci de votre coopérative attention et peut-être de votre aide,

    Steph

  11. #11
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2014
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2014
    Messages : 31
    Points : 42
    Points
    42
    Par défaut
    Bonjour,

    Concernant votre projet vous voulez seulement mettre à disposition des futurs utilisateurs de votre application, une liste de ressources (images, textes… ), donc des informations qui seront affichées après que ces derniers aient sélectionné l’identifiant de l’objet en question dans le menu de gauche ?

    Bon déjà avant de rentrer dans le vif du sujet et dans le technique de plus bas niveau, il faut je pense revoir l'architecture client-serveur des applications web très rapidement.

    L'utilisateur consulte les pages web sur son navigateur coté client, donc sur son propre poste de travail. Apres certaines interactions avec cette page par l’intermédiaire du même navigateur, l'utilisateur envoi une requête http à un serveur http installé sur une machine hébergeant l'application. (ex : Typiquement et simplement l’interaction avec un lien).
    Ensuite le serveur appel le bon script et avec l'aide d'un programme permettant d'interpréter le langage, le code du script en question est alors exécuté. Il formalise une réponse généralement du html qui sera interprétable par le navigateur du client.
    Dans la plupart des cas, ce script va consulter une base de données pour l'aider à formaliser sa réponse et ainsi créer une réponse dite dynamique.
    Veuillez voir ci-dessus une description classique, simple, non exhaustive ou bien entendu d’autre méthodes de fonctionnement et d’autres architectures plus complexes, détaillées ou même différentes peuvent s’y substituer.

    Il y a donc trois principaux acteurs, le client (utilisateur par l’intermédiaire de son navigateur web), l'application hébergée sur une machine qui possède un serveur http (apache, iis) et l’interpréteur de code(PHP) et enfin un serveur de base de données.

    Pour votre application, vous devez alors créer un script php qui selon les paramètres reçu interrogera la base en exécutant une requête. A la réception des données le script va formaliser la réponse et la renvoyer au client initial.

    Vous allez être soumis à différents problèmes comme celui de la connexion à la base de données, la syntaxe PHP, la syntaxe SQL, la logique du SQL (si vous en venez à créer des requêtes plus complexes (jointure, union, intersection, sous requête, group by, agrégats…)) et surtout la vision global du fonctionnement et de l'architecture client-serveur.

    Toujours est -il que si mon premier paragraphe est correct et que vous voulez uniquement piocher des données, les formaliser et les afficher dans une page web après que l'utilisateur ai choisi l'objet qui l'intéressait, alors je veux bien vous donner un coup de main en rentrant dans le plus technique.

    Concernant les messages précédant ils n'ont pas complètement tord même si parfois dans la forme il y aurait quelques progrès à faire. Je suis partisan de partir du plus haut et de rentrer dans la technique ensuite. Je pense qu'il ne faut pas négliger les généralités qui apportent une vision plus globale des disciplines et qui aident à leur compréhension, même si concrètement et dans votre cas elles ne font pas directement avancer le problème.

    Cordialement

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 55
    Points : 22
    Points
    22
    Par défaut
    Bonjour,

    Merci de votre coopération et de votre soutien.

    J'ai déjà pas mal travaillé avec des livres et tout ce que vous avez écrit m'est familier (conceptuellement parlant).
    D'ailleurs pour créer la BDD et la placer chez l'hébergeur il ne faut pas y aller au hasard.
    Pour répondre directement à votre question c'est tout à fait cela <<<une liste de ressources (images, textes… ), donc des informations qui seront affichées après que ces derniers aient sélectionné l’identifiant de l’objet en question dans le menu de gauche>>>, et ce dans 95% des cas.
    Le reliquat est plus compliqué mais on verra le moment venu et puis on apprendra avec déjà ce premier palier.

    Dites-moi ce que je peux faire pour aller plus loin avec vous.

    A+, Steph

  13. #13
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2014
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2014
    Messages : 31
    Points : 42
    Points
    42
    Par défaut
    Bon alors déjà il faut voir ce qui importe le plus pour vous, la finalité, donc de faire un site rapidement et fonctionnel pour répondre à un besoin ou l'apprentissage, afin d'acquérir de bonnes compétences en développement.

    Il faut savoir que l'informatique est assez "ingrat" et prend beaucoup de temps en terme d'apprentissage, il faut même des années pour sortir la tête de l'eau et pour commencer à appréhender vraiment la matière. J'apprend moi même des nouvelles choses régulièrement.

    Ensuite la deuxième question est celle-ci : quel est votre niveau? Quand je lis "D'ailleurs pour créer la BDD et la placer chez l'hébergeur il ne faut pas y aller au hasard.", çà me fait un peu peur. Ne le prenez surtout pas mal, mais cela semble être du b.a.-ba. Avez vous des notion de POO et si oui sont-elles solide? les termes polymorphisme, encapsulation, classe, objet, héritage, interface, réflexion... vous parlent'ils? Avez vous des bases en algorithmique, connaissez vous les structure de base de php pour écrire un programme (for, if, foreach, case, while)? Connaissez vous certains pattern de conception (MVC) et certains framework (symfony, angular...)...

    Bref sur une échelle de 1 à 20 comment estimez vous votre niveau (soyez très sévère).

    Avez vous conscience que vous allez manipuler du html/css/javascript coté client et du php (j'imagine) coté serveur ainsi que du SQL, quel est votre niveau sur ces langages? Connaissez vous JQuery qui vous sera utile pour uniformiser l’interprétation du javascript dans les différents navigateurs et facilitant la manipulation du dom... (page html grosso modo)?


    Sinon pas de panique à vu de nez l'application semble très simple et standard avec du travail tout devrait bien ce passer.


    Un conseil lors de la résolution d'un problème et il y en aura beaucoup, la recherche intelligente de la solution et sa compréhension sont plus importantes que la solution elle même. En informatique l'esprit d'analyse est CAPITAL. Ensuite je trouve et c'est personnel l'apprentissage de la conception et du développement est rude, long et difficile donc ne pas se décourager.


    Qu'avez vous comme plateforme de développement en local? Je vous conseil un package easy php, mysql, apache.
    Utilisez vous un IDE?

    Pour ce weekend cherchez easy php et installez le et essayez de répondre le plus précisément possible a l'ensemble des questions ci dessus.

    Dernière chose voulez vous plus une application web très dynamique du type effectuant des appels ajax ou plutôt du classique?

    Cordialement.

    PS vous avez je crois parlé de devis à un moment dans vos messages précédents, me concernant je fais du benevola, l'aide est gracieuse donc pas d’inquiétude de ce coté.

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 55
    Points : 22
    Points
    22
    Par défaut
    Bonjour,

    Merci beaucoup nikopol44 d’alimenter ce fil et de votre proposition de bénévolat.
    Je ne comprend pas bien la démarche.
    J’ai vraiment travaillé sur le bouquins et pas seulement les premières pages et j’ai fait les exos proposés et pas seulement les premiers !
    Bien sûr j’ai installé Wamp (pas easyphp, mais c’est pareil) et je le maîtrise assez.
    J’ai même écrit des requêtes semi-automatiques.
    Donc je vois pas bien tous ces préambules.
    Je n’ai pas trouvé d’exemples dans les bouquins tels que ceux que je présente et comme je bloque c’est pour cela que j’ai posté ce fil.
    Le site existe déjà, et avec votre aide sur les 2 exemples on va pouvoir démarrer mais PAS faire le même site cloné en php-mysql en 2 coups de cuillérées à pot !!!
    Même si 95% des requêtes sont simples elles ne sont pas identiques aux 2 exemples cités.
    Chaque requête sera différente (avec des conditions spécifiques pour chaque), donc je ne demande pas que l’on me fasse le site, mais de me donner un coup de pousse pratique.
    Donc l’objectif n’est pas d’apprendre mais de démarrer et il n’y a pas de date (tout baigne déjà en statique). Pas d’ajax du simple php orienté objet.

    A+
    Steph

  15. #15
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2014
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2014
    Messages : 31
    Points : 42
    Points
    42
    Par défaut
    OK,
    Bon le plus simple, vous envoyez l'identifiant de l'objet a consulter en get (dans l'url) au service envoyant au client la page HTML avec les informations que le client souhaite consulter.

    donc il vous faut un lien de type <a href="http://www.monsite.com/affichageMonObjet.php?identifiant=numeroIdentifiant>Objet a consulter</a>

    ENSUITE COTE SERVEUR QUI VA GENERER L'AFFICHAGE A ENVOYER AU CLIENT
    DANS VOTRE SCRIPT affichageMonObjet.php

    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
    <?php
    // je renvoie grâce a la fonction echo une chaîne de caractères au client initiant la structure d'une page web
            echo "<html><body>";
     
    //Je prépare les paramètres pour l’instanciation d'une objet de type PDO
    //PDO bibliothèque, couche d’abstraction facilitant la connexion à la base de données et exécution des requêtes
            $PARAM_hote = 'localhost'; // le chemin vers le serveur
            $PARAM_port = '3306';
            $PARAM_nom_bd = 'sdz'; // le nom de votre base de données
            $PARAM_utilisateur = 'root'; // nom d'utilisateur pour se connecter
            $PARAM_mot_passe = ''; // mot de passe de l'utilisateur pour se connecter
     
     
    // on instancie un objet de type PDO qui va nous permettre de nous connecter à la base et d'effectuer des requêtes
            try
            {
                $connexion = new PDO('mysql:host=' . $PARAM_hote . ';dbname=' . $PARAM_nom_bd, $PARAM_utilisateur, $PARAM_mot_passe);
            } catch(Exception $e) {
                echo 'Erreur : ' . $e->getMessage() . '<br />';
                echo 'N° : ' . $e->getCode();
            }
     
    // Je prépare la requête paramétrée pour éviter l'injection SQL
            $requete = $connexion->prepare("SELECT monChamp1, monChamp2 FROM maTable where identifiant = :id ");
    // j’exécute la requête en mettant dans le paramètre précédent le contenu de la variable envoyée au serveur via l'url
    $requete->execute();
    // On parcours les resultats 
            while($ligne=$requete->fetch(\PDO::FETCH_OBJ)){
    //L'objet ligne correspondant à la ligne courante des résultats en cours de lecture
    //Pour chaque ligne je consulte les champs associés par l’intermédiaire des attributs du même nom de l'objet ligne courant 
                echo '<div>'.$ligne->monChamp1 . ' ' . $ligne->monChamp2 . '</div>';
            }
     
     
            echo '</body>';
            echo '</html>';
    SI vous rencontrez un problème bien mettre l'erreur envoyée par le serveur dans votre réponse.

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 55
    Points : 22
    Points
    22
    Par défaut
    Bonjour,

    Merci beaucoup nikopol44 d’alimenter ce fil avec patience.
    On progresse sensiblement, et je vois maintenant plein de parallèles avec des exemples dans les bouquins que je ne trouvais pas idoines... il me manque juste de quoi me raccrocher à mon exemple concret.

    Je vais me concentrer dans mes commentaires à l’exemple demandé car je suis déjà au fait des ‘echo’ de simple texte, de l’appel de la base en PDO avec les $PARAM (les bouquins excellent dans ces choses générales nécessaires) et dans la prévention de l’attaque par injection (idem) (mais là votre code est particulièrement clair).

    Si je comprend bien pour mon menu statique (hors js), je dois faire (au moins dans un 1er temps) une longue liste du type
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <li><a href="http://www.abc.org/affichageMonObjet.php?identifiant=numeroIdentifiant>Blabla</a></li>
    affichageMonObjet peut être remplacé, pour être concret, par : ‘listetaxa’ ?
    numéroidentifiant, là je peux prendre un numéro (le nombre unique est dans le 1er champ Rk_Hist qui est la clé primaire de nombreuses tables, y compris de la table taxabase1), même si j’aurais préféré utiliser le nom unique qui est dans le 4ème champ appelé codeindex de la table taxabase1 (car il y a des tables de structure différente et alors, dans ces cas-là, la clé primaire est un nombre entier qui n’a plus de rapport avec celui de la table taxabase1)
    Blabla sera le 3ème champ appelé nominverse de la table taxabase1, toujours pour la même ligne (ou, comme indiqué ci-dessus le même nom unique, dans le 4ème champ appelé codeindex de la table taxabase1)
    Ne faut-il pas assortir ce numeroIdentifiant d’un attribut pour indiquer qu’il est dans le champ appelé Rk_Hist et dans la table taxabase1 ?
    Idem si l'on peut utiliser le nom unique qui est dans le 4ème champ appelé codeindex de la table taxabase1 à la place du numeroIdentifiant?
    Car ce n'est le hasard si on a choisi le nom unique plutôt que le numéro associé (pour des raisons d'actualisation), mais cela doit être plus difficile comme code, d'aller chercher le nom unique, puis le numéro de ligne associé (comme indiqué dans le premier message).


    Pour la requête (simplifions, n’en prenons qu’une seule) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $requete = $connexion->prepare("SELECT nom_index FROM taxabase6 where identifiant = :id ");
    $requete->execute();
    while($ligne=$requete->fetch(\PDO::FETCH_OBJ)){
        echo '<div>'.$ligne-> nom_index . ' ' . '</div>';
    }
    ... ici, juste un commentaire… comme indiqué monChamp1 est nom_index, mais je voulais copier le résultat après un titre et ‘ :’ comme <p>Nom Index: <b>[résultat]</b>... comment ? ainsi :
    echo '<p>Nom Index: <b>'.$ligne-> nom_index . '</b></p>'; ?
    Et ma requête suivante ? pour que cela reste clair pour moi, et même si c'est plus lourd, puis je la faire en reprenat tout le paragraphe?
    Sinon si j'écris comme vous pour les 2 requêtes, cela va faire très long car j'ai au moins 200 requêtes différentes certaines avec des "if" (plus ou moins imbriqués) avec "else", des calculs (avec mes bouquins) et d'autres plus complexes qu'il faudra sans doute que je délègue à des pros un jour.
    Mais là j'ai du pain sur la planche pour au moins 1 mois.

    Voilà j’ai essayé d’être précise sans lourdeur.
    Je suis seulement dans le concret !
    Avec vos réponses, je peux commencer à travailler avec le serveur.
    Tester, re-tester... et apprendre!
    Et à revenir sur les bouquins.

    Merci encore de votre aide

    Steph

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 55
    Points : 22
    Points
    22
    Par défaut
    Bonjour,

    Plus de nouvelles ?
    Le fil s’interrompt après de belles promesses ?

    Dans mon domaine (financier) on appelle cela un coup d’accordéon.
    Je serai curieuse de savoir comment cela s’appelle chez les pros de l’informatique.

    Donc ce fil peut être considéré comme avorté.

    Steph

  18. #18
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2014
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2014
    Messages : 31
    Points : 42
    Points
    42
    Par défaut
    D'habitude je reçois des emails me notifiant qu'un message succédant le mien a été posté, email qui, je pense, est passé à la trappe. Je vais tacher de regarder ça dans la journée.

  19. #19
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2014
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2014
    Messages : 31
    Points : 42
    Points
    42
    Par défaut
    Bonjour,

    Déjà concernant le silence, je vous rappelle que vous avez la possibilité d’envoyer des messages personnels de par le site, qui m’alerteront sans que je doive régulièrement consulter les forums du site, cela vous permettrait de ne pas crier au loup immédiatement.
    Cependant le message de la part du site m’indiquant qu’une réponse avait été apportée à la discussion ne m'a pas été communiqué.

    Sinon concernant votre message.

    Si je comprend bien pour mon menu statique (hors js), je dois faire (au moins dans un 1er temps) une longue liste du type
    Il serait nécessaire de créer un menu dynamique généré par le serveur après une requête sur l’ensemble de vos objets. Cependant un menu statique créé à la main peut dans l’absolu fonctionner. IL serait effectivement de ce type.

    affichageMonObjet peut être remplacé, pour être concret, par : ‘listetaxa’ ?
    Oui pourquoi pas, sous réserve de créer un fichier listeaxa.php à la racine de votre répertoire public sur le serveur (répertoire accessible par l’url www.abc.org).


    numéroidentifiant, là je peux prendre un numéro (le nombre unique est dans le 1er champ Rk_Hist qui est la clé primaire de nombreuses tables, y compris de la table taxabase1),
    Concernant identifiant=numeroIdentifiant, vous pouvez (ce qui est recommandé) utiliser un identifiant technique unique permettant de sélectionner l’objet concerné en base de données, généralement la clef primaire de la table contenant les ressources que vous voulez gérer.
    Cependant, rien ne vous empêche d’envoyer les informations d’un autre champ au serveur pour créer la requête, encore plus si le contenu de ce champ est unique en base de données pour la table concernée. Il faudra seulement revoir la requête. Ce ne sera plus « select * fom matable where PK = identifiant mais select * from matable where champConcerné (codeindex ) = valeurChampEnvoyéParLeNavigateur

    Ne faut-il pas assortir ce numeroIdentifiant d’un attribut pour indiquer qu’il est dans le champ appelé Rk_Hist et dans la table taxabase1 ?
    Je ne comprends pas bien, j’ai l’impression que vous envoyez au serveur un numéro d’identifiant et que vous allez requêter sur des tables ou des champs aléatoires en fonction de la ligne sur laquelle le client aura cliqué. Sinon je ne vois pas pourquoi il serait nécessaire d’envoyer le paramètre RK_Hist et taxabase1.
    Si en fonction de la ligne sélectionnée, vous requêtez sur un champ ou une table différente, rien ne vous empêche de générer une requête de ce type :
    http://www.abc.fr?table=maTableSurLa...rementConcerne

    En ce qui concerne ce passage :
    ... ici, juste un commentaire… comme indiqué monChamp1 est nom_index, mais je voulais copier le résultat après un titre et ‘ :’ comme <p>Nom Index: <b>[résultat]</b>... comment ? ainsi :
    echo '<p>Nom Index: <b>'.$ligne-> nom_index . '</b></p>'; ?
    Et ma requête suivante ? pour que cela reste clair pour moi, et même si c'est plus lourd, puis je la faire en reprenat tout le paragraphe?
    Sinon si j'écris comme vous pour les 2 requêtes, cela va faire très long car j'ai au moins 200 requêtes différentes certaines avec des "if" (plus ou moins imbriqués) avec "else", des calculs (avec mes bouquins) et d'autres plus complexes qu'il faudra sans doute que je délègue à des pros un jour.
    Mais là j'ai du pain sur la planche pour au moins 1 mois.
    Sincèrement je ne comprends pas, j’ai vraiment essayé, il va falloir me donner plus d’explications et ceci d’une manière un peu différente, s’il vous plait.
    Par contre, si la première partie du paragraphe porte sur la concaténation ,
    echo '<p>Nom Index: <b>'.$ligne-> nom_index . '</b></p>'; ?
    cela va vous générer un ensemble de paragraphes avec la valeur nom_index en gras et précédé de " Nom Index : ".
    Ça vous auriez pu le tester.

    Cordialement et n’hésitez pas à continuer à poster vos interrogations.

  20. #20
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 55
    Points : 22
    Points
    22
    Par défaut
    Bonjour Nikopol,


    Merci… c’est vraiment agréable de ne pas être abandonnée.
    Je posterai un message privé, promis.

    Pour le menu gauche, oui le menu dynamique c’est prévu, mais je me le garde pour plus tard.
    Vos autres réponses sont claires.
    Pour finaliser ce post, je répond à vos demandes d’éclaircissement :
    <<< Je ne comprends pas bien, j’ai l’impression que vous envoyez au serveur un numéro d’identifiant et que vous allez requêter sur des tables ou des champs aléatoires en fonction de la ligne sur laquelle le client aura cliqué. Sinon je ne vois pas pourquoi il serait nécessaire d’envoyer le paramètre RK_Hist et taxabase1.>>>
    En fait on a dû faire plusieurs tables similaires car c’était impossible de tout rentrer dans une table (pour imager, c’est un peu comme si sur un fichier excel on avait figé la 1ère colonne).
    Elles sont similaires car le 1er champ est le même numéro correspondant au même blablaX, ligne à ligne, dans toutes ces tables-là (bien sûr les champs sont différents !).
    Par exemple, si j’appelle dans mon menu gauche, blablaX, et que je l’associe à son numéro 124 dans RK_Hist de taxabase1, c’est le même numéro 124 qui est associé pour le même blablaX par exemple dans taxabase6 contenant d’autres infos que celle de taxabase1.
    Donc rien d’aléatoire ou de hasard. C’est même assez bestial.

    Donc si ce qui précède est clair vous comprenez mieux ma seule question restante.
    Le boulot basiquement est pour le blabla appelé (blablaX, numéro 124) d’aller chercher des infos toujours dans cette ligne là (et aucune autre) les infos champ par champ à chaque fois dans une table spécifiée, soit, à l’affichage, item par item, environ 200 fois, précédé d’un titre et à chaque fois séparé par une nouvelle ligne.

    Vous écriviez (1er message)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    // Je prépare la requête paramétrée pour éviter l'injection SQL
            $requete = $connexion->prepare("SELECT monChamp1, monChamp2 FROM maTable where identifiant = :id ");
    // j’exécute la requête en mettant dans le paramètre précédent le contenu de la variable envoyée au serveur via l'url
    $requete->execute();
    // On parcours les resultats 
            while($ligne=$requete->fetch(\PDO::FETCH_OBJ)){
    //L'objet ligne correspondant à la ligne courante des résultats en cours de lecture
    //Pour chaque ligne je consulte les champs associés par l’intermédiaire des attributs du même nom de l'objet ligne courant 
                echo '<div>'.$ligne->monChamp1 . ' ' . $ligne->monChamp2 . '</div>';
            }
    Il me faudrait quelquechose du type (c’est erroné bien sûr)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      $requete = $connexion->prepare("SELECT monChamp1 FROM maTable1 where identifiant = :id ");
            $requete = $connexion->prepare("SELECT monChamp2 FROM maTable2 where identifiant = :id ");
    $requete->execute();
            while($ligne=$requete->fetch(\PDO::FETCH_OBJ)){
                echo '<div>'.$ligne->monChamp1 . '</div>';
                echo '<div>'.$ligne->monChamp2 . '</div>';}
    Et soyons pragmatiques, car c’est cela que je vise, il me faudrait quelquechose du type (et c’est toujours aussi erroné, je suis toujours débutante… corrigez-moi, svp)
    Dans le menu gauche (maintenant je n’utilise plus que la clé primaire de taxabase1, ici Rk_Hist=124, identique dans les autres tables taxabase, et j’oublie l’identifiant unique du champ 4 car il ne se trouve que dans taxabase1) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <a href="http://www.abc.org/v?identifier=124>BlablaX</a>
    Dans mon listetaxa.php
    // j’ai remplacé identifiant par sa traduction identifier, à moins que cela ne soit ‘key’
            $requete = $connexion->prepare("SELECT nom_index FROM taxabase1 where identifier = id "); // j’ai enlevé les ‘:’ avant id
            $requete = $connexion->prepare("SELECT nom_complet FROM taxabase6 where identifier = id "); // j’ai enlevé les ‘:’ avant id
    //(etc., etc., 200 fois)
    $requete->execute();
            while($ligne=$requete->fetch(\PDO::FETCH_OBJ)){
               echo '<p>Nom Index: <b>'.$ligne-> nom_index . '</b></p>';
               echo '<p>Nom Complet: <b>'.$ligne-> nom_complet . '</b></p>';
    //(etc., etc., 200 fois)
    }
    Outre que ce qui précède est, sur le plan du code, « farci » de mes erreurs, il y a le problème de l’absence de mention du Rk_Hist pour aller chercher le 124 et pas un autre dans différentes tables taxabase (peut-être dans la partie du code avec identifier ou bien s’agit-il de ces fameuses jointures…oups, je me trompe peut-être… cela pourrait être avec la variable $ligne…pas encore solide la pin-up !).

    Voilà, on est presque sur la fin pour ce post, enfin je crois.
    A+
    Steph

Discussions similaires

  1. [MySQL] Inserer une page de login (en php/mysql) sur site deja existant
    Par ludovic787 dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 03/02/2016, 13h36
  2. Une question de débutant sur les conditions
    Par pierrot10 dans le forum Langage
    Réponses: 12
    Dernier message: 08/01/2012, 14h30
  3. Questions de débutant sur le cache php
    Par maxence64 dans le forum Langage
    Réponses: 1
    Dernier message: 30/11/2011, 10h03
  4. [c#] une question de noob... sur les textbox
    Par warenbe dans le forum Windows Forms
    Réponses: 3
    Dernier message: 02/08/2005, 23h13
  5. question de débutant sur les objets
    Par boucher_emilie dans le forum ASP
    Réponses: 3
    Dernier message: 06/08/2004, 10h51

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