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

Prosty system newsów PHP

Object Storage Arubacloud
0 głosów
596 wizyt
pytanie zadane 13 listopada 2016 w PHP przez tiesto.ulic Obywatel (1,010 p.)

Witajcie!
Znalazłem gdzieś w internecie kod na prosty system newsów w PHP. Był nieco przestarzały (mysql_), więc "przeniosłem" go na mysqli. Chciałem, by wyświetlało się pięć ostatnich newsów lecz problem w tym, że wyświetla się jeden. Gdzie leży błąd? Pozdrawiam!

 

require_once "connect.php";
	
$polaczenie = @new mysqli($host, $db_user, $db_password, $db_name);
mysqli_set_charset($polaczenie, "utf8");

if ($polaczenie->connect_errno!=0)
	{
	echo "Error: ".$polaczenie->connect_errno;
	}
else 
	$query = $polaczenie->query("SELECT * FROM news ORDER BY id DESC LIMIT 5");
	while($rekord = $query->fetch_array())
		{
		if (substr($rekord[4], 0, 150)<$rekord[4])
			{
			$kr = '...';
			}
			else
			{
			$kr = '';
			}
     $naz = '<li><a href="news.php?id='.$rekord[0].'">'.$rekord[1].'</a> <br><p style="font-size:12px">Autor: '.$rekord[3].' - '.$rekord[2].'</p><p>'.substr($rekord[4], 0, 150).''.$kr.'</p></li>';
		}

echo '<ul>'.$naz.'</ul>';

$polaczenie->close();

 

1 odpowiedź

+1 głos
odpowiedź 13 listopada 2016 przez xandros Nałogowiec (29,450 p.)
edycja 13 listopada 2016 przez xandros

Edit: jednak całość do zmiany:

<?php
require_once "connect.php";
     
$polaczenie = new mysqli($host, $db_user, $db_password, $db_name);
mysqli_set_charset($polaczenie, "utf8");
 
if ($polaczenie->connect_errno != 0){
    throw new \Exception("Error: ".$polaczenie->connect_errno);
}

$query = $polaczenie->query("SELECT * FROM news ORDER BY id DESC");
if($records = $query->fetch_all(MYSQLI_NUM)){
    $listedRecords = array_map(function($record){
        return sprintf(
            '<li><a href="news.php?id=%d">%s</a><br><p style="font-size:12px">Autor: %s - %s </p><p>%s</p></li>',
            $record[0],//id
            $record[1],//label
            $record[3],//autor
            $record[2],//tytul
            strlen($record[4]) > 150 ? substr($rekord[4], 0, 147) . '...' : $record[4]//tresc
        );
        
    },$records);

    echo '<ul>' . implode('', $listedRecords) . '</ul>';
}

$polaczenie->close();

Dodatkowe funkcje które dodałem:

http://php.net/manual/en/mysqli-result.fetch-all.php

http://php.net/manual/en/function.array-map.php

http://php.net/manual/pl/function.sprintf.php

http://php.net/manual/en/function.strlen.php

http://php.net/manual/en/function.implode.php

(raczej nie funkcja, ale masz też reference) http://php.net/manual/en/language.exceptions.php

 

Polecam przeczytać (a przynajmniej przewertować na samym początku): https://drive.google.com/open?id=0B_m8fC4d_bzNWDROajVnd3dlYUk

Oraz stosować: http://www.php-fig.org/psr/psr-2/

Dodatkowo zainwestuj w edytor z podświetlaniem składni (i błędów w niej) np. https://netbeans.org/downloads/.

komentarz 13 listopada 2016 przez tiesto.ulic Obywatel (1,010 p.)
Parse error: syntax error, unexpected ')' in C:\xampp\htdocs\str\index.php on line 21
komentarz 13 listopada 2016 przez xandros Nałogowiec (29,450 p.)
Czyli dajej nie zassałeś tego edytora podświetlającego składnie :D

Zapomniałem, że sprintf pobiera argumenty, a nie arraya argumentów i dałem przecinek na koniec ostatniego argumentu. Poprawione.
komentarz 13 listopada 2016 przez efiku Szeryf (75,160 p.)
PDO*

Podobne pytania

–2 głosów
4 odpowiedzi 784 wizyt
pytanie zadane 20 marca 2016 w PHP przez Mateusz11 Pasjonat (22,910 p.)
0 głosów
4 odpowiedzi 706 wizyt
pytanie zadane 5 sierpnia 2017 w PHP przez Bogusław Witek Początkujący (420 p.)
0 głosów
2 odpowiedzi 212 wizyt
pytanie zadane 10 kwietnia 2016 w PHP przez Eimens Maniak (69,240 p.)

92,583 zapytań

141,434 odpowiedzi

319,668 komentarzy

61,966 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!

...