Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL] else do while?
LeviPlayGames
post
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 27.02.2016

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 18)
viking
post
Post #2





Grupa: Zarejestrowani
Postów: 6 381
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Funkcja zwraca tablicę albo null. Sprawdź sobie http://php.net/manual/pl/mysqli-result.num-rows.php albo podlicz ilość elementów tablicy.
Go to the top of the page
+Quote Post
LeviPlayGames
post
Post #3





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 27.02.2016

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
markonix
post
Post #4





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

Ostrzeżenie: (0%)
-----


Skoro umiesz wyświetlić tekst:
  1. echo "Nikogo nie znaleziono :/";

to jaki jest problem zamiast tego wyświetlić obrazek (czyli kawałek HTMLa)?
Go to the top of the page
+Quote Post
LeviPlayGames
post
Post #5





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 27.02.2016

Ostrzeżenie: (0%)
-----


  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?

Ten post edytował LeviPlayGames 7.03.2016, 17:26:00
Go to the top of the page
+Quote Post
MGie
post
Post #6





Grupa: Zarejestrowani
Postów: 31
Pomógł: 5
Dołączył: 29.02.2016

Ostrzeżenie: (0%)
-----


  1. if ($result = mysqli_query($db, $sqls))
  2. {
  3. }
  4. else
  5. {
  6. //nikogo nie znaleziono
  7. }


Ten post edytował MGie 7.03.2016, 17:59:11
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




@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);
Go to the top of the page
+Quote Post
MGie
post
Post #8





Grupa: Zarejestrowani
Postów: 31
Pomógł: 5
Dołączył: 29.02.2016

Ostrzeżenie: (0%)
-----


@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?
Go to the top of the page
+Quote Post
nospor
post
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




false zwraca sie gdy jest blad zapytania. Kazda inna sytuacja to pomyslnosc. Nie znalezienie rekordu to tez pomyslne wykonanie zapytania
Go to the top of the page
+Quote Post
markonix
post
Post #10





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

Ostrzeżenie: (0%)
-----


Przecież już w pierwszej odpowiedzi dostałeś konkretne rozwiązanie, a drążysz temat dalej.. (IMG:style_emoticons/default/dry.gif)
Go to the top of the page
+Quote Post
LeviPlayGames
post
Post #11





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 27.02.2016

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
nospor
post
Post #12





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Pokaz kod jaki aktualnie masz
Go to the top of the page
+Quote Post
LeviPlayGames
post
Post #13





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 27.02.2016

Ostrzeżenie: (0%)
-----


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ł..
Go to the top of the page
+Quote Post
nospor
post
Post #14





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Nie widze tutaj kodu z num-rows
Go to the top of the page
+Quote Post
LeviPlayGames
post
Post #15





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 27.02.2016

Ostrzeżenie: (0%)
-----


Robiłem według przykładu
Go to the top of the page
+Quote Post
nospor
post
Post #16





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Przyklad sluzyl do wyswietlenia liczby rekordow... Ty masz dac warunek z uzyciem num-rows a nie bezmyslnie kopiowac przyklady.
Go to the top of the page
+Quote Post
LeviPlayGames
post
Post #17





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 27.02.2016

Ostrzeżenie: (0%)
-----


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ć? (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
markonix
post
Post #18





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
LeviPlayGames
post
Post #19





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 27.02.2016

Ostrzeżenie: (0%)
-----


Oki, zadziałało.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 15.09.2025 - 21:41