кликващи резултати в php

Опитвате се да покажете резултати, върху които може да се кликне.

<form method="post" action="AF9.php">
            <input type="submit" name="submit" value=" search ">
            <input type="text" name="search" />
</form>

и ето частично файла AF9.php:

<?php

        $connection = @new mysqli(HOSTNAME, MYSQLUSER, MYSQLPASS, MYSQLDB);
        if ($connection->connect_error) {
         die('Connect Error: ' . $connection->connect_error);
        }
        else {

        $search=$_POST["search"];

        $query="SELECT *,  FROM comments AS c JOIN namestable2 AS w ON c.w1 = w.w1
        WHERE name like '%$search%' 
        ORDER BY name DESC";                         
        $connection->query("SET NAMES utf8");               
        $result_obj = '';
        $result_obj = $connection->query($query);             

        while($result = $result_obj->fetch_array(MYSQLI_ASSOC)) {   
        $items[] = $result;
        }                               

        foreach ($items as $item) {
        echo('<a href="/bgAF9.php?search='.$item['word'].'">'.$item['word'].'</a>');

}?>

но когато щракна върху резултата, той казва „Недефиниран индекс: търсене“. Моля помогнете


person Aaron F    schedule 09.10.2013    source източник
comment
Опитахте ли да отпечатате всяка променлива POST, за да видите какво всъщност е предадено?   -  person Floris    schedule 09.10.2013
comment
благодаря на всички, вашите отговори решиха проблема ми.   -  person Aaron F    schedule 09.10.2013
comment
Поставяне на $_POST данни директно в заявката без екраниране? Какво може да се обърка!?. Не забравяйте, че mysqli има метод bind_param. Използвайте го.   -  person tadman    schedule 09.10.2013


Отговори (3)


Твърдо кодирани връзки, които завършват с "?key=value" като "?search=xyz", ще преминат през GET потока, а не през POST. Опитайте да промените това:

$search=$_POST["search"];

до това:

$search=$_GET["search"];
person Will Hannah    schedule 09.10.2013

Сигурни ли сте, че възнамерявате да направите $search=$_POST["search"];?

Ако го изпращате в URL адреса, ще трябва да направите $search=$_GET["search"]; вместо това.

person Dan Johnson    schedule 09.10.2013

Вашата връзка е $_GET, а не $_POST промяна

$search=$_POST["search"];

to

$search = $_GET['search'];
person Casey    schedule 09.10.2013
comment
не, той говори за връзка, върху която може да се кликне. Предполагам, че този ред echo('<a href="AF9.php?search='.$item['word'].'">'.$item['word'].'</a>'); не е подаване на формуляр. - person Casey; 09.10.2013