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

PHP Wyświetlanie więcej niż jeden wynik zapytania

Object Storage Arubacloud
0 głosów
335 wizyt
pytanie zadane 1 czerwca 2020 w PHP przez koterka Nowicjusz (210 p.)

Hej, napisałam krótki kod PHP, który ma mi zwracać z bazy danych informacje o firmie - wpisuję nazwę, wysyłam POST i wyświetla mi informacje jakie dane na jej temat znajdują się w bazie. Nie wiem jak rozwiązać kwestię wyświetlania danych, jeżeli są dwie i więcej firm o tej samej nazwie. 
Wrzucam fragment kodu, który zwraca mi prawidłowo jeden rezultat

<?php

require_once 'config/obsluga_sesji.php';
include_once 'config/menu.php';
require_once 'config/settings.php';

$AKTYWNY = "index.php";

$TRESC = "";
$WYNIKNAZWA ="";  

if(isset($_POST['nazwa']))
    {
    //połaczenie z bazą danych
    $db_conn = new PDO("$DBEngine:host=$DBServer;dbname=$DBName;port=$DBPort", $DBUser, $DBPass);
    $db_conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $sql = "SELECT * FROM zgody2020 WHERE nazwa = :nazwa";
    $stmt = $db_conn->prepare($sql);

    $stmt->bindValue(':nazwa', $_POST['nazwa']);
    $result = $stmt -> execute();
 

if ($stmt->rowCount()==0)
    {
    $WYNIKNAZWA = "Brak zgody na kontakt"; 
    $TRESC = array(); //zmienna łańcuchowa zmieniana na zmienną tablicową
    $TRESC[0] = "szablony/logowanie.php";
    }
else
    {
    $row = $stmt->fetch(PDO::FETCH_ASSOC);
    if ($row['nazwa']==$_POST['nazwa']);
    $WYNIKNAZWA = $row['nazwa']." Nip: ".$row['NIP']." Zgoda: ".$row['zgoda']." Mail: ".$row['mail'];
    $TRESC = array(); //zmienna łańcuchowa zmieniana na zmienną tablicową
    $TRESC[0] = "szablony/logowanie.php";}  
}

Próbowałam stosować fetchALL i foreach, do print_r zwracają mi dwa rezultaty, ale nie wiem jak uzyskać ten efekt w zmiennej $WYNIKNAZWA. Nie znalazłam przypadku podobnego w internetach.

Kod HTML: 
 

<div">
	<h3>Szukaj po nazwie firmy:</h3>
	<p>wpisz NAZWĘ dokładnie taką, jaka znajduję się w ....</p>
	<form action="index.php" method="post">
		<input type='text' name="nazwa" title="Nazwa" placeholder="nazwa"> 
		<input type="submit" name="szukaj" value="Szukaj po Nazwie"> 
	</form>
	<h3><b><?=$WYNIKNAZWA?></b></h3>
</div>

Bardzo proszę o pomoc, bo jestem świeżakiem i liczę na Waszą wielką pomoc. 

Fragment z bazy danych:

Baza danych: `baza23215_mailing`

CREATE TABLE `zgody2020` (
  `lp` int(11) NOT NULL,
  `nazwa` varchar(40) COLLATE utf8_polish_ci NOT NULL,
  `NIP` varchar(12) COLLATE utf8_polish_ci NOT NULL,
  `zgoda` date NOT NULL,
  `mail` varchar(40) COLLATE utf8_polish_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;

INSERT INTO `zgody2020` (`lp`, `nazwa`, `NIP`, `zgoda`, `mail`) VALUES
(1, 'Alko', '9080434569', '2020-05-21', ''),
(2, 'FirmaTest', '9080704567', '2020-05-21', 'kolok@fikcja.pl'),
(3, 'FirmaTest', '9080704647', '2020-05-21', 'krol@test.pl'),
(4, 'FirmaFikcja', '9080706099', '2020-05-21', '');

 

komentarz 1 czerwca 2020 przez WiktroH Mądrala (6,550 p.)
Dodaj rekordom unikatowy nr ID
komentarz 1 czerwca 2020 przez koterka Nowicjusz (210 p.)
Jako unikatowy w bazie mam ustawiony NIP, a lp jako primary. Czy o to chodzi?
komentarz 1 czerwca 2020 przez WiktroH Mądrala (6,550 p.)
Tak, o to; sugeruję, żeby zamiast nazwą posługiwać się tym lp (z resztą słusznie ustawionym na primary, czyli podstawowy; klucz podstawowy)
komentarz 1 czerwca 2020 przez koterka Nowicjusz (210 p.)
Ok, ale dalej nie wiem jak to może mi pomóc w kwestii wyświetlania wyników.

Wysyłam zapytanie o nazwę - w bazie mam dwie 'FirmaTest', ale pokazuje mi w $WYNIKNAZWA tylko jedną. A potrzebuję wyświetlić obie. Print_r zwraca mi dwa wyniki, ale nie wiem jak rozwiązać kwestię wyświetlenia tego z użyciem $row i $rows. A może błąd następuje gdzieś wcześniej? Ale wydaje mi się, że tutaj, bo próbowałam wyświetlić całą zawartość tablicy, a i tak wyświetliło mi jeden rekord (z najwyższym numerem).

2 odpowiedzi

0 głosów
odpowiedź 1 czerwca 2020 przez WiktroH Mądrala (6,550 p.)
wybrane 1 czerwca 2020 przez koterka
 
Najlepsza

Zrób taką pentlę:

$ile = mysqli_num_rows($rezultat);

	for ($i = 1; $i <= $ile; $i++) 
	{
		
		$row = mysqli_fetch_assoc($rezultat);
		$zmienna1 = $row['zm1'];
		$zmienna2 = $row['zm2'];		
			
	}

mysli_num_rows pokazuje, ile jest takich rekorków w bazie, które spełniają warunek kwerendy

komentarz 1 czerwca 2020 przez koterka Nowicjusz (210 p.)
W sumie rozwiązałam to inaczej, ale dzięki za podpowiedź z pętlą, bo zastosowałam tylko, że foreach.
+1 głos
odpowiedź 1 czerwca 2020 przez koterka Nowicjusz (210 p.)
W sumie udało mi się to rozwiązać. Niepotrzebnie chciałam przesyłać fetchAll(PDO::FETCH_ASSOC) i użyłam foreach oraz wyświetlania jako wypunktowania, zadziałało :)

Dzięki wszystkim za pomoc!

Podobne pytania

+1 głos
1 odpowiedź 265 wizyt
pytanie zadane 10 grudnia 2020 w PHP przez ariva6152 Użytkownik (570 p.)
0 głosów
2 odpowiedzi 111 wizyt
pytanie zadane 1 stycznia 2023 w PHP przez dee Początkujący (360 p.)
0 głosów
1 odpowiedź 429 wizyt
pytanie zadane 24 maja 2015 w PHP przez HaKIM Szeryf (87,590 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 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!

...