Истинный HTML отлаживает возможный?

Вы не должны использовать implode. Это помещает разделенный запятыми список всего в форме в каждую строку, которую вы вставляете, и повторяет это для каждого проверенного окна. Вы должны просто вставить один элемент в каждую строку, индексируя массивы.

Однако, если у вас есть флажок в форме, он отправляет только те, которые отмечены. Результатом этого является то, что индексы массива $_POST['checkbox'] не будут совпадать с соответствующими элементами $_POST['item'] и $_POST['quantity']. Вам нужно поместить явные индексы в имена checkbox, чтобы вы могли связать их.

<form method = "POST">

<input type = "hidden" name = "item[]" value = "cupcake">
<input type = "text" name = "items" value = "cupcake" readonly><br>
<b>Price :</b> <span name = "price" value = "3.00">$17.00</span><br>
Quantity: <input tabindex="1" name="quantity[]" min="0" max="5" type="number" class="quantity" value="1" /><br>
<input tabindex="1" name="checkbox[0]" type="checkbox" value="17" /><span>Add to Cart</span></label></div></div></td><br>

<input type = "hidden" name = "item[]" value = "cake">
<input type = "text" name = "items" value = "cake" readonly><br>
<b>Price :</b> <span name = "price" value = "20.00">$20.00</span><br>
Quantity: <input tabindex="1" name="quantity[]" min="0" max="5" type="number" class="quantity" value="1" /><br>
<input tabindex="1" name="checkbox[1]" type="checkbox" value="20" /><span>Add to Cart</span></label></div></div></td><br>

<input type = "submit" name = "insertBT"><br>
</form>

Тогда ваш PHP-код может быть таким:

$stmt = $conn->prepare("INSERT INTO purchases (Product, Quantity, Price) VALUES (?, ?, ?)");
$stmt->bind_param("sis", $name, $quantity, $price);
foreach ($_POST['checkbox'] as $i => $price) {
    $name = $_POST['name'][$i];
    $quantity = $_POST['quantity'][$i];
    $stmt->execute();
}

BTW, цены в вашем HTML кажутся плохой идеей. Ничто не мешает пользователю изменять HTML с помощью веб-инспектора перед отправкой формы, чтобы они могли снизить цену. Вы должны получить цены из базы данных при обработке формы.

Также обратите внимание, что в исходном коде вы открыли соединение с базой данных с помощью MySQLi, но затем вы попытались сделать вставку, используя mysql_query вместо $conn->query(). Вы не можете смешивать такие API; myql_query может использоваться только при открытии соединения с mysql_connect.

18
задан JoshJordan 2 September 2009 в 13:22
поделиться

5 ответов

Мои 0,02$:

"Истинная" отладка HTML, в разумных вещах, о которых Вы говорите, не технически возможна, потому что нет никакого требования агентов пользователя HTML (веб-браузеры) для рендеринга элементов HTML в особом порядке, и при этом нет ничего как атомарная единица выполнения как "оператор".

, Например, при рендеринге таблицы, агент пользователя должен зарезервировать пространство для каждого <tr> прежде, чем представить их ребенка <td>s (в ширину)? Или это должно представить каждого ребенка <td> и каждый <td>s ребенок, и т.д (в глубину)? На практике агенты пользователя делают все виды предположений, чтобы попытаться представить страницы как можно быстрее. Другими словами, не было бы никакой гарантии, что порядок отладки будет соответствовать фактическому порядку рендеринга, и при этом не должно быть.

HTML может считаться декларативным языком в этом смысле, на котором он указывает то, что должно быть сделано (страница, представленная к спецификации), но не точно, как сделать это (точно, которые заказывают для рендеринга элементов на экран). В целом, лучше предполагать, что все происходит сразу, хотя W3C действительно дает некоторые подсказки при ускорении <table> рендеринг на основе того, как агенты пользователя должны рендеринг <table> элементы.

IMO, webdev панель инструментов и Firebug являются лучшими, мы имеем, где мы можем редактировать/запрещать определенные элементы HTML и правила CSS.

14
ответ дан 30 November 2019 в 09:11
поделиться

Большей частью информации, которую я могу найти на этом, является эта ссылка, которую я нашел в комментарии в нижней части ссылки, которую Вы отправили:

http://dougt.wordpress.com/2008/05/24/what-is-a-reflow/

0
ответ дан 30 November 2019 в 09:11
поделиться

хорошо - серьезный ответ.

Оценка по комментариям к сайтам, что я следовал из той ссылки, я думаю, что Вы и я знаем, что, вероятно, нет. Существует много умных типов и субблоков на тех потоках и них всех шов для указания на "нет, это - все умные 4$! #, что привычка помогает нам в понимании рендеринга.

Однако я думаю, что то, что Ваш вопрос мог бы хотеть к акценту, - то, что рендеринг на уровне браузера очень интересен.

Позволяют мне просто бросить этого там. Вы думаете, что, помещая body { overflow: scroll; }, поскольку значение по умолчанию могло бы ускорить нас просто немного???

