Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL] else do while?
Forum PHP.pl > Forum > Przedszkole
LeviPlayGames
Hej, hej. Mam kod:
  1. $db = mysqli_connect($servername, $username, $password, $username);
  2. $sqls = "SELECT image, imie, data, autor FROM bans WHERE imie = '$search'";
  3. $sth = $db->query($sqls);
  4. $results=mysqli_fetch_array($sth);
  5.  
  6. if ($result = mysqli_query($db, $sqls)) {
  7. while ($row = mysqli_fetch_assoc($result)) {
  8. echo '<div id="bancorner">';
  9. echo '<div id="up">';
  10. echo '<h1>' . $row["imie"] . '</h1>';
  11. echo '<h2>' . $row["data"] . '</h2>';
  12. echo '</div>';
  13. echo "<br />";
  14. echo '<img src="data:image/jpeg;base64,'.base64_encode( $row['image'] ).'"/>';
  15. echo "<br />";
  16. echo "<br />";
  17. echo '<div id="autor">';
  18. echo '<h3>' . $row["autor"] . '</h3>';
  19. echo '</div></div>';
  20. echo '<div id="line"></div>';
  21. }
  22. if ($row == mysqli_fetch_assoc($result)) {
  23. echo "Nikogo nie znaleziono :/";
  24. }
  25. }


I:
  1. if (!$row = mysqli_fetch_assoc($result)) {
  2. echo "Nikogo nie znaleziono :/";

Wykonuje się nawet gdy znaleziono wynik, w rezultacie wyskakuje się zapis z bazy, a pod spodem "Nikogo nie znaleziono :/" Czy jest jakiś sposób, aby wykonywało się to poprawnie?
viking
Funkcja zwraca tablicę albo null. Sprawdź sobie http://php.net/manual/pl/mysqli-result.num-rows.php albo podlicz ilość elementów tablicy.
LeviPlayGames
No tak, masz rację, albo tablica, albo null, czyli pusta strona w tym wypadku, czy jest jakiś sposób aby jednak pokazywał się chociażby obrazek?
markonix
Skoro umiesz wyświetlić tekst:
  1. echo "Nikogo nie znaleziono :/";

to jaki jest problem zamiast tego wyświetlić obrazek (czyli kawałek HTMLa)?
LeviPlayGames
  1. if (!$row = mysqli_fetch_assoc($result)) {
  2. echo "Nikogo nie znaleziono :/";

Wykonuje się nawet gdy znaleziono wynik, w rezultacie wyskakuje się zapis z bazy, a pod spodem "Nikogo nie znaleziono :/" Czy jest jakiś sposób, aby wykonywało się to poprawnie?
MGie
  1. if ($result = mysqli_query($db, $sqls))
  2. {
  3. }
  4. else
  5. {
  6. //nikogo nie znaleziono
  7. }
nospor
@MGie mysqli_query jest prawdziwe nawet gdy nie znajdzie wyniku...

Nalezy uzyc
http://php.net/manual/en/mysqli-stmt.num-rows.php

ps: i wywalze w koncu to:
$sth = $db->query($sqls);
$results=mysqli_fetch_array($sth);
MGie
@nospor
Tego nie wiedziałem.

ale mam do Ciebie pytanie:
w dokumentacji znalazłem:
Kod
For successful SELECT, SHOW, DESCRIBE or EXPLAIN queries mysqli_query() will return a mysqli_result object.

Czy pomyślna operacja jest zawsze, gdy uda się wyciągnąc np. SELECT pomimo tego, że zwraca on NULL?

Kod
Returns FALSE on failure.

Kiedy więc zwraca FALSE?
nospor
false zwraca sie gdy jest blad zapytania. Kazda inna sytuacja to pomyslnosc. Nie znalezienie rekordu to tez pomyslne wykonanie zapytania
markonix
Przecież już w pierwszej odpowiedzi dostałeś konkretne rozwiązanie, a drążysz temat dalej.. dry.gif
LeviPlayGames
Kurczę.. nie mogę sobie poradzić z
http://php.net/manual/en/mysqli-stmt.num-rows.php
Próbuję to zrobić tak jak jest to opisane, ale nadal zwraca się "Nikogo nie znaleziono :/" gdy znaleziono wynik.
nospor
Pokaz kod jaki aktualnie masz
LeviPlayGames
Aktualnie mam tak
  1. include "connect.php";
  2.  
  3. $db = mysqli_connect($servername, $username, $password, $username);
  4. $sqls = "SELECT image, imie, data, autor FROM bans WHERE imie = '$search'";
  5.  
  6. if ($stmt = mysqli_prepare($db, $sqls)) {
  7. mysqli_stmt_execute($stmt);
  8. mysqli_stmt_store_result($stmt);
  9.  
  10. echo '<div id="bancorner">';
  11. echo '<div id="up">';
  12. echo '<h1 class="glow">' . $stmt["imie"] . '</h1>';
  13. echo '<h2>' . $stmt["data"] . '</h2>';
  14. echo '</div>';
  15. echo "<br />";
  16. echo '<img src="data:image/jpeg;base64,'.base64_encode( $stmt['image'] ).'"/>';
  17. echo "<br />";
  18. echo "<br />";
  19. echo '<div id="autor">';
  20. echo '<h3 class="glow">' . $stmt["autor"] . '</h3>';
  21. echo '</div></div>';
  22. echo '<div id="line"></div>';
  23. mysqli_stmt_close($stmt);
  24. }
  25. else {
  26. echo 'Nikogo nie znaleziono :/';
  27. }

Ale to już totalnie nie działa tak jak bym tego chciał..
nospor
Nie widze tutaj kodu z num-rows
LeviPlayGames
Robiłem według przykładu
nospor
Przyklad sluzyl do wyswietlenia liczby rekordow... Ty masz dac warunek z uzyciem num-rows a nie bezmyslnie kopiowac przyklady.
LeviPlayGames
Wcale nie bezmyślnie - to dział "raczkowanie", działam na przykładach jeśli czegoś nie umiem i dostosowuję do swoich potrzeb, mógłbyś przybliżyć w jaki sposób miałbym tego użyć? smile.gif
markonix
Użyj liczby rekordów aby stworzyć warunek IF.

Jeżeli == 0 wyświetl obrazek, jeżeli else (lub > 0) wykonaj kod odpowiedzialny za wylistowanie rekordów.
LeviPlayGames
Oki, zadziałało.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.