ďťż

[php/mysql]losowe pobieranie z bazy i przerobienie skryptu

       

Podstrony


telcocafe

Dopiero zaczynam zabawę z mysql, i mam mały problem, nie wiem jak przerobić ten skrypt, abypobierał 1 losowy skypt z bazy danych:
<?php $link = mysql_connect("lollol", "lol", "lol") or die ("Nie można nawiązać połączenia."); mysql_select_db("lol"); $query='SELECT * FROM aktualnosci ORDER BY data_dodania DESC LIMIT 10'; $result = mysql_query ($query); while ($row = mysql_fetch_array($result)) { echo('<div class="news">'); echo(' <h5>'.$row['tytul'].'</h5>'); echo(' <h6>'.date("d.m.Y H:i:s",$row['data_dodania']).'</h6>'); echo(' <p><img src="http://www.kazimierzns.yoyo.pl/'.$row['zdjecie'].'" alt="" style="float:left;padding:5px 0 0 5px;" />'.$row['tresc'].'</p>'); echo(' <br />'); echo(' <h6>Autor: </b><a href="mailto:'.$row['email'].'">'.$row[' autor'].'</a></h6>'); echo(' </div>'); echo(' <hr class="linijeczka" />'); } ?>

Mam jeszcze jedno, jak napisać zapytanie, aby na stronie był wyświetlany najnowszy news, a 2 starsze były poniżej, i jeden obok drugiego, oraz aby były skrócone do np. 100-200 znaków.

Proszę o pomoc.




abypobierał 1 losowy skypt z bazy danych Losujesz jakąś liczbę funkcją rand() lub mt_rand() z przedziału od 1 do liczby będącej ostatnim rekordem i odpowiednio konstruujesz zapytanie:
... WHERE pole_key='.$wylosowana_liczba.' ...


aby na stronie był wyświetlany najnowszy news, a 2 starsze były poniżej
odpowiednia manipulacja polem, w którym masz datę (ORDER BY i ewentualnie DESC)


z aby były skrócone do np. 100-200 znaków
a to już najlepiej w PHP, np za pomocą substr()

@DOWN:
no faktycznie prościej;]
Użytkownik kutar edytował ten post 11 kwiecień 2007, 20:31
a nie prościej select * from tabla order by rand() limit 1 ? bez randa z PHP :)

Mam taki skrypt dodawania newsów:
<?php //jak jest parametr $_POST['haslo'] i jest w nim słowo 'tajne' to logujemy if (isset($_POST['haslo']) && $_POST['haslo']=='tajne') $_SESSION['zalogowany']=true; //je¶li nie jeste¶my zalogowani, to wy¶wietlamy skrypt logowanie.php if (!isset($_SESSION['zalogowany']) || $_SESSION['zalogowany']==false) { include('logowanie.php'); return; } //jak jest pole autor, tzn. że przesyłamy formularz if (isset($_POST['autor'])) { //dostosowujemy wszystkie pola $_POST['autor']=konwertuj($_POST['autor']); $_POST['tytul']=konwertuj($_POST['tytul']); $_POST['tresc']=konwertuj($_POST['tresc']); $_POST['email']=konwertuj($_POST['email']); $_POST['zdjecie']=konwertuj($_POST['zdjecie']); //kontrolujemy poprawno¶ć $blad=''; if (strlen($_POST['tresc'])<100 || strlen($_POST['tresc'])>10240) $blad='Tre¶ć niusa ma nieprawidłow± długo¶ć!'; if (strlen($_POST['tytul'])<10 || strlen($_POST['tytul'])>200) $blad='Tytuł niusa ma nieprawidłow± długo¶ć!'; if (strlen($_POST['zrodlo'])<2 || strlen($_POST['zrodlo'])>20) $blad='¬ródło ma nieprawidłow± długo¶ć!'; if (strlen($_POST['autor'])<3) $blad='¬le wprowadzono informacje o autorze!'; else { //dodajemy do tabeli mysql_query("INSERT INTO aktualnosci VALUES(\"$_POST[tytul]\",\"$_POST[tresc]\ ",\"$_POST[autor]\",\"$_POST[zrodlo]\ ",\"$_POST[email]\",\"$_POST[zdjecie]\ ",".time().",NULL)") or die(mysql_error()); info('News został dodany.','ok'); include('aktualnosci.php'); return; } } else { $_POST['autor']=''; $_POST['tresc']=''; $_POST['tytul']=''; $_POST['email']=''; $_POST['zdjecie']=''; } ?> <form action="index.php" method="POST"> <input type="hidden" name="pokaz" value="aktualnosci_dodaj" /> <table border="0"> <tr><td>Tytuł:</td><td><input size="30" type="text" name="tytul" value="<?php echo $_POST['tytul']; ?>" /></td></tr> <tr><td>Tre¶ć:</td><td><textarea cols="40" rows="5" name="tresc"><?php echo $_POST['tresc']; ?></textarea></td></tr> <tr><td>Zdjęcie:</td><td><input size="30" type="text" name="zdjecie" value="<?php echo $_POST['zdjecie']; ?>" /></td></tr> <tr><td>Autor:</td><td><input size="30" type="text" name="autor" value="<?php echo $_POST['autor']; ?>" /></td></tr> <tr><td>E-mail:</td><td><input size="30" type="text" name="email" value="<?php echo $_POST['email']; ?>" /></td></tr> <tr><td></td><td><input type="submit" value="Dodaj nowy nius" /></td></tr> </table> </form>

