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

Co jest nie tak z tym kodem?

Object Storage Arubacloud
–1 głos
359 wizyt
pytanie zadane 8 kwietnia 2017 w PHP przez mati212 Nowicjusz (180 p.)

Od niedawna prowadzę bloga. Chciałbym żeby na końcu każdego wpisu były linki do losowych artykułów.

 

W tym celu napisałem taki kod:

$query3 = mysql_query("select * from news ORDER 'id' BY RAND() LIMIT 1"); // 1
$rekord3 = mysql_fetch_array($query3);
echo '<a href='$rekord3'>'$rekord3'</a>';

Posiadam bazę danych w której jest: id(tekst), nagłówek(tekst), tresć i kategoria.

Niestety nie działa. Proszę o szybka pomoc. 

1
komentarz 8 kwietnia 2017 przez efiku Szeryf (75,160 p.)
2017

mysql_*

Nie mam pytań.

 

Weź googluj PHP PDO Wiki
komentarz 9 kwietnia 2017 przez HaKIM Szeryf (87,590 p.)
Dotakowo, podczas googlowania, patrz na daty.

Przed: 2016 bym uważał - Czyli po mniejszym/większym ustabilizowaniu wersji 7. :)

3 odpowiedzi

+1 głos
odpowiedź 8 kwietnia 2017 przez Assasz Nałogowiec (30,460 p.)
1. Łączenie z bazą poprzez mysql jest przestarzałe i nie wspierane, w PHP7 prawdopodobnie nie będzie działać. Użyj w tym celu mysqli lub PDO.

2.Poprawna składnia zapytania sortującego to ORDER BY 'costam', nie ORDER 'costam' BY. Funkcja RAND() też jest nie na miejscu, ponadto spowalnia zapytanie tworząc tabelę tymczasową.

3. Jeśli chcesz połączyć string ze zmiennymi zastosuj w tym celu symbol konkatenacji "." (kropka).

4. Dane wyciągasz z tablicy asocjacyjnej, także musisz się posługiwać indeksami o nazwach atrybutów tabeli, czyli np. $rekord3['nagłówek'].
komentarz 8 kwietnia 2017 przez efiku Szeryf (75,160 p.)

Użyj w tym celu mysqli lub PDO.

PDO, 2017.

3. Jeśli chcesz połączyć string ze zmiennymi zastosuj w tym celu symbol konkatenacji "." (kropka). 

System szablonów /  " tekst {zmienna} "  /  bindowanie parametrów. 

Zapytania select * nie powinno się używać, należy pobierać konkretne nazwy kolumn z tabeli. Szybciej, ładniej, wiadomo co do czego jest i po co.

Proszę traktować jako uzupełnienie  :) 

0 głosów
odpowiedź 8 kwietnia 2017 przez Szymon Ciompała Mądrala (6,280 p.)
Jaki błąd sie pokazuje ?
komentarz 8 kwietnia 2017 przez mati212 Nowicjusz (180 p.)
edycja 8 kwietnia 2017 przez mati212
Właśnie nic się nie pokazuję. Tracę cały wpis blogowy.
0 głosów
odpowiedź 8 kwietnia 2017 przez Mariusz08 Maniak (62,300 p.)
edycja 8 kwietnia 2017 przez Mariusz08
$query3 = mysqli_query('select * from news ORDER BY id RAND() LIMIT 1');
$rekord3 = mysqli_fetch_array($query3);
echo '<a href='#'>'.$rekord3['naglowek'].'</a>';

Poprawiłem parę błędów. Powinno działać. Pozdrawiam

komentarz 8 kwietnia 2017 przez mati212 Nowicjusz (180 p.)
działa, ale jak wykluczyc pojawienie się artkułu który jest akurat wyswietlany?
komentarz 8 kwietnia 2017 przez Assasz Nałogowiec (30,460 p.)
Dodaj do zapytania warunek WHERE id NOT IN(tutaj id wyświetlanego artykułu).
komentarz 8 kwietnia 2017 przez mati212 Nowicjusz (180 p.)
select * from news order by id rand() limit 2 where id not in ".$_GET['id'].".

Zapisałem tak, ale nie działa.
komentarz 8 kwietnia 2017 przez Assasz Nałogowiec (30,460 p.)
select * from news where id not in('.$_GET['id'].') order by rand() limit 2

Na przyszłość, jeśli zapytania nie działają, przetestuj je najpierw w phpmyadmin.

komentarz 9 kwietnia 2017 przez mati212 Nowicjusz (180 p.)
Dzięki za pomoc, ale udało mi się samodzielnie rozwiązać problem.

Podobne pytania

0 głosów
1 odpowiedź 220 wizyt
pytanie zadane 30 maja 2017 w PHP przez Kamil Gąsior Obywatel (1,430 p.)
0 głosów
1 odpowiedź 153 wizyt
0 głosów
1 odpowiedź 86 wizyt

92,575 zapytań

141,425 odpowiedzi

319,650 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!

...