как перебрать таблицу базы данных и выбрать все с одинаковым «типом».Использование php и sql - PullRequest
0 голосов
/ 27 ноября 2011

Я пытаюсь перебрать все таблицы в моей базе данных и выбрать все, что имеет тот же тип.Следующий код работает, ожидая, что он напечатает только первую найденную запись.Например, если кто-то выбирает «курицу» для просмотра рецептов, он извлекает первый рецепт курицы в этой базе данных, и вот он.Мне нужно, чтобы он прошел через все рецепты с курицей.Я искал разные способы приблизиться к этому, и ни один не работал.Цикл for, который я пытался использовать в этом, также неверен, поэтому, если у кого-то есть хороший подход к этому, пожалуйста, дайте мне знать!Также в моем html-коде все категории имеют одно и то же имя "cate", но разные значения.Если это поможет.

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
    <head>
    </head>
    <body>

        <?php
        $db_server = "server";
        $db_username = "name";
        $db_password = "pass";

        $con = mysql_connect($db_server, $db_username, $db_password);
        if (!$con) {
            die('Could not connect: ' . mysql_error());
        }

        $database = "Recipes";

        $er = mysql_select_db($db_username);
        if (!$er) {
            print ("Error - Could not select the database");
            exit;
        }
        //take info from search and looks through the database for recipe
        $cate = $_POST['cate'];
        $query = mysql_query("SELECT * FROM Recipes WHERE type ='$cate'");
        $row = mysql_fetch_array($query);
        for($row=1; $row <=$cate; $row++){
        ?>


        <!-- Prints out the recipe -->
        <table border ="1">
            <tr> <h1>
                    <?php

                    print $row['title'];
                    ?>
                </h1>
            </tr>
            <tr>
                <td>
                    <p> Ingredients: </p>
                    <?php
                    print $row['num_of_1'] . " ";
                    print $row['measure_1'] . " ";
                    print $row['ingredient_1'] . " ";
                    print ("<br />");
                    print $row['num_of_2'] . " ";
                    print $row['measure_2'] . " ";
                    print $row['ingredient_2'] . " ";
                    print ("<br />");
                    print $row['num_of_3'] . " ";
                    print $row['measure_3'] . " ";
                    print $row['ingredient_3'] . " ";
                    print ("<br />");
                    print $row['num_of_4'] . " ";
                    print $row['measure_4'] . " ";
                    print $row['ingredient_4'] . " ";
                    print ("<br />");
                    print $row['num_of_5'] . " ";
                    print $row['measure_5'] . " ";
                    print $row['ingredient_5'] . " ";
                    print ("<br />");
                    print $row['num_of_6'] . " ";
                    print $row['measure_6'] . " ";
                    print $row['ingredient_6'] . " ";
                    print ("<br />");
                    print $row['num_of_7'] . " ";
                    print $row['measure_7'] . " ";
                    print $row['ingredient_7'] . " ";
                    print ("<br />");
                    print $row['num_of_8'] . " ";
                    print $row['measure_8'] . " ";
                    print $row['ingredient_8'] . " ";
                    print ("<br />");
                    print $row['num_of_9'] . " ";
                    print $row['measure_9'] . " ";
                    print $row['ingredient_9'] . " ";
                    print ("<br />");
                    print $row['num_of_10'] . " ";
                    print $row['measure_10'] . " ";
                    print $row['ingredient_10'] . " ";
                    print ("<br />");
                    ?>
                </td>           
                <td>
                    <p> Instructions: </p>
                    <?php
                    print $row['instructions'];
                    print ("<br />");
                    ?>
                </td>
            </tr>
        </table>
        <br />

        <p> 
            Like this Recipe? Rate It!
            <input type = "submit" value = "Good Ramen" />
        </p>
        <br />
        <br />

        <p>Add a Comment: </p>
        <textarea name = "comment" rows = "10" cols = "100" > </textarea>
        <br />
        <input type = "submit" value = "Add Comment" />
        <br />
        <p> Comments: </p>
        <?php
        $comment_query = ("SELECT *");
        while ($comment_query) {
            date_default_timezone_get('UPC');
            print ($row['username'] . " ");
            print ($row['date_added']);
            print ($row['comment']);
            print ("<br />");
        }
        }
        ?>

    </body>
</html>

Ответы [ 3 ]

0 голосов
/ 27 ноября 2011

Сложно сказать, но попробуйте заменить цикл for

for($row=1; $row <=$cate; $row++){

на цикл while

while($row = mysql_fetch_array($query)){
0 голосов
/ 27 ноября 2011

привет, ты должен сделать это for ($row = mysql_fetch_array($query) ) и вы получите доступ к своим полям, например $row[fields], дело в том, что каждый раз при запуске цикла будет выполняться цикл PS: они говорят, что Querin DB в цикле это не очень хорошая идея

0 голосов
/ 27 ноября 2011

Ваш цикл должен быть таким:

for($row=0; $row < count($row); $row++){
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...