Chciałbym wstawić mozliwość edytowania newsów, ale nie mam pojęcia jak mogę to zrobić. Czy mógłby mi ktoś pomóc??



poszukaj w google o update <_<

Mam parę problemów.
Mam taki prosty srypt strony, tak wygląda plik index.php<?php //inicjujemy sesje session_start(); //dołączamy plik z funkcjami include("functions.php"); //dozwolone skrypty PHP $dozwolone=array('aktualnosci','ksiega','skrypt_dodaj','aktualnosci_dodaj' ,'newsphp'); //pobieramy parametr pokaz if (isset($_GET['pokaz'])) $pokaz=$_GET['pokaz']; else $pokaz=$dozwolone[0]; if (isset($_POST['pokaz'])) $pokaz=$_POST['pokaz']; //jak jest w nim znak kropki - wyświetlamy domyślny skrypt if (strpos($pokaz,'.')!==false) $pokaz=$dozwolone[0]; //jak jest skrypt .PHP i jest to dozwolony PHP - zapamiętujemy pełną //nazwę pliku. Jak nie - tworzymy nazwę pliku z katalogu html i z rozszerzeniem htm if (file_exists($pokaz.'.php') && in_array($pokaz,$dozwolone)) $pokaz.='.php'; else $pokaz='html/'.$pokaz.'.htm'; //łączymy się z bazą danych i wybieramy odpowiednią bazę danych $link = mysql_connect("lol.loll", "lol", "olo") or die ("Nie można nawiązać połączenia."); mysql_select_db("lol"); //dołączamy nagłówek include('top.php'); //dołączamy wybrany skrypt lub wyświetlamy komunikat o błędzie if (file_exists($pokaz)) include($pokaz); else info('Nie znaleziono pliku.','blad'); //dołączamy stopkę include('bottom.php'); //zamykamy połączenie mysql_close($link); ?>

W miejscu bottom.php wywala mi takie cos:
Parse error: syntax error, unexpected T_ECHO, expecting ',' or ';' in /var/www/sites/yoyo.pl/s/z/szymonns/bottom.php on line 28

I nie mam pojęcia co jest w tym źle.

