Я не могу получить вывод для отображения из массива PHP SQL

0

УВЕДОМЛЕНИЕ. Я знаю, что полоса прокрутки для моего кода выглядит безумной, если вы просто прокрутите страницу вниз, вы увидите, где я пытаюсь вывести код.

Я пытаюсь вывести результаты поиска запроса выбора. Я успешно получил результаты, которые удовлетворяют условиям WHERE в отдельном php файле, например. не вложен в код переднего конца.

В моем дизайне сайта у меня есть основной раздел <?php?> верхней части раздела <!DOCTYPE HTML>. Затем я повторяю некоторые части из основного раздела <?php?> Вверху, в коде переднего конца.

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

Это вывод в отдельном файле php

01-05-2015 образец 3

01-05-2015 образец 2

Пример 01-05-2015

Я хочу это в поле результатов поиска, используя isset, если он еще не существует.

Вот фотография интерфейса, если это помогает, это буквально текстовое поле ввода и кнопка поиска "поиск" с отображением результатов ниже.

http://www.parsemebro.com/search.jpg

ob_start();
session_start();

 mysqli_report(MYSQLI_REPORT_OFF);
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
error_reporting(-1);

function test_input($data) {
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;

}

if($_SERVER['REQUEST_METHOD']=='POST'){

 $errors = array();

if (empty($_POST['keyphrase'])) {
     $errors['keyphrase'] = "Search field is empty";
   } else {
     $keyphrase = test_input($_POST['keyphrase']);
   }

if(empty($errors)){

$userrname = $_SESSION["user"];
$keyphrase = test_input($_POST['keyphrase']);

$servername = " ";
$username = " ";
$password = " ";
$dbname = " ";

$link = new mysqli("$servername", "$username", "$password", "$dbname");

$stmt=$link->prepare('SELECT stratoparse,date FROM stock WHERE user=? AND keyphrase=? ORDER BY ID DESC');
$stmt->bind_param('ss',$userrname,$keyphrase);
$stmt->execute();
$stmt->store_result();
$num_rows = $stmt->num_rows;
global $num_rows;
$stratoparse=null;
$date=null;
$stmt->bind_result($stratoparse,$date);

$rows2 = array();
$rows3 = array();
while($stmt->fetch()){
$rows2[] = $stratoparse;
$rows3[] = $date;
}

$search = array();
for($i=0;$i<=$num_rows;$i++){
$search[]=$rows3[$i].'&nbsp;'.$rows2[$i].'<br>'.'<br>';
}

$_SESSION['status_message'] = "search results displayed below";

$host  = $_SERVER['HTTP_HOST'];
        $uri   = $_SERVER['REQUEST_URI']; // the path/file?query string of the page
        header("Location: http://$host$uri");
        exit;
        $link->close();
}
}
?>
<!DOCTYPE HTML>
<head>
<style>
</style>
</head>
<body>
<?php
if(isset($_SESSION['status_message'])){
    echo '<font color="white" size="30%">'.htmlspecialchars($_SESSION['status_message']).'</font>'.'&nbsp;';
    unset($_SESSION['status_message']); // clear the message
    }
?>
<span><span class="errors"><?php echo isset($errors['keyphrase'])? $errors['keyphrase']:""; ?></span>
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
<input type="text" name="keyphrase" value="<?php echo isset($keyphrase)? $keyphrase:"";?>" placeholder="keyphrase"><input type="submit" value="search"></span>
</form>
<textarea name="result" placeholder="search results">

**THIS IS WHERE I WANT TO OUTPUT THE ARRAY RESULTS** 

<?php echo isset($search)?$search:"";?>
<?php 

for($i=0;$i<=(isset ($num_rows)?$num_rows:"");$i++){
echo isset($search[$i])?$search[$i]:"".'<br>'.'<br>';
}

for($i=0;$i<=(isset ($num_rows)?$num_rows:"");$i++){
echo (isset($rows3[$i])?$rows3[$i]:"").'&nbsp;'.(isset($rows2[$i])?$rows2[$i]:"").'<br>'.'<br>';
}

?>
</textarea>
</body>
  • 0
    Интересно, смогу ли я сделать это, установив вывод рабочего массива как функцию в отдельном php-файле. Затем я вызываю файл и вызываю функцию ... но опять же, это отличается от того, что я пытаюсь сделать сейчас?
Теги:
arrays
output
count

1 ответ

0

для вывода типа Array, такого как ваш $ search [], вам нужно использовать var_dump ($ search). Затем вы должны увидеть некоторые результаты. но он будет уродлив, если вы не перейдете к нему и не соедините цепочку.

Чтобы перебрать массив и объединить в строку, используя ".="

$output = "";
for( $i = 0; $i < count($search); $i++){
    $output .= "Search result: " . $i . "\n";
    $output .= $search[$i] . "\n";
};

а затем не эхо, просто используйте <?=$string?> внутри вашего HTML-элемента.

<textarea name="result" placeholder="search results">
    <?=$output?>
</textarea>

Проверьте, задан ли $ search перед тем, как начать цикл, чтобы получить значения.

side-note: В вашем HTML вы можете использовать <?=$variableName?> как синтаксис, а не <?php...?>.

  • 0
    Я, вероятно, просто не стараюсь / истощаюсь, но я не получаю это, возможно, что-то не так, как имя сессии не хранится ... Я не знаю ...
  • 0
    Да, похоже, ключевая фраза не регистрируется, я попытался вывести ее, используя $ _POST и $ keyphrase.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню