2015-05-13 4 views
0

У меня есть селектор, который получает данные из моей базы данных.форму передать выбранную на следующую страницу

The selector

Когда я выбираю 1 пункт и нажмите Add to list, он генерирует таблицу:

When i selected something

код для этого все есть:

<!--Selector--> 
    <?php 

// Get name and id data from the db. In an assoc array 

$results = $database->Selector(); 
echo "<form name='form' method='POST' id='selector'>"; 
echo "<select name='train_name' id='train_name' multiple='multiple'>"; 

// Loop trough the results and make an option of every train_name 

foreach($results as $res) { 
    echo "<option value=" . $res['train_name'] . ">" . $res['train_name'] . "</option>"; 
} 

echo "</select>"; 
echo "<br />" . "<td>" . "<input type='submit' name='Add' value='Add to list'/>" . "</td>"; 
echo "</form>"; 

if (isset($_POST["train_name"])) { 

    // Get all data from database, in an assoc array 

    $results = $database->getAllAssoc(); 

    // Make table headers 

?> 
      <div id="train_select_table"> 
      <form name="selector" method="post" action="customer_list.php?user_id=<?php 
    echo $_SESSION['user_id'] ?>"> 
       <table> 
        <tr> 
         <th>Train name</th> 
         <th>Number of bogies</th> 
         <th>Number of axles</th> 
         <th>Delete</th> 
         <th>More info</th> 
         <th>Check</th> 
        <!--Only for admins (later!)--> 
        <!--<th>XML</th> 
         <th>SQL</th> --> 
        </tr> 
       <div id="looprow"> 
        <?php 
    foreach($results as $res) { 

     // Loop trough results, generate a tablerow every time 

?> 
        <tr>  
         <td name="train_name"><?php 
     echo $res['train_name'] ?></td> 
         <td><?php 
     echo $res['number_of_bogies'] ?></td> 
         <td><?php 
     echo $res['number_of_axles'] ?></td> 
         <td><a href="remove_from_table.php?train_id=<?php 
     echo $res['train_id'] ?>">Delete</a></td> 
         <td><a href="expand_info.php?train_id=<?php 
     echo $res['train_id'] ?>">More Information</a></td> 
         <td><input type="checkbox" name="checkbox" value="<?php 
     echo $res['train_id'] ?>"></td> 
                <!--Only for admins (later!)--> 
         <!--<td><a href="convert_to_xml.php?train_id=<?php 
     echo $res['train_id'] ?>">XML</a></td> 
         <td><a href="convert_to_sql.php?train_id=<?php 
     echo $res['train_id'] ?>">SQL</a></td>--> 
        </tr> 
       <?php 
    } 

?> 
       </div> 
      </table><br /> 
      <input name="Add to list" type="submit" id="add_to_list" value="add_to_list"> 
     </form> 
     </div> 
     <?php 
} 

?> 

Functions: 

    function getAllAssoc() { 
      $sql = "SELECT * FROM train_information WHERE train_name = :train_name"; 
      $sth = $this->pdo->prepare($sql); 
      $sth->bindParam(":train_name", $_POST["train_name"]); 
      $sth->execute(); 
      return $sth->fetchAll(); 
     } 

    function selector() { 
      $sql = "SELECT train_name, train_id FROM train_information"; 
      $sth = $this->pdo->prepare($sql); 
      $sth->execute(); 
      return $sth->fetchAll(); 
     } 

Когда я Проверяй и нажмите Add to list. Вы отправитесь в customer_list.php. На этой странице я хочу показать информацию о выбранном элементе. То, что я прямо сейчас:

<?php 
    echo $_POST["checkbox"]; 
?> 

Это показывает мне номер (когда я выбрал пункт) которым это идентификатор поезда/пункта.

Но как мне показать всю информацию выбранного флажка? Также, если у меня есть несколько поездов в таблице, например 10. И я выбираю только 7 и нажимаю кнопку. я хочу следующую страницу customer_list.php, чтобы показать эти конкретные 7 результатов.

+0

Используйте свою логику. Обработайте значение, которое вы получите в файле customer_list.php. –

+0

Но как? Безусловно, я исправлю значение выбора. который является идентификатором.но когда мне это нравится: и опубликуйте, что на следующей странице, как и выбор. он ничего не опубликует – Mitch

ответ

0

Вам нужно отредактировать код, флажок:

<td><input type="checkbox" name="checkbox[]" value="<?php echo $res['train_id']?>"></td> 

код customer_list.php:

<?php 

function getAllAssoc_id($id) { 
     $sql = "SELECT * FROM train_information WHERE id = :id"; 
     $sth = $this->pdo->prepare($sql); 
     $sth->bindParam(":id", $id); 
     $sth->execute(); 
     return $sth->fetchAll(); 
    } 

    //echo $_POST["checkbox"]; 

    echo"<table><tr><td>Train Name</td><td>Train Id</td></tr>"; 
    foreach($_POST["checkbox"] as $key=>$val){ 
    $data=getAllAssoc_id($val); 
    echo"<tr><td>".$data['train_name']."</td><td>".$data['id']."</td></tr>"; 

    } 
    echo"</table"; 
?> 
+0

Я получаю эту ошибку: Неустранимая ошибка: использование $ this, если не в контексте объекта, и Примечание: преобразование массива в строку. Но я могу понять это – Mitch

+0

Вам нужно включить файлы подключения файлов данных, как в вашей форме/других страницах. –

+0

Вам необходимо удалить echo $ _POST ["checkbox"] для вашего уведомления. –

-1

Вы должны принять ваше имя флажка в виде массива, т.е. name="checkbox[]", поэтому на странице действия вы получит массив идентификаторов. Теперь вам просто нужно запросить выбранные train_id, используя предложение mysql «IN».

Я могу показать вам запрос

Select * from table where train_id IN(array you got from check boxes) 
1

две вещи:

1.Change

echo "<select name='train_name' id='train_name' multiple='multiple'>"; 

к

echo "<select name='train_name[]' id='train_name' multiple='multiple'>"; 

2.Изменение

function getAllAssoc() { 
     $sql = "SELECT * FROM train_information WHERE train_name = :train_name"; 
     $sth = $this->pdo->prepare($sql); 
     $sth->bindParam(":train_name", $_POST["train_name"]); 
     $sth->execute(); 
     return $sth->fetchAll(); 
    } 

в

function getAllAssoc() { 
     $sql = "SELECT * FROM train_information WHERE train_name IN(:train_name)"; 
     $sth = $this->pdo->prepare($sql); 
     $sth->bindParam(":train_name", implode(",",$_POST["train_name"])); 
     $sth->execute(); 
     return $sth->fetchAll(); 
    } 

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

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

Надеюсь, у вас возникла идея!

Смежные вопросы