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

Jak wyjąć ostatnie 20 wierszy z bazy danych i włożyć je do tablicy php

VPS Starter Arubacloud
0 głosów
1,679 wizyt
pytanie zadane 7 marca 2017 w PHP przez ddoh Początkujący (310 p.)
edycja 7 marca 2017 przez ddoh
Na samym początku uprzedzam że bawię się z php niecały tydzień.

Chciałbym wyciągnąć z bazy danych mysql 20 ostatnich komórek z jednej kolumny i wstawić je do tabeli php.

Jakby ktoś był chętny napisać kod i go wytłumaczyć.

 

Z góry dzięki za wszelkie próby i chęci pomocy
komentarz 7 marca 2017 przez xandros Nałogowiec (29,450 p.)

5 odpowiedzi

+1 głos
odpowiedź 7 marca 2017 przez xandros Nałogowiec (29,450 p.)
Jako że trochę burdelik się zrobił, nagrałem (na kolanie) film, na którym rozwiązuję to zagadnienie:

https://drive.google.com/file/d/0B_m8fC4d_bzNdmg1T1MwNWJfNmc/view?usp=sharing

(Trochę przydługawy, ale nie musisz oglądać całośći)

(Dodatkowo przepraszam za jakość. Zresetowałem ustawienia obs i dał mi za mały bitrate =/)
0 głosów
odpowiedź 7 marca 2017 przez hoktaur Pasjonat (22,250 p.)

No to tak mysql:

SELECT * FROM MyGuests ORDER BY id DESC LIMIT 20;

 

SELECT * FROM MyGuests - wyświetl wszystkie kolumny z tablicy MyGuests

ORDER BY id DESC - uporządkuj alfabetycznie po kolumnie id od końca

LIMIT 20 - wynik ogranicz do 20;

komentarz 7 marca 2017 przez ddoh Początkujący (310 p.)
Mógłbyś powiedzieć, jak wrzucić to do tabeli ( w sensie tej w php)?
komentarz 7 marca 2017 przez ddoh Początkujący (310 p.)
$sql="SELECT numerek FROM num ORDER BY id DESC LIMIT 10";
        if($rezultat=@$polaczenie->query($sql))
        {    
            $wiersz=$rezultat->fetch_assoc();
            $numerek=$wiersz['numerek'];
            $numstary=$numerek;    
            $rezultat->close();
        }
Tutaj mam kod, on wyciąga mi tylko ostatni wiersz, nawet jeśli zmieniam desc limit.
komentarz 7 marca 2017 przez hoktaur Pasjonat (22,250 p.)
edycja 7 marca 2017 przez hoktaur

Bo to musi być coś w ten deseń:

// Wyślij zapytanie do bazy i wynik zapisz w rezultat
$rezultat = $conn->query($sql);

//Jeżeli liczba wierszy jest większa od 0 to 
if ($rezultat->num_rows > 0) {
// Utwórz tagi tabli początkowe oraz ustaw nazwy kolumn
    echo "<table><tr><th>ID</th><th>kolumna1</th><th>kolumna2</th></tr>";

// Dopóki są wiersz wykonuj  pętle
    while($row = $rezultat->fetch_assoc()) {
//Wyświetlaj linia po linii
        echo "<tr><td>".$row["id"]."</td><td>".$row["kolumna1"]." ".$row["kolumna2"]."</td></tr>";
    }
// Wyświetl  tag kończący table
    echo "</table>";
} else {
//Jeżeli liczba wierszy jest równa 0 wyświetl komunikat
    echo "0 results";
}

 

komentarz 7 marca 2017 przez efiku Szeryf (75,160 p.)
A może SELECT z wybranymi kolumnami.
komentarz 7 marca 2017 przez hoktaur Pasjonat (22,250 p.)
Nic nie napisał że chce filtrować kolumny, niby nic trudnego ale na początku może dodatkowo zamącić obraz całości.
komentarz 7 marca 2017 przez efiku Szeryf (75,160 p.)
Jak może na początku niby zamącić Ci "obraz całości" wybieranie konkretnych kolumn z selekta?

Nie będąc zaznajomionym z legacy apką, co lepiej od razu zobaczyć:

SELECT id,user_name,user_surname,user_password FROM ...

A

