1
У меня есть простой скрипт здесь, чтобы извлечь запись из mysql из диапазона 2 дат. Странно, что он просто показывает 4 записи, в то время как есть 6 записей, я не устанавливал никаких ограничений на записи. Может кто-нибудь мне помочь?Результат MYSQL не отображает все записи
Попробуйте выбрать из: - 1 февраля по 27 февраля
Вот мой сайт тестирования: http://iamawesome.xyz/track/review.php
Вот мой код: -
$done = 0;
function displayTable($results) {
$total_result = count($results);
echo $total_result." results found.";
for($x = 1; $x <= $total_result; $x++) {
//echo "<tr><td>$allresult['id'][$x]</td>";
echo "<tr><td>".$results['date'][$x]."</td>";
echo "<td>".$results['url'][$x]."</td>";
echo "<td>".$results['clickid'][$x]."</td>";
echo "<td>".$results['code'][$x]."</td></tr>";
}
}
if (isset($_POST['sub'])) {
$datefrom = $_POST['fromdatetime'];
$dateto = $_POST['todatetime'];
if ($datefrom == "From" || $datefrom == "" && $dateto == "To" || $dateto == "") {
echo "ERROR! No date/time selected";
}
else {
/* create a prepared statement */
$stmt = mysqli_prepare($mysqli, "SELECT * FROM data WHERE date_data between (?) AND (?)");
/* bind parameters for markers */
mysqli_stmt_bind_param($stmt, "ss", $datefrom, $dateto);
/* execute query */
mysqli_stmt_execute($stmt);
/* bind result variables */
mysqli_stmt_bind_result($stmt, $resultid, $resulturl, $resultdate, $resultclickid, $resultcode);
$resultcount = 0;
$allresult = array();
/* fetch value */
while (mysqli_stmt_fetch($stmt)) {
//$allresult['id'][$resultcount] = $resultid;
$allresult['url'][$resultcount] = $resulturl;
$allresult['date'][$resultcount] = $resultdate;
$allresult['clickid'][$resultcount] = $resultclickid;
$allresult['code'][$resultcount] = $resultcode;
$resultcount++;
}
/* close statement */
mysqli_stmt_close($stmt);
/* close connection */
mysqli_close($mysqli);
$done = 1;
}
}
?>
<style>
.searchbox {
border-radius: 20px; 20px; 20px; 20px;
-moz-border-radius: 20px; 20px; 20px; 20px;
-webkit-border-radius: 20px; 20px; 20px; 20px;
border: 2px solid #58ACFA;
}
</style>
<div class="searchbox">
<form action="review.php" method="post" style="margin-left:20px; padding-top:10px;">
<input id="fromdatetime" name="fromdatetime" type="text" placeholder="From" readonly> - <input id="todatetime" name="todatetime" type="text" placeholder="To" readonly>
<input type="submit" name="sub" value="Search" id="btnreview">
</form>
</div>
<br><br>
<?php
if ($done == 1) {
?>
<div class="searchbox">
<table border="1" width="100%" cellspacing="100%">
<tr>
<td><b>Date/Time</b></td>
<td><b>From URL</b></td>
<td><b>ClickID</b></td>
<td><b>Affiliate Code</b></td>
</tr>
<?php
displayTable($allresult);
}
?>
</table>
Каковы значения '$ datefrom' и' $ dateto', когда вы выбираете эти даты? Используйте 'var_dump ($ dateto);'. Вы также можете попробовать выполнить запрос в phpMyAdmin и сравнить результаты. – Qirel
начните с 'for ($ x = 1; ....' с 0 – devpro
и еще одно предложение используйте foreach вместо for .. просто предложение: 'foreach ($ results as $ key => $ value) { echo "
ответ
Проблема в том, что вы считаете первый массив. В настоящее время у вас многомерный массив, и вы только подсчитываете, сколько массивов имеет первый массив.
Поскольку хранить 4 различных значений в массиве здесь
когда вы затем сделать
count($allresult)
, то вывод будет 4, потому что$allresult
содержит 4 подмассивы,url
,date
,clickid
иcode
.Затем вы используете
for
-loop для вывода массива в вашей функцииdisplayTable
. Во-первых, вы начинаете считать в 1 (в то время как массивы начинаются с индекса 0), но что более важно, счет здесь всего 4, потому что массив первого уровня содержит 4 подмассива (как обсуждалось выше).Я бы переписал функцию, используя вместо нее
foreach
-loop, так как это более подходит для перебора массивов. Тем не менее, вы можете просто изменить так, чтобы функцияcount
рассчитывает через одну из подмассивов вместо этого, изменив функцию отв
Что существенно изменилось здесь был
x = 1; $x <= $total_result
в$x = 0; $x < $total_result
и, самое главное, от$total_result = count($results);
до$total_result = count($results['url']);
.источник
2016-02-23 07:45:35 Qirel
нафига просто собирался этот пост :) Принимается ваш ответ – MuthaFury
Ха-ха, хорошо, что ты понял это в любом случае! ;-) Приветствия! – Qirel
хорошая работа @Qirel :) – devpro
Обновление вашего запрос
С
это могло бы работать. Предполагается, что дата вашего первого параметра ниже второй даты параметра
источник
2016-02-23 07:20:20 Pallavi
Смежные вопросы