PHP запускает 1/2 инструкции IF без правильной проверки

#php #html #css #mysql

#php #HTML #css #mysql

Вопрос:

Просто краткое замечание, я понимаю, что мой PHP-код неаккуратен, и я знаю, что мог бы многое исправить с помощью массива.

Итак, эта страница используется для отображения сведений об автомобиле, которые хранятся в нескольких таблицах, запись будет либо равна 1, либо 2. 1 означает «Да», у нее есть эта функция, а 2 означает «нет», у нее ее нет. Затем в моем последующем оформлении я проверяю, равно ли оно 1, и если да, то отображаю некоторый текст, чтобы пользователь мог видеть, какими функциями обладает транспортное средство. Мой стиль печатает маленькую синюю галочку рядом с текстом, просто чтобы красиво выглядеть. Эта галочка выводится только в том случае, если у транспортного средства есть функция, но по какой-то причине галочка выводится случайным образом. Это тоже не соответствует, поэтому в моем коде, если в транспортном средстве нет 5 элементов, тогда он может напечатать только 1 пустую галочку или 2, это не согласовано, и я не могу понять почему!

Изображение затронутой области

Исходный PHP-код

 //Fetch Category - Most Popular
$queryThree = "SELECT * FROM categoryMostPopular WHERE vehicleReg = :reg";
$stmt = $conn->prepare($queryThree);
$stmt->bindValue(':reg', $vehicleReg);
$stmt->execute();
$category1 = $stmt->fetch(PDO::FETCH_ASSOC);

//Put Results Into Variables
$mostPopularReg = $category1['vehicleReg'];
$airCon = $category1['airCon'];
$bluetooth = $category1['bluetooth'];
$climateControl = $category1['climateControl'];
$satNav = $category1['satNav'];
$commsPack = $category1['commsPack'];
$climateZonex2 = $category1['climateZonex2'];
$dvdPlayer = $category1['dvdPlayer'];
$fullLeather = $category1['fullleather'];
$halfLeather = $category1['halfLeather'];
$ipodConnectivity = $category1['ipodConnectivity'];
$manufacturersDirect = $category1['manufacturersDirect'];
$memorySeats = $category1['memorySeats'];
$panarRoof = $category1['panarRoof'];
$elecFoldingMirrors = $category1['elecFoldingMirrors'];
$rainSenseWipers = $category1['rainSenseWipers'];
$xenonHeadlights = $category1['xenonHeadlights'];
  

Я не опубликовал весь исходный PHP-код в основном потому, что у меня есть 12 категорий, таких же, как приведенные выше, так что кода было бы много.

Проверьте, установлена ли переменная в 1 или 2, затем отобразите галочку и текст

 <div class="col-sm-6">
    <ul class="fa-ul list-unstyled">
        <?php
        if ($alcantaraLeather == 1) { echo "<li><i class='fa-li fa fa-check'></i>Alcantara Leather</li>"; }
        if ($clothUpholstery == 1) { echo "<li><i class='fa-li fa fa-check'></i>Cloth Upholstery</li>"; }
        if ($velourTrim == 1) { echo "<li><i class='fa-li fa fa-check'></i>Velour Trim</li>"; }
        if ($fullLeather == 1) { echo "<li><i class='fa-li fa fa-check'></i>Full Leather</li>"; }
        if ($halfLeather == 1) { echo "<li><i class='fa-li fa fa-check'></i>Half Leather</li>"; }
        if ($elecFoldingMirrors == 1) { echo "<li><i class='fa-li fa fa-check'></i>Electric Folding Mirrors</li>"; }
        if ($rainSenseWipers == 1) { echo "<li><i class='fa-li fa fa-check'></i>Rain Sense Wipers</li>"; }
        if ($xenonHeadlights == 1) { echo "<li><i class='fa-li fa fa-check'></i>Xenon Headlights</li>"; }
        if ($electricSeats == 1) { echo "<li><i class='fa-li fa fa-check'></i><li><i class='fa-li fa fa-check'></i>Electric Seats</li>"; }
        if ($frontCentreArmrest == 1) { echo "<li><i class='fa-li fa fa-check'></i><li><i class='fa-li fa fa-check'></i>Front Centre Armrest</li>"; }
        if ($headRestraints == 1) { echo "<li><i class='fa-li fa fa-check'></i><li><i class='fa-li fa fa-check'></i>Head Restraints</li>"; }
        if ($heatedSeats == 1) { echo "<li><i class='fa-li fa fa-check'></i><li><i class='fa-li fa fa-check'></i>Heated Seats</li>"; }
        ?>
    </ul>