2
ответ дан 30 November 2019 в 09:11
поделиться

Лично, я чувствую, пока Ваш HTML проверяет к спецификации W3C, не то, что все, что имеет значение? Нужно разработать их HTML к спецификации и позволить компаниям браузера волноваться об их ошибках (которые довольно редки в эти дни), чем сфокусироваться на старых ошибках браузера прошлого.

плагин Блока проверки допустимости HTML для Firefox (иначе Опрятный) является всем любым веб-разработчиком, должен видеть, корректна ли их разметка, что случилось, и где это неправильно.

, Даже если Вы могли бы сделать истинную отладку, каждый браузер анализирует HTML свой собственный путь, поэтому даже если Вы могли бы ступить через Firefox, чтобы видеть, как ошибка рендеринга происходит, который не поможет Вам с IE или Safari/Chrome вообще, потому что они выполняют парсинг своим собственным способом. Это не похоже на PHP.NET или Java, где парсинг кода является тем же для всех, отладка имеет смысл там.

0
ответ дан 30 November 2019 в 09:11
поделиться

Тогда у меня вопрос, можно ли по-настоящему отлаживать html (шаг за шагом по каждому элементу)? Или приблизиться к этому?

Вы, вероятно, могли бы пройти через процесс рендеринга страницы, запустив Firefox под gdb, или изменить браузер с открытым исходным кодом, чтобы в нем была кнопка «шаг», но я действительно сомневаюсь, что это даст что-нибудь полезное.

CSS не так уж и сложен, все в основном представляет собой коробку с шириной / высотой / отступом / полем. Проблема с веб-разработкой (в частности, CSS) заключается в том, что каждый браузер реализует рендеринг немного по-разному (некоторые более иначе, чем другие) ..

Если вы хотите знать порядок рендеринга для ускорения загрузки страницы, я бы сказал, что вы делаете это неправильно .. Браузер, отображающий страницу, вероятно, составляет около 5% нагрузки время, остальное - время генерации страницы и задержка в сети.

Вы могли бы сократить время загрузки страницы на 2 мс, переупорядочив некоторые теги и используя другой метод позиционирования CSS .. или вы можете сократить время генерации страницы на 200 мс за счет кэширования, и вдвое меньшую задержку в сети, установив второй веб-сервер ближе к вашим пользователям. Лучшее сжатие вашего логотипа или минимизация вашего javascript, скорее всего, улучшат время загрузки (универсально, во всех браузерах!)

В основном, если вы: Что касается времени загрузки, есть гораздо лучшие места для начала. Если вас беспокоит, как отображается страница, вам понадобится Firebug (- Lite ) и http://browsershots.org (или одна или две виртуальные машины). !

Вы могли бы сократить время загрузки страницы на 2 мс, переупорядочив некоторые теги и используя другой метод позиционирования CSS .. или вы можете сократить время создания страницы на 200 мс за счет кэширования и половину задержки сети, настроив второй веб-сайт. -сервер ближе к вашим пользователям. Лучшее сжатие вашего логотипа или минимизация вашего javascript, скорее всего, улучшит время загрузки (универсально, во всех браузерах!)

В принципе, если вас беспокоит время загрузки, есть много лучших мест для начала. Если вас беспокоит, как отображается страница, вам понадобится Firebug (- Lite ) и http://browsershots.org (или одна или две виртуальные машины). !

Вы могли бы сократить время загрузки страницы на 2 мс, переупорядочив некоторые теги и используя другой метод позиционирования CSS .. или вы можете сократить время создания страницы на 200 мс за счет кэширования и половину задержки сети, настроив второй веб-сайт. -сервер ближе к вашим пользователям. Лучшее сжатие вашего логотипа или минимизация вашего javascript, скорее всего, улучшит время загрузки (универсально, во всех браузерах!)

В принципе, если вас беспокоит время загрузки, есть много лучших мест для начала. Если вас беспокоит, как отображается страница, вам понадобится Firebug (- Lite ) и http://browsershots.org (или одна или две виртуальные машины). !

и вдвое меньшую задержку в сети, установив второй веб-сервер ближе к вашим пользователям. Лучшее сжатие вашего логотипа или минимизация вашего javascript, скорее всего, улучшат время загрузки (универсально, во всех браузерах!)

В основном, если вы: Что касается времени загрузки, есть гораздо лучшие места для начала. Если вас беспокоит, как отображается страница, вам понадобится Firebug (- Lite ) и http://browsershots.org (или одна или две виртуальные машины). !

и вдвое меньшую задержку в сети, установив второй веб-сервер ближе к вашим пользователям. Лучшее сжатие вашего логотипа или минимизация вашего javascript, скорее всего, улучшат время загрузки (универсально, во всех браузерах!)

В основном, если вы: Что касается времени загрузки, есть гораздо лучшие места для начала. Если вас беспокоит, как отображается страница, вам понадобится Firebug (- Lite ) и http://browsershots.org (или одна или две виртуальные машины). !

0
ответ дан 30 November 2019 в 09:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: