• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Problem z filtrowaniem bazy danych MySQL przy pomocy php

Object Storage Arubacloud
0 głosów
325 wizyt
pytanie zadane 25 lutego 2017 w PHP przez Gabriel Janczak Użytkownik (710 p.)

Stworzyłem taki oto prosty silnik do wyświetlania i selekcjonowania odpowiednich wierszy z bazy MySQL. Domyślnie strona ta wyświetla wszystkie rekordy, jednak po uzupełnieniu paru opcji można przefiltrować całą bazę danych i wyświetlić tylko te które nas interesują.

Problem jest następujący. Kiedy nie wybiorę jeszcze żadnej opcji filtrowania udaje się bez żadnego problemu wyświetlić wszystkie rekordy z bazy. Jednak kiedy póbuje wyszukać na podstawie Imienia, Nazwiska, E-maila to zwraca mi " Trying to get property of non-object ". Co ciekawe błąd nie występuje kiedy szukam po numerze telefonu. Próbowałem zmienić w bazie danych żeby zamiast varchara w kolumnach które nie zwracają wyniku dane były zapisywane w tinytext. Jednak i to nie podziałało. Wydaje mi się że to może być problem z niezgodnością typów zmiennych czy coś takiego. Tak czy inaczej skończyły mi się pomysły. Macie pomysł jak to naprawić?

Kod źródłowy:

  <select name="filter">
    <option value="firstname">Imienia</option>
    <option value="surename">Nazwiska</option>
    <option value="e-mail">E-maila</option>
    <option value="number">Telefonu</option><br/>
	<input type="text" name="value">
  </select>
  <br><br>
  <input type="submit">
</form>

<table border=1>
	<tbody>
		<tr>
			<td>Imie</td>
			<td>Nazwisko</td>
			<td>E-mail</td>
			<td>Telefon</td>
			<td>Adres</td>
		</tr>
		<?php 
		
		//Printing all data about customers in table
		if(!isset($_POST['filter'])){
			
			$sql_customers_query = "SELECT * FROM customers";
			$sql_customers_query_result = $connect->query($sql_customers_query);
			$customers_row_nmber = $sql_customers_query_result->num_rows;
			
			for($i=0; $i<$customers_row_nmber; $i++){
	
				$row =  $sql_customers_query_result->fetch_assoc();
				echo "<tr>";
				echo "<td>".$row["firstname"]."</td>"."<td>".$row["surename"]."</td>"."<td>".$row["e-mail"]."</td>"."<td>".$row["number"]."</td>"."<td>".$row["adress"]."</td>";
				echo "<tr/>";
			}			
		}
		else{
			
			$sql_customers_query = "SELECT * FROM customers where ". $_POST['filter']."= ".$_POST['value'];
			$sql_customers_query_result = $connect->query($sql_customers_query);
			$customers_row_nmber = @ $sql_customers_query_result->num_rows;
			
			for($i=0; $i<$customers_row_nmber; $i++){
	
				$row =  $sql_customers_query_result->fetch_assoc();
				echo "<tr>";
				echo "<td>".$row["firstname"]."</td>"."<td>".$row["surename"]."</td>"."<td>".$row["e-mail"]."</td>"."<td>".$row["number"]."</td>"."<td>".$row["adress"]."</td>";
				echo "<tr/>";
			}
		}
		?>
	</tbody>
</table>

 

1 odpowiedź

0 głosów
odpowiedź 25 lutego 2017 przez Gabriel Janczak Użytkownik (710 p.)
Problem rozwiązany. Należało zmienić formuę zapytania SQL na: "SELECT * FROM customers WHERE $filter LIKE "."'".$value."'"

Podobne pytania

0 głosów
1 odpowiedź 2,462 wizyt
0 głosów
1 odpowiedź 1,736 wizyt
0 głosów
1 odpowiedź 133 wizyt
pytanie zadane 31 października 2016 w PHP przez Q_Nick Mądrala (5,010 p.)

92,568 zapytań

141,420 odpowiedzi

319,620 komentarzy

61,954 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...