SELECT * FROM ...

?
komentarz 7 marca 2017 przez xandros Nałogowiec (29,450 p.)
Pewnie nie będzie miał tego problemu, bo tabela ma normalne id inkrementowane przez silnik mysql, ale w przypadku, jak używa jakiegos UUID to musiałby dodać kolumne z timestamp created_at i po tym powinno się posortować :P
komentarz 7 marca 2017 przez hoktaur Pasjonat (22,250 p.)

Kolega napisał:

Na samym początku uprzedzam że bawię się z php niecały tydzień.

komentarz 7 marca 2017 przez efiku Szeryf (75,160 p.)
edycja 7 marca 2017 przez efiku

Co nie znaczy, że masz mu przekazywać złe praktyki ;)

U mnie na szkoleniu od razu było bicie po palcach za SELECT *.

Przykładowe rozwiązanie: https://3v4l.org/YMnon

komentarz 7 marca 2017 przez hoktaur Pasjonat (22,250 p.)

Co nie znaczy, że masz mu przekazywać złe praktyki ;)

Z czego jestem akurat znany ;), ale wiem też że zanim nauczyłeś pisać to najpierw zamalowałeś tony kartek, nawaliłeś masę szlaczków potem nauczyli ciebie literek  pisać, a później dopiero wymagali czystości w zeszycie więc....

Najpierw trzeba pokazać jak cokolwiek wyświetlić potem filtrować po kolumnach, następnie po wartościach w tabeli i tak dalej  a na końcu jak zadbać o dobre praktyki ... bo jak komuś za dużo naraz naładujesz to tego nie przetworzy i tylko nie potrzebnie się zniechęci. Takie jest moje zdanie.

–1 głos
odpowiedź 7 marca 2017 przez Chess Szeryf (76,710 p.)
<body style="background:grey">

<table style='border:1px solid red'>
<?php 

$link = mysqli_connect("127.0.0.1", "root", "", "ddoh");


$query2= "SELECT id,rasa_kota FROM ddoh";
# ---------------------------------------
$result2=mysqli_query($link,$query2);
$w_tableli_jest_9_rekordow=mysqli_num_rows($result2);
$ile_chce_pobrac_rekordow=4;
$wynik=$w_tableli_jest_9_rekordow-$ile_chce_pobrac_rekordow;
$wynik2=$w_tableli_jest_9_rekordow-$wynik;
$wynik3=$w_tableli_jest_9_rekordow-$wynik2;
echo $wynik3;
#------------------------------------------------------



$query = "SELECT id,rasa_kota FROM ddoh where id>$wynik3";


if ($result = mysqli_query($link, $query)) {

    /* fetch associative array */
    while ($row = mysqli_fetch_row($result)) {
		
		echo '<tr><td style="border:1px solid blue">';
		
        echo $row[0].'</td><td style="border:1px solid blue">'.$row[1].'<br />';
		
		echo '</td></tr>';
		
    }

    /* free result set */
	
	//echo mysqli_num_rows($result);
	
    mysqli_free_result($result);
}


// printf("Affected rows (UPDATE): %d\n", mysqli_affected_rows($link));

?>
</table>

</body>

W zmiennej:

$ile_chce_pobrac_rekordow

wpisujesz liczbę ile chcesz pobrać rekordów od tyłu tabeli.

Np. W tabeli masz 100 rekordów. Do zmiennej: $ile_chce_pobrac_rekordow przypisujesz 20.

$ile_chce_pobrac_rekordow=20;

I w ten oto sposób pobrałeś z bazy danych 20 ostatnich rekordów z tabeli.

komentarz 7 marca 2017 przez efiku Szeryf (75,160 p.)
edycja 7 marca 2017 przez efiku

Masakra..
PSR1/2 - zapoznaj się z tym i z PDO.

Czy aż tak trudno wziąć posortować malejąco po identyfikatorze(id) i dać limit 20?

komentarz 7 marca 2017 przez ddoh Początkujący (310 p.)

Czekajcie wszyscy, widzę że wy rozpędziliście się żeby używać <table>, itp  a w ogóle mi o to nie chodzi, 

komentarz 7 marca 2017 przez efiku Szeryf (75,160 p.)
CZYLI CZYTAJ CO NAPISAŁEM.

