Произволен виц с php

winers

Registered
Имам малка система за добавяне на вицове

CREATE TABLE `jokes` (
`id` int(12) NOT NULL AUTO_INCREMENT,
`title` varchar(150) COLLATE utf8_unicode_ci NOT NULL,
`novina` text COLLATE utf8_unicode_ci NOT NULL,
`avtor` varchar(25) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=9 ;

Въпроса ми е как да изведа произволен виц на главната страница?
Тоест може и при refresh на страницата да се сменява вица.?
 
Ev0luti0N каза:
winers каза:
А може ли пълното кодче...?
PHP:
$zaqvka = mysql_query("SELECT * FROM `jokes` ORDER BY RAND()");
Следващият път вече няма да може. :?:

Направих го + странициране, но ми показва последният добавен виц..

PHP:
<?php
include ('includes/conf.php');//добавяме config файла
$broinastranica = 1;
$pageNum = 1;
if(isset($_GET['page']))
{
$pageNum = $_GET['page'];
}
$redove = ($pageNum - 1) * $broinastranica;

$query = ("SELECT * FROM `jokes` ORDER BY RAND()");
$result = mysql_query($query) or die('Error, query failed');
$row = mysql_fetch_array($result, MYSQL_ASSOC);
$numrows = $row['numrows'];


$maxPage = ceil($numrows/$broinastranica);

$self = $_SERVER['PHP_SELF'];
$nomeranastranici = '';

for($page = 1; $page <= $maxPage; $page++)
{
if ($page == $pageNum)
{
$nomeranastranici .= " $page ";
}
else
{
$nomeranastranici .= " <a href="$self?page=$page">[$page]</a> ";
}
}

if ($pageNum > 1)
{
$page = $pageNum - 1;
$predishna = " <font color=orange><a href="$self?page=$page"> <img src='templates/left.png'> </a></font> ";
}
else
{
$predishna = ' ';
}
$npage=$pageNum;
$nn=$pageNum+1;
if ($maxPage != $npage AND $maxPage > $npage)
{
$next = " <font color=orange><a href="$self?page=$nn"> <img src='templates/right.png'> </a></font>";
}
else
{
$next = "";
}

$sqlquery = "SELECT * from jokes order by id desc LIMIT $redove, $broinastranica";

$queryresult = mysql_query($sqlquery)
or die ("Заявката не може да се изпълни");
//показване на данните от базата данни
while ($row = mysql_fetch_array($queryresult))
{


if (strlen($row[ime])>$zbroi)
{$totchki='...';}
else
{$totchki='';}
$kratko = substr($row[ime],0,$zbroi);

echo "
<b>$row[title]</b><br /><br />$row[novina]<br /><hr><br />
".
$pic."



";
}
echo "<div class='paging'>";
   echo "<font color = '#000' />$predishna</font>";
   echo "<font color = '#000' /> </font>";
echo "<font color = '#000' /> $nomeranastranici</font>";
   echo "<font color = '#000' />$next</font>";
   echo "</div>";
?>
 
Закакво ти е странициране на произволни резултати?
Не можеш ли просто да зададеш лимит на резултатите пример 20 и като рефрешне страницата да му покаже други 20 резултата?
 
Промени това:
PHP:
$sqlquery = "SELECT * from jokes order by id desc LIMIT $redove, $broinastranica";

с това:
PHP:
$sqlquery = "SELECT * from `jokes` order by RAND() desc LIMIT $redove, $broinastranica";
 
Използвам страницирането, защото замених само кодчетата, защото немога да го напиша сам трябва ми малко ум :)

nfarkt така ми изкарва последно каченият виц
 
Пич, ето ти един хубав код от мен, за извеждане на произволни 5 вица, от таблица jokes, като всеки виц се съкращава, и се появяват само 15 символа от него.

PHP:
<?php
$sql = mysql_query("SELECT * FROM `[b]jokes[/b]` order by [b]RAND() [/b] DESC limit [b]5[/b]") or die(mysql_error());
echo "<table><tr><td>";
function sakra6tenie($promenliva,$promenliva2,$promenliva3) {
$razdelqne = explode(" ",$promenliva); // разделяме текста на думи
$kolko_dumi = count($razdelqne); // преброяваме колко думи имаме в даденият текст
if ($kolko_dumi > $promenliva2) { // тук правим проверка дали думите в текста са повече от указаният от нас брой
for ($i=0;$i<$promenliva2;$i++) {
$izhod .= $razdelqne[$i]." ";
}
echo $izhod.$promenliva3; // тук изкарваме текста,но с първите няколко думи, които желаем само да се показват
} else {
echo $promenliva; // тук изкарваме всички думи, защото текста не надхвърля указаният от нас брой думи
}
} 

