Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL] else do while?
LeviPlayGames
post 6.03.2016, 12:54:43
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
viking
post 6.03.2016, 12:58:37
Post #2





Grupa: Zarejestrowani
Postów: 6 380
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 6.03.2016, 13:11:27
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 6.03.2016, 20:50:05
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 7.03.2016, 17:25:10
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 7.03.2016, 17:58:52
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 7.03.2016, 18:02:05
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);


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
MGie
post 7.03.2016, 18:12:44
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 7.03.2016, 18:14:36
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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
markonix
post 7.03.2016, 20:04:29
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.. dry.gif


--------------------
Go to the top of the page
+Quote Post
LeviPlayGames
post 8.03.2016, 17:56:20
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 8.03.2016, 18:05:40
Post #12





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




Pokaz kod jaki aktualnie masz


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
LeviPlayGames
post 8.03.2016, 18:33:48
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 8.03.2016, 18:34:44
Post #14





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




Nie widze tutaj kodu z num-rows


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
LeviPlayGames
post 8.03.2016, 18:42:23
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 8.03.2016, 19:13:39
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.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
LeviPlayGames
post 8.03.2016, 19:15:49
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ć? smile.gif
Go to the top of the page
+Quote Post
markonix
post 8.03.2016, 21:09:51
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 13.03.2016, 20:17:23
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
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 07:55