SELECT numerek,data FROM num ORDER BY id DESC LIMIT 20;
komentarz 7 marca 2017 przez xandros Nałogowiec (29,450 p.)
Za bardzo skomplikowałeś to. Tutaj nawet php nie trzeba było używać :P
komentarz 7 marca 2017 przez ddoh Początkujący (310 p.)
Nie krzycz, bo to nic nie daje, dopiero się uczę
komentarz 7 marca 2017 przez xandros Nałogowiec (29,450 p.)
W mysqlu wszyscy krzyczą. Co poradzisz, taka zasada skladni :D
komentarz 7 marca 2017 przez efiku Szeryf (75,160 p.)
edycja 7 marca 2017 przez efiku
Polecam zainstalować MySQL Workbench, albo DataGrip, pomogą Ci podczas pisania zapytań SQL, później tylko wziąć googlować za PDO w PHP i później będzie z górki.

 

(Sugestia na dalszy rozwój)

https://forum.pasja-informatyki.pl/95526/pisanie-stron-obiektowo?show=95526#q95526

Tam masz kilka linków do nowoczesnego PHP'a, nie trać czasu na 5.2 ;)

 

https://3v4l.org/YMnon
–1 głos
odpowiedź 7 marca 2017 przez KariK-02 Mądrala (6,030 p.)

Zapytanie sql: 

SELECT * FROM (
    SELECT * FROM table ORDER BY id DESC LIMIT 20
) sub
ORDER BY id ASC

PHP:

$result = mysqli_query(tutaj zapytanie sql);
$rows = [];
while($row = mysqli_fetch_array($result))
{
    $rows[] = $row;
}

 

komentarz 7 marca 2017 przez ddoh Początkujący (310 p.)
@efik

Ja rozumiem że chcesz dla mnie jak najlepiej, na prawdę cenie sobie to. Teraz potrzebuje tylko rozwiązania problemu który postawiłem.
komentarz 7 marca 2017 przez efiku Szeryf (75,160 p.)

To nie jest jedyna odpowiedź do Twojego pytania. Zerknij na inne.

Ja odpadam.

komentarz 7 marca 2017 przez ddoh Początkujący (310 p.)
@efik Próbowałem wszystkich. Jesteś strasznie toksyczny
komentarz 7 marca 2017 przez ddoh Początkujący (310 p.)
Znowu kod pobiera tylko ostatni element, znajdujący się w $row[0], reszta jest pusta :/
komentarz 7 marca 2017 przez efiku Szeryf (75,160 p.)

@efik Próbowałem wszystkich. Jesteś strasznie toksyczny

Dzięki, zapamiętam ;)

PRZYKŁADOWE ROZWIĄZANIE. w odpowiedzi wyżej, nic tylko dostosować do swojego skryptu zapytanie SQL i pobrać wszystkie rekordy (fetch_all w mysqli)

 

 

–2 głosów
odpowiedź 7 marca 2017 przez Chess Szeryf (76,710 p.)
<table style='border:1px solid red'>
<?php 

$link = mysqli_connect("127.0.0.1", "root", "", "ddoh");

$query = "SELECT id,rasa_kota FROM ddoh where id>=5";


if ($result = mysqli_query($link, $query)) {

    /* fetch associative array */
    while ($row = mysqli_fetch_row($result)) {
		
		echo '<tr><td style="border:1px solid blue">';
		
        echo $row[0].'</td><td style="border:1px solid blue">'.$row[1].'<br />';
		
		echo '</td></tr>';
		
    }

    /* free result set */
	
	//echo mysqli_num_rows($result);
	
    mysqli_free_result($result);
}


// printf("Affected rows (UPDATE): %d\n", mysqli_affected_rows($link));

?>
</table>

 

Podobne pytania

0 głosów
1 odpowiedź 195 wizyt
pytanie zadane 12 lutego 2021 w PHP przez mat19 Obywatel (1,580 p.)
0 głosów
1 odpowiedź 386 wizyt
0 głosów
1 odpowiedź 1,857 wizyt
pytanie zadane 15 grudnia 2016 w SQL, bazy danych przez bartek7910 Obywatel (1,980 p.)

92,454 zapytań

141,263 odpowiedzi

319,099 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...