web-dev-qa-db-fra.com

Utiliser les données de la base de données mySql directement pour générer des articles pour mon site Web? (débutant, a besoin de savoir par où commencer))

Bonjour à tous Je suis assez nouveau dans le développement Web, j'ai créé quelques-uns de mes propres sites au fil des ans avec des tableaux HTML simples et des hébergeurs gratuits.

Cette fois, j'ai décidé d'essayer d'héberger mon propre site en utilisant le serveur WAMP et tout semble fonctionner correctement. J'ai utilisé un modèle html/css qui est assez simple, tout en conservant certaines fonctionnalités sophistiquées, et j'ai à peu près compris comment l'éditer à mon goût.

Ceci est purement pour mon propre plaisir/apprentissage. Je crée un site Web qui répertorie des informations sur les séries télévisées. Donc, ma base de données s'appellera "Shows". Il aura 6 champs (id, genre, titre, imageurl, description, httplink).

Ce que je veux faire, c'est générer mon propre "modèle d'article" qui utilisera les 6 de ces données pour remplir certains champs inclus dans le code HTML (si cela est possible - je ne suis pas sûr, mais je suis assez expérimenté en codant des jeux/applications en c #/Java et j’utilisais parfois des bases de données dans ces jeux, j’espère donc que la technique est un peu similaire!?)

Donc, ce que j'ai actuellement, c’est a) un site Web auto-hébergé, confirmé au public déjà b) une page de renvoi d’index html avec des CSS personnalisées à mon goût (à l’intérieur du html, j’ai créé une "section" qui contient mon modèle d’article.

Jusqu'à présent, mon modèle d'article ressemble à ceci:

<!--Article One -->
            <section class="wrapper style1">
                <div class="inner">
                    <header class="align-center">
                        <h2>DUMMY TITLE FIELD</h2>
                        <!-- will need to pull these fields including image url from database -->
                        <img src="http://xyz.image.url/images/123.jpg"> 
                        <p>DUMMY DESCRIPTION FIELD, DUMMY DESCRIPTION FIELD, DUMMY DESCRIPTION FIELD, DUMMY DESCRIPTION FIELD, DUMMY DESCRIPTION FIELD, DUMMY DESCRIPTION FIELD, DUMMY DESCRIPTION FIELD</p>
                    </header>
                </div>
            </section>

Donc, je veux que l'utilisateur puisse trier par genre, par exemple, et je veux remplir automatiquement les articles avec toutes les émissions de ma base de données avec ce genre. Et bien sûr, cela inclut la création du code HTML ci-dessus à la volée, mais le remplacement du texte de débogage par des variables réelles afin qu’il puisse le remplacer par le texte de la base de données (j’espère que cela a un sens !!)

Vraiment, je voudrais juste connaître le nom de ce processus, afin que je puisse google un bon guide actuel (à moins bien sûr que vous puissiez le taper facilement, ce qui serait encore mieux pour moi!), Aussi désolé si cela a déjà été fait. été demandé ici. Je cherchais tous les types de tutoriels html/css/Apache/php/mySql et je suis un peu confus.

J'espère vraiment que quelqu'un pourra vous aider. Merci beaucoup

3
Big T Larrity

Vous recherchez deux solutions différentes. La génération d'articles à partir de MySQL nécessite un code backend tel que Java ou PHP, ainsi que la base de données MySQL. Le tri nécessite un code frontal comme javascript. J'y reviendrai plus tard.

Pour certains exemples de code (ne pas copier et coller ceci), j’ai utilisé PHP pour vérifier la base de données et afficher votre code article dans une boucle While.

<?php

// Establish how to log in
$servername = "127.0.0.1";
$username = "root";
$password = "yourpasswordhere";
$dbname = "yourdatabasenamehere";

// create the database connection
$db = new mysqli($servername, $username, $password, $dbname);

// if it fails, kill the site.
if (mysqli_connect_error($db)) {
    die("Connection failed: " . mysqli_connect_error($db));
}