Mam jeszcze problem z tym skryptem:
<?php //jak jest parametr $_POST['haslo'] i jest w nim słowo 'tajne' to logujemy if (isset($_POST['haslo']) && $_POST['haslo']=='tajne') $_SESSION['zalogowany']=true; //jeśli nie jesteśmy zalogowani, to wyświetlamy skrypt logowanie.php if (!isset($_SESSION['zalogowany']) || $_SESSION['zalogowany']==false) { include('logowanie1.php'); return; } //jak jest pole autor, tzn. że przesyłamy formularz if (isset($_POST['autor'])) { //dostosowujemy wszystkie pola $_POST['autor']=konwertuj($_POST['autor']); $_POST['tech']=konwertuj($_POST['tech']); $_POST['typ']=konwertuj($_POST['typ']); $_POST['rozmiar']=konwertuj($_POST['rozmiar']); $_POST['wiecej']=konwertuj($_POST['wiecej']); $_POST['opis']=konwertuj($_POST['opis']); $_POST['pobierz']=konwertuj($_POST['pobierz']); $_POST['tytul']=konwertuj($_POST['tytul']); //kontrolujemy poprawność $blad=''; if (strlen($_POST['opis'])<100 || strlen($_POST['opis'])>10240) $blad='Treść niusa ma nieprawidłową długość!'; if (strlen($_POST['tech'])<1 || strlen($_POST['tech'])>200) $blad='Tytuł niusa ma nieprawidłową długość!'; if (strlen($_POST['rozmiar'])<2 || strlen($_POST['rozmiar'])>200) $blad='Źródło ma nieprawidłową długość!'; if (strlen($_POST['autor'])<3) $blad='Źle wprowadzono informacje o autorze!'; else { //dodajemy do tabeli mysql_query("INSERT INTO aktualnosci VALUES(\"$_POST[tytul]\",\"$_POST[typ]\" ,\"$_POST[autor]\",\"$_POST[pobierz]\" ,\"$_POST[opis]\",\"$_POST[wiecej]\" ,\"$_POST[rozmiar]\",\"$_POST[tech]\" ,".time().",NULL)") or die(mysql_error()); info('News został dodany.','ok'); include('aktualnosci.php'); return; } } else { $_POST['autor']=''; $_POST['typ']=''; $_POST['tech']=''; $_POST['rozmiar']=''; $_POST['wiecej']=''; $_POST['opis']=''; $_POST['pobierz']=''; $_POST['tytul']=''; } ?> <form action="index.php" method="POST"> <input type="hidden" name="pokaz" value="skrypt_dodaj" /> <table border="0"> <tr><td>Tytuł:</td><td><input size="30" type="text" name="tytul" value="<?php echo $_POST['tytul']; ?>" /></td></tr> <tr><td>Typ:</td><td><td><input size="30" type="typ" name="typ" value="<?php echo $_POST['typ']; ?>" /></td></tr> <tr><td>Tech:</td><td><input size="30" type="text" name="tech" value="<?php echo $_POST['tech']; ?>" /></td></tr> <tr><td>Autor:</td><td><input size="30" type="text" name="autor" value="<?php echo $_POST['autor']; ?>" /></td></tr> <tr><td>Rozmiar:</td><td><input size="30" type="text" name="rozmiar" value="<?php echo $_POST['rozmiar']; ?>" /></td></tr> <tr><td>Więcej:</td><td><input size="30" type="text" name="wiecej" value="<?php echo $_POST['wiecej']; ?>" /></td></tr> <tr><td>Pobierz:</td><td><input size="30" type="text" name="pobierz" value="<?php echo $_POST['pobierz']; ?>" /></td></tr> <tr><td>Opis:</td><td><textarea cols="40" rows="5" name="opis"><?php echo $_POST['opis']; ?></textarea></td></tr> <tr><td></td><td><input type="submit" value="Dodaj nowy skrypt" /></td></tr> </table> </form>
Za każdym razem wywala mi Column count doesn't match value count at row 1
10 razy sprawdzałem skrypt i nie mogę znaleźć błędu.

Proszę o szybką odpowiedćź.
Użytkownik simo_n edytował ten post 15 kwiecień 2007, 11:52
Ad 1: dziękujemy, że nam pokazałeś plik index.php, ale z pewnością bardziej by się nam przydał BOTTOM.PHP!
Ad 2: dodaj nazwy kolumn po nazwie tabeli. A może masz nieodpowiednią ilość kolumn w bazie zapisanych?

Ad1. Już sobie poradziłem
Ad2. Chyba łączy sie nie z tą bazą danych co musi, alne nie wiem jak to poprawic.


Ad2. Chyba łączy sie nie z tą bazą danych co musi, alne nie wiem jak to poprawic.
Że co? :blink:

Column count doesn't match value count at row 1
Liczba (ilość) kolumn nie zgadza się z liczbą (ilością) przypisywanych im wartości.

Czyli np. chcesz przypisać do dwóch kolumn trzy wartości. Albo do trzech kolumn dwie wartości. Już rozumiesz?

Z tamtym sobie poradziłem. Teraz mam problem z tym kodem:
<h5>Skrypty</h5> <?php $link = mysql_connect("lol.ol", "lolek", "olo"); mysql_select_db("lolek"); $query='SELECT * FROM pliki WHERE id = $id'; $result = mysql_query ($query); while ($row = mysql_fetch_array($result)) { echo('<div id="box">'); echo(' <b>Losowy plik<b><br /><br />'); echo(' Rodzaj:<br /> <b>'.$row['typ'].'<b><br />'); echo(' Nazwa:<br /><b>'.$row['nazwa'].' </b>'); echo(' XXX: <br /><b>'.$row['xxx'].'</b><br />'); echo(' Rozmiar:<br /> <b>'.$row['rozmiar'].'</b><br />'); echo(' <b><a href="http://www.costam.pl/index.php?pokaz='.$row['wiecej'].'" >Więcej</a></b>'); echo(' <b><a href="http;//www.codtam.pl/pliki/'.$row['wiecej'].'">POBIERZ< /a></b>'); echo(' </div>'); } ?>

I gdy podam taki link: przyklad.php?id=1 oczywiście z początkiem
To wywala mi taki błąd:Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/sites/yoyo.pl/s/z/szymonns/przyklad.php on line 8
Linia 8 to:while ($row = mysql_fetch_array($result))

Oczywiście rozumiem, że masz jakieś dane w bazie (chodzi o to, że na pewno zapytanie zwraca jakiś konkretny wynik)?

