2013-03-10 12 views
6

Jestem nowym członkiem StackOverflow i chociaż używam strony od dłuższego czasu, to po raz pierwszy zamieszczam pytanie, w nadziei, że ktoś będzie w stanie pomóc mnie. Zacznę od stwierdzenia, że ​​moja znajomość PHP i MySQL jest podstawowa, ale to, co próbuję zrobić, nie jest moim zdaniem zbyt skomplikowana, więc mam nadzieję, że nie będę o nic pytać. Zrobiłem wiele wcześniejszych badań, ale nie mogłem znaleźć właściwej odpowiedzi.Filtrowanie wyników mysql poprzez wybranie rozwijanej listy

W skrócie, jest to, co usiłuję zrobić:

Mam formularza HTML, który po złożeniu zapisuje dane do bazy danych, a następnie publikuje tabelę na osobnej stronie html. Przy każdym pomyślnym złożeniu nowa tabela zostaje wygenerowana i opublikowana, a stara zostaje zepchnięta pod spód. To wszystko działa dobrze, a także zaimplementowałem podział na strony, tak że na jednej stronie widocznych jest tylko 5 tabel.

To, co chciałbym móc zrobić, to umożliwić użytkownikom WYŁĄCZNIE wyświetlanie/wyświetlanie wyników (tabel) w oparciu o określone kryteria, w tym przypadku "ocena", poprzez wybranie oceny z rozwijanego menu strona, na której publikowane są tabele. Ocena jest jednym z pól w moim formularzu, który jest przesyłany do bazy danych, a następnie publikowany w jednym z wierszy tabeli.

Poniżej znajduje się kod publikujący tabele. Z góry dziękuje za twoją pomoc!

<?php 
include('dbconnect.php'); 

mysql_select_db("vtracker", $con); 
$result = mysql_query("SELECT * FROM userdata"); 
$age = "Age:"; 
$rating = "Rating:"; 
$country = "From:"; 
$name = "Name:"; 

     while($row = mysql_fetch_array($result)) 
     { 

         echo "<table id='mft_table' cellspacing='0'>"; 
         echo "<tbody>"; 
         echo "<tr>"; 
         echo "<td class='row1'>" .$name . " " . $row['personsname'] . "</td>"; 
         echo "<td rowspan='4'>"; 
         echo "<div class='mft_column'>" . $row['mft'] . "</div>"; 
         echo "</td>"; 
         echo "</tr>"; 
         echo "<tr>"; 
         echo "<td class='row2'>" . $country . " " . $row['nationality'] . "</td>"; 
         echo "</tr>"; 
         echo "<tr>"; 
         echo "<td class='row3'>" . $age . " " . $row['personsage'] . "</td>"; 
         echo "</tr>"; 
         echo "<tr>"; 
         echo "<td class='row4'>" . $rating . " " . $row['rating'] . "</td>"; 
         echo "</tr>"; 
         echo "</tbody>"; 
         echo "<br>"; 
         echo "</table>"; 

     } 
    ?> 

Odpowiedz

1

zarówno dla prawdziwego i fałszywego użycia można dodać thid w kodzie:

if($_POST['rating_dropdown']!='') 
{ 
    $temp_rating = $_POST['rating_dropdown']; 
    $query=mysql_query("SELECT * FROM userdata WHERE rating = '$temp_rating'"); 
} 
else 
{ 
    $query=mysql_query("SELECT * FROM userdata"); 
} 
+1

dziękuję, wszystko działa dobrze, mam włączone udzielone porady. Dziękuję wszystkim za wzięcie udziału w konkursie. – Zeus

0

Dunno, jeśli to działa, to tylko uszczypnięcie. ha ha. Zobaczy, czy ocena jest prawidłowa (nie zerowa), jeśli jest prawdziwa, spowoduje wyświetlenie wyników.

while($row = mysql_fetch_array($result)) 
{ 
if ($rating) 
       echo "<table id='mft_table' cellspacing='0'>"; 
       echo "<tbody>"; 
       echo "<tr>"; 
       echo "<td class='row1'>" .$name . " " . $row['personsname'] . "</td>"; 
       echo "<td rowspan='4'>"; 
       echo "<div class='mft_column'>" . $row['mft'] . "</div>"; 
       echo "</td>"; 
       echo "</tr>"; 
       echo "<tr>"; 
       echo "<td class='row2'>" . $country . " " . $row['nationality'] . "</td>"; 
       echo "</tr>"; 
       echo "<tr>"; 
       echo "<td class='row3'>" . $age . " " . $row['personsage'] . "</td>"; 
       echo "</tr>"; 
       echo "<tr>"; 
       echo "<td class='row4'>" . $rating . " " . $row['rating'] . "</td>"; 
       echo "</tr>"; 
       echo "</tbody>"; 
       echo "<br>"; 
       echo "</table>"; 
} 

} 
0

Po rozwijanej zostanie wybrana i publikowane na stronie wyświetlacza, użyj tego kodu:

$temp_rating = $_POST['rating_dropdown']; 
mysql_query("SELECT * FROM userdata WHERE rating = '$temp_rating'"); 

pamiętać jednak, że należy używać PDO lub mysqli rozszerzenie, a nie rozszerzenia mysql . Według strony PHP:

To rozszerzenie jest przestarzałe od PHP 5.5.0 i zostanie usunięte w przyszłości w . Zamiast tego należy użyć rozszerzenia MySQLi lub PDO_MySQL. Zobacz także MySQL: wybór przewodnika po interfejsie API i związanych z nim często zadawanych pytań, aby uzyskać więcej informacji na temat .

+0

Dzięki za odpowiedzi. Lista rozwijana z opcjami oceny jest zawsze wyświetlana na stronie, którą połączyłem z plikiem "filter.php", który jest wywoływany, gdy użytkownik kliknie przycisk "Prześlij". Logika mojego kodu w pliku filter.php jest w rzeczywistości taka sama, jak zasugerowano, ale nie działa, tzn. Wyniki (tabele) nie są filtrowane na podstawie wyboru użytkownika. Oto kod w pliku filter.php: – Zeus

+0

Właśnie zdałem sobie sprawę, że nie mam wystarczająco dużo miejsca, aby opublikować wszystko ... – Zeus

+0

W pliku filter.php mam: $ filters = mysql_real_escape_string ($ _ POST ["przefiltrowany"]); $ result = mysql_query ("SELECT * FROM userdata WHERE rating = '$ filters" "); a następnie pętla, która wypisuje tabele, jak w moim oryginalnym kodzie. – Zeus

Powiązane problemy