// your first query to grab all the article data
$SQL_Query = "SELECT * FROM your_table";
// run the query
$SQL_Run = mysqli_query($db, $SQL_Query);

// while data exists (it makes sure that you have post data, otherwise nothing shows up)
while ($row = mysqli_fetch_assoc($SQL_Run)) {
    echo 
    "<section class='wrapper style1'>
    <div class='inner'>
        <header class='align-center'>
            <h2>" . $row['imageurl'] . "</h2>
            <img src='" . $row['title'] . "'> 
            <p>" . $row['description'] . "</p>
        </header>
    </div>
</section>";
}

// Close the connection
mysqli_close($db);
?>

Ce que cela fait est de parcourir en boucle chaque entrée stockée dans la base de données et de construire votre article HTML que vous avez collé ci-dessus. Chaque valeur est stockée dans la variable "$ row" en boucle. Vous pouvez échanger les noms de colonne contre les données de votre choix.

Procédure PHP Vous devez construire une déclaration et l'enregistrer dans une variable. Je me réfère habituellement à cela comme une requête dans le nom de la variable. Exemple: $ SQL_Query.

Ensuite, vous devez exécuter la requête via votre base de données. Exemple: $ SQL_Run

Après cela, vous avez deux options communes. S'il y a plus d'une ligne, vous pouvez faire une boucle while pour les parcourir toutes, ou si vous ne renvoyez qu'une seule ligne (si vous recherchez une publication spécifique), vous pouvez la récupérer et la sauvegarder dans une variable.


Pour ajouter des fonctionnalités de tri, vous pouvez rechercher une bibliothèque javascript telle que JqueryUI ou ListJS. Personnellement, j'utilise ListJS car il est assez facile à mettre en œuvre http://listjs.com/


Répondre à la question de OP

1) est la boucle 'While' identique à la boucle 'for' dans c # etc?

Les boucles For et While sont différentes, mais fonctionnent de la même manière par rapport à C # et PHP. Les boucles While s'exécutent indéfiniment jusqu'à ce qu'une condition soit remplie et les boucles For s'exécutent pendant une durée définie.

2) le code de votre boucle while est-il exécuté préalablement à $ SQL_Run?

Non, $ SQL_Run enregistre toutes les informations de votre base de données (toutes les lignes et toutes les valeurs) dans la variable. Ensuite, la boucle while s'exécute sur cette variable.

) Est-ce que $ SQL_Run est une fonction que je dois écrire quelque part?

$ SQL_Run est une variable définie par l'utilisateur. mysqli_query () est une fonction php intégrée qui nécessite une connexion à une base de données et votre déclaration MySQL.

4) comment accéder à la valeur d'une variable donnée ($ row) pour l'analyser dans le document html et ​​

Vous pouvez y accéder de la même manière dans l'exemple, $ row ['nom de la colonne ici'].

5) puis-je l'utiliser pour empiler ces blocs html dans un fichier index.html préexistant (ou toute autre page) ou dois-je créer une nouvelle page complètement? en fonction du nombre de résultats renvoyés?

Ce code doit faire partie d'un fichier php. Heureusement, les fichiers PHP fonctionnent exactement de la même façon que les fichiers HTML. Réenregistrez votre index.html sous index.php et votre code HTML fonctionnera correctement :)

C'est aussi la fonction mysqli_fetch_assoc ()) que je ne connais pas, est-ce que cela a été écrit par nous en tant que développeurs ou fait partie de bibliothèques SQL?

C'est une fonction intégrée. utilisez toujours mysqli lors de l'exécution du code de base de données, car il est sécurisé. https://www.w3schools.com/php/func_mysqli_fetch_assoc.asp

Je vois maintenant que $ SQL_Run est appelé depuis la boucle while. Je ne comprends pas non plus ce que mysqli_query () est exactement.

la fonction mysqli_query () récupère toutes les données de votre instruction SQL et les stocke toutes dans la variable $ SQL_Run. C'est comme enregistrer un fichier Excel de données dans une seule variable. Vous pouvez faire ce que vous voulez après

2
Zach Voss