jak nie ma tego :WHERE id=$id to działa normalnie

$query='SELECT * FROM pliki WHERE id = '.$id;

dalej ten sam błąd.

No to kurde popraw to zapytanie na takie, żeby zwracało wynik! :> Jak będzie jakiś wynik, to nie będzie tego ostrzeżenia (możesz wytłumić, jak Ci się nie podoba, a błędu znaleźć nie potrafisz).
Użytkownik pbnan edytował ten post 17 kwiecień 2007, 17:42
Tutaj są dwie wersje, prawie te same zapytania, jedyna róznica to ta, że w 1 nie ma id, a w drugim jest.
Wersja bez id: http://www.szymonns.yoyo.pl/dziala.php
Wersja z id: http://www.szymonns....l/niedziala.php
Użytkownik simo_n edytował ten post 17 kwiecień 2007, 17:46
$query='SELECT * FROM pliki WHERE id = 1';
Pokaże coś wtedy?

Działa, pobiera wpis z id=1

Ok. Więc gdzie nadajesz wartość zmiennej $id? Bo nie widziałem... W tym jest problem - zła wartość zmiennej $id.

eeeee.. nie rozumiem.

Mam tylko ten skrypt<h5>Skrypty</h5> <?php $link = mysql_connect("lol.ol", "lolek", "olo"); mysql_select_db("lolek"); $query='SELECT * FROM pliki WHERE id = $id'; $result = mysql_query ($query); while ($row = mysql_fetch_array($result)) { echo('<div id="box">'); echo(' <b>Losowy plik<b><br /><br />'); echo(' Rodzaj:<br /> <b>'.$row['typ'].'<b><br />'); echo(' Nazwa:<br /><b>'.$row['nazwa'].' </b>'); echo(' XXX: <br /><b>'.$row['xxx'].'</b><br />'); echo(' Rozmiar:<br /> <b>'.$row['rozmiar'].'</b><br />'); echo(' <b><a href="http://www.costam.pl/index.php?pokaz='.$row['wiecej'].'" >Więcej</a></b>'); echo(' <b><a href="http;//www.codtam.pl/pliki/'.$row['wiecej'].'">POBIERZ< /a></b>'); echo(' </div>'); } ?>
Użytkownik simo_n edytował ten post 17 kwiecień 2007, 19:01
Ej, Ty nie spałeś w nocy, czy co? :blink:
Masz złą wartość zmiennej $id, którą używasz przy zapytaniu. Jak jest zła wartość, to nic się nie pobiera i masz warna na starcie.
Jak zmienisz tę linijkę:
$query='SELECT * FROM pliki WHERE id = $id';
Na taką:
$id = 1; $query='SELECT * FROM pliki WHERE id = '.$id;
...to powinno działać.

Już rozumiesz o co mi chodzi? Po prostu nigdzie nie masz przypisania do $id czegokolwiek. A powinno to być. ;)

A jak mam napisać, aby było np. 100 takich przypisanych rzeczy??

naucz się PHP i poleceń SQL. I nie tłumacz się że nie umiesz - po to masz się nauczyć :P żeby umieć. Nie rozumiesz co ludzie ci piszą a gotowców na wszystko za ciebie nie zrobią.
Użytkownik Riklaunim edytował ten post 17 kwiecień 2007, 20:03

A jak mam napisać, aby było np. 100 takich przypisanych rzeczy??
Hmmm, co?
Ja z Twojego kodu rozumiem, że chcesz wyciągnąć informacje o konkretnym pliku, prawda? Więc np. zmienną $id bierzesz z GET-a.
$id = $_GET['id_pliku'];
Jak chesz pobrać informacje o 100 plikach, to robisz takie zapytanie:
SELECT * FROM pliki LIMIT 100

I przyłączam się do Riklaunima - poucz się, najlepiej słownik + manual + rozum :)

Tylko nie mogę znaleźć.
Szukałem na php.net oraz php.pl i nie mogłem znaleźc.
Proszę o podanie linków, do jakiś b. dobrych kursów mysql.
Wiem, że wystarczy wpisać w google kurs mysql, ale nie wiem czy ten co wybiore jest dobry, dlatego proszę fachowców o podanie linków do najlepszych poradników./

http://dev.mysql.com/doc/ :P
Do baz danych trzeba mieć trzeźwy rozum, składnia poleceń to jest dopiero druga bolączka. Najpierw trzeba zatem umieć dobre bazy tworzyć. Dopiero potem się uczyć poleceń zaawansowanych. :) Tego pierwszego za bardzo się nie da nauczyć, do tego drugiego jest "manual" MySQL. Link powyżej. :)

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.