</div> <!-- end .col-sm-6 -->
  

Я был бы очень признателен, если бы кто-нибудь мог взглянуть и понять, почему появляются случайные галочки.

После внесения изменений в код, как упомянуто другим пользователем. Это мой результат

Ответ №1:

Я думаю, что здесь есть несколько вещей, которые можно было бы улучшить.

  1. В программировании, когда вы имеете дело с условием «все или ничего» (логические значения), тогда вы должны использовать 0 для NO (или FALSE) и 1 для YES (или TRUE).

  2. У вас есть две <li> в некоторых строках, таких как «Сиденья с электроприводом».

  3. if Имеющиеся у вас инструкции будут скрывать весь текст, если у транспортного средства нет этой функции. Вам нужно обернуть инструкцию if только вокруг флажка.
  4. Наконец, чтобы сделать код читаемым, я предлагаю использовать сокращение echo <?= $variable; ?>

Применив эти предложения к вашему коду, вы получите это …

 <div class="col-sm-6">
    <ul class="fa-ul list-unstyled">
        <?php
        $checkMark = "<i class='fa-li fa fa-check'></i> "; // Leave the extra trailing space in this string.
        ?>
        <?php if($alcantaraLeather == 1): ?><li><?= $checkMark; ?>Alcantara Leather</li><?php endif; ?>
        <?php if($clothUpholstery == 1): ?><li><?= $checkMark; ?>Cloth Upholstery</li><?php endif; ?>
        <?php if($velourTrim == 1): ?><li><?= $checkMark; ?>Velour Trim</li><?php endif; ?>
        <?php if($fullLeather == 1): ?><li><?= $checkMark; ?>Full Leather</li><?php endif; ?>
        <?php if($halfLeather == 1): ?><li><?= $checkMark; ?>Half Leather</li><?php endif; ?>
        <?php if($elecFoldingMirrors == 1): ?><li><?= $checkMark; ?>Electric Folding Mirrors</li><?php endif; ?>
        <?php if($rainSenseWipers == 1): ?><li><?= $checkMark; ?>Rain Sense Wipers</li><?php endif; ?>
        <?php if($xenonHeadlights == 1): ?><li><?= $checkMark; ?>Xenon Headlights</li><?php endif; ?>
        <?php if($electricSeats == 1): ?><li><?= $checkMark; ?>Electric Seats</li><?php endif; ?>
        <?php if($frontCentreArmrest == 1): ?><li><?= $checkMark; ?>Front Centre Armrest</li><?php endif; ?>
        <?php if($headRestraints == 1): ?><li><?= $checkMark; ?>Head Restraints</li><?php endif; ?>
        <?php if($heatedSeats == 1): ?><li><?= $checkMark; ?>Heated Seats</li><?php endif; ?>
    </ul>
</div> <!-- end .col-sm-6 -->
  

Комментарии:

1. Хм, это все еще отображает текст, но не галочку. В функциях, которые повторяют «false», я не хочу, чтобы появлялась галочка или текст. Таким образом, отображаются только функции, которые возвращают значение true. Я не совсем уверен, как вы используете сокращенные инструкции IF…

2. О, я понимаю. Тогда зачем вообще добавлять галочки? Галочка подразумевает, что они могут быть там или нет. Затем я скорректирую ответ, чтобы скрыть функции и флажок.

3. Это просто выглядело приятнее, добавив галочки вместо скучного списка. Извините за путаницу. Большое спасибо за вашу помощь

Ответ №2:

Вероятно, в вашей таблице стилей (CSS-файле) по умолчанию для тега ‘li’ установлена галочка. В Chrome по умолчанию используется маркер.

Итак, создайте CSS-файл и измените стиль тега ‘li’.

Надеюсь, это поможет.

 element.style {
}
user agent stylesheet
li {
    display: list-item;
    text-align: -webkit-match-parent;
}