PHP MySQL не отображаются все строки таблицы - PullRequest
0 голосов
/ 03 апреля 2020

Я новичок в программировании, веб-разработке и других вещах, поэтому для развлечения я создал базу данных всех своих дисков и DVD-дисков и создал страницу html с php для подключения к базе данных mysql, а затем кто-то вводит свое имя и выбирает год, и он отображает все фильмы того года выпуска. Все это делается локально. Однако по какой-то причине при запуске он не отображает все строки. Иногда это тянет только 1 ряд, иногда это тянет 2 или 3 ряда. Просто интересно, может кто-нибудь сказать мне, что не так. У меня есть два. php файла. Форма и процессор. Оператор select, который я использовал, прекрасно работает в консоли MySQL и правильно отображает все данные. Наконец, я знаю, что CSS можно было бы лучше использовать здесь с выравниваниями и границами таблицы, и т. Д. c., Но я сейчас не на этом сосредоточен.

Форма

<?php
//variables
$strHost = "localhost";
$strUser = "root";
$strPass = "";
$strDB = "movies";
$strYear = "";
$intYearMin = 1900;
$intYearMax = 2025;
$dblYearIncrement = 1;
$strYearOptions = "";
//populate dropdown list
for ($i=$intYearMin; $i<=$intYearMax; $i+=$dblYearIncrement) {
    $strYearOptions .= "<option value=\"$i\">$i</option> \n";
}
?>
<!DOCTYPE hmtl>
<html>
    <head>
        <title>My Movie Listing: The Form</title>
        <!-- Link style sheet link rel="stylesheet" href="../styles/styleDefault.css" /> -->
        <link rel="stylesheet" type="text/css" href="./movies.css" />
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <script type="text/javascript">
            function Start(){
                    document.getElementByID("txtName").focus();
            }
    </script>
    </head>
    <body onload="Start();">
        <h1>
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        My Movies <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        <img src="./filmreel1.png" alt="Film Reel" width="68" height="60" />
        </h1>
        <h2> Movie listing by year: </h2>
        <form action="movies_1_proc.php" method="post" id="frmSale">
            <ul>
                <li>Your name: <input size="30" name="txtName" id="txtName" /></li>
                <li>
                        Year:
                        <select name="Year">
                            <option value="xxx">Choose . . . </option>
                <?php echo $strYearOptions; ?>
                        </select>
                </li>
            </ul>
            <p class="centered">
                <input type="submit" name="cmdSubmit" value="See What's Available" />
            </p>
        </form>
    <body>
<html>

Процессор и отображение результатов

<?php
//initialization
$strHost = "localhost";
$strUser = "root";
$strPass = "";
$strDB = "movies";
//get data from html form
$dblMaxYear = $_POST['Year'];
$strName = $_POST['txtName'];
$strTableBlock = "";
//build sql string based on form data
$strSQL = "SELECT * FROM movies WHERE Year = $dblMaxYear ORDER BY IF(LEFT(title,2) = 'A ',
            SUBSTRING(title FROM 3),
            IF(LEFT(title,3) = 'An ',
              SUBSTRING(title FROM 4),
              IF(LEFT(title,4) = 'The ',
                 SUBSTRING(title FROM 5),
                 title)))";
//create dbms connection and open db
$strConn = mysqli_connect($strHost,$strUser,$strPass,$strDB);
//submit a query
$strResult= mysqli_query($strConn,$strSQL);
//process query
$arrRow = mysqli_fetch_assoc($strResult);
/*echo "<br />$strResult<br />";*/
    while ($strRow = mysqli_fetch_array($strResult)) {
        $strYear = $strRow['Year'];
        $strRuntime = $strRow['Runtime'];
        $strTitle = $strRow['Title'];
        $strDirector = $strRow['Director'];
        $strFormat = $strRow['Format'];
        $strRating = $strRow['Rating'];
        $strGenre = $strRow['Genre'];
        $strRTscore = $strRow['RTscore'];
        $strTableBlock .= "
            <tr>
                <td>$strYear</td><td>$strTitle</td><td>$strDirector</td><td>$strRuntime</td><td>$strFormat</td><td>$strRating</td><td>$strGenre</td><td>$strRTscore</td>
            </tr> \n";
    }
//wrapup database processing
mysqli_free_result($strResult);
mysqli_close($strConn) or die("Crash");
//output formatting
$strMaxYear = $dblMaxYear;
?>

<!DOCTYPE hmtl>
<html xmlns="http://w3.org/1999/xhtml">
    <head>
        <title>My Movies Listing: The Processor</title>
        <!-- Link style sheet link rel="stylesheet" href="../styles/styleDefault.css" /> -->
        <link rel="stylesheet" type="text/css" href="./movies.css" />
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
        <!--<style type="text/css">
            table{
                    //margin:auto;
                    margin-left:auto;
                    margin-right:auto;
                    background-color:white;
            }
            .rightaling{
                    text-align:right;
            }
        </style>-->
    </head>
    <body>
        <h1 align = "center">
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        My Movies <br />
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        <img src="./filmreel1.png" alt="Film Reel" width="68" height="60" />
        </h1>
        <h2 align = "center"> Movies From Year <?php echo $strMaxYear; ?> for <?php echo $strName; ?>:</h2>
        <table border="2" align="center">
            <tr><th>Year</th><th>Title</th><th>Director</th><th>Runtime</th><th>Format</th><th>Rating</th><th>Genre</th><th>RT%</th></tr>
            <?php echo $strTableBlock ?>
        </table>
    <body>
<html>

1 Ответ

0 голосов
/ 03 апреля 2020

Не ответ; слишком долго для комментария, но, просто для забавы, учтите следующее:

create table my_table
(id SERIAL PRIMARY KEY
,title VARCHAR(50) NOT NULL
);

insert into my_table values
(1,'A Room with a View'),
(2,'The Importance of Being Earnest'),
(3,'An Extraordinary Man');

SELECT CASE WHEN SUBSTRING_INDEX(title,' ',1) IN('A','An','The') THEN 'foo' END x
FROM my_table
|   x |
|-----|
| foo |
| foo |
| foo |
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...