while($raw = mysql_fetch_array($sql)) {
$i = 1;
$id_vic = ($raw['id_vic']);
$url = ($raw['url']);
$ot = ($raw['ot']);
$vic = ($raw['vic']);
$text = "$vic";
sakra6tenie($text,[b]15[/b],"..."); 
if($i == 1) { echo "</td><td>"; } else { $i = 0; echo "</td></tr><tr><td>"; }
}
echo "</td></tr></table>";
?>
 
Не се появява нищо.. пробвах с твоя код, а пробвах и като промених

$id_vic = ($raw['id']);
$url = ($raw['url']);
$ot = ($raw['avtor']);
$vic = ($raw['novina']);
$text = "$novina";
 
PHP:
<?php
$sql = mysql_query("SELECT * FROM `jokes` order by RAND()  limit 5") or die(mysql_error());
echo "<table><tr><td>";
function sakra6tenie($promenliva,$promenliva2,$promenliva3) {
$razdelqne = explode(" ",$promenliva); // разделяме текста на думи
$kolko_dumi = count($razdelqne); // преброяваме колко думи имаме в даденият текст
if ($kolko_dumi > $promenliva2) { // тук правим проверка дали думите в текста са повече от указаният от нас брой
for ($i=0;$i<$promenliva2;$i++) {
$izhod .= $razdelqne[$i]." ";
}
echo $izhod.$promenliva3; // тук изкарваме текста,но с първите няколко думи, които желаем само да се показват
} else {
echo $promenliva; // тук изкарваме всички думи, защото текста не надхвърля указаният от нас брой думи
}
} 

while($raw = mysql_fetch_array($sql)) {
$i = 1;
$id_vic = ($raw['id_vic']);
$url = ($raw['url']);
$ot = ($raw['ot']);
$vic = ($raw['vic']);
$text = "$vic";
sakra6tenie($text,15,"..."); 
if($i == 1) { echo "</td><td>"; } else { $i = 0; echo "</td></tr><tr><td>"; }
}
echo "</td></tr></table>";
?>

Така? Промени си всички дефиниции. Разгледай от близо, и всичко промени и пробвай!
 
PHP:
$query = mysql_query("SELECT * FROM `jokes` ORDER BY RAND()");
while($row = mysql_fetch_assoc($query))
{
echo '<table border="0">
<tr><th>' . $row['title'] . '</th></tr>
<tr><td>' . $row['novina'] . '</td></tr>
<tr><td>' . $row['avtor'] . '</td></tr>
</table><br />';
}
 
Ev0luti0N каза:
PHP:
$query = mysql_query("SELECT * FROM `jokes` ORDER BY RAND()");
while($row = mysql_fetch_assoc($query))
{
echo '<table border="0">
<tr><th>' . $row['title'] . '</th></tr>
<tr><td>' . $row['novina'] . '</td></tr>
<tr><td>' . $row['avtor'] . '</td></tr>
</table><br />';
}
 
Wtf?
...сложил съм ти лимитиране. Показва по 10 произволни резултата.

PHP:
<?php
$query = mysql_query("SELECT * FROM `jokes` ORDER BY RAND() LIMIT 0,10")or die (mysql_error());
while($row = mysql_fetch_array($query)) {
$title = $row['title'];
$novina = $row['novina']
$avtor = $row['avtor'];
echo "$title<br />$novina<br />Автор: $avtor<br /><hr />";
}
?>
 
Evolution:

Parse error: syntax error, unexpected $end in /home/a7949157/public_html/vladi/functions.php on line 233

n0m3r1

Parse error: syntax error, unexpected T_VARIABLE in /home/a7949157/public_html/vladi/functions.php on line 211

211 ред $avtor = $row['novina'] махам го и се появява грешка пак на 211 ред с следният код
echo "$title<br />$novina<br />Автор: $avtor<br /><hr />";
 
PHP:
<?php
$query = mysql_query("SELECT * FROM `jokes` ORDER BY RAND() LIMIT 0,10")or die (mysql_error());
while($row = mysql_fetch_array($query)) {
$title = $row['title'];
$novina = $row['novina'];
$avtor = $row['avtor'];
echo "$title<br />$novina<br />Автор: $avtor<br /><hr />";
}
?>
 

Back
Горе