[ pvujic @ 29.08.2005. 21:48 ] @
Pozdrav svima,

Trebao bi mi netko od vas voljnih sloziti skriptu za preuzimanje podataka iz mysql db.

Napravio sam si "news" table u db, evo sql dumb:
Code:

CREATE TABLE `news` (
  `id` int(11) NOT NULL auto_increment,
  `title` varchar(255) NOT NULL default '',
  `text` text NOT NULL,
  `date` varchar(50) NOT NULL default '',
  KEY `id` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;


Zelio da mi se podatci iz te table prikazu(da izvuce samo zadnjih 10 novosti, a text svake novosti da je ogranice na 200 slova) na stranici npr ovako:
Code:

<a href="index.php?id=$id">$title</a> @ $date
<br>
$text


Bilo bi dobro kada se klikne na "title" da se moze procitati cijela novost. (npr. index.php?id=1 prikazuje samo novost pod "id" = 1 )

Ljudi znam da jako mnogo trazim, ali nadam se da ce se naci netko tko bi mi to mogao napraviti. Unaprijed jedno veliko hvala!
[ Predrag Gajic @ 29.08.2005. 22:31 ] @
Neznam kako da se izvuče samo 200 karaktera.Mada ja radim na sledeći način.
Code:
<?php
$result = mysql_query('SELECT * FROM news order by id DESC limit 0,10 ') or
die (mysql_error());
while ($row = mysql_fetch_array($result))
{
echo "<a href='index.php?id=$row[id]'>$row[title]</a> datum:$row[date]<br>
$row[text]
";
}
mysql_free_result($result);


?>

Za ovo da se prikazuje samo vest npr. id=1
idex.php
Code:
<?php
$id=$_GET['id'];
$result = mysql_query("SELECT * FROM news where id='$id' limit 0,1") or
die (mysql_error());
while ($row = mysql_fetch_array($result))
{
echo "$row[text]";
?>


Mada "skraćeni tekst" možeš da rešiš dodavanjem jos jednog polja npr.kratak_text i onda na stranici gde želiš ubaciš $row[kratak_text] ...

Nadam se da sam ti donekle pomogao pošto ni Ja ne znam najbolje PHP,mada ćeš dobiti bolja i jednostavnija rešenja od nekog drugog...
[ Nemanja Avramović @ 29.08.2005. 23:11 ] @
za skraceni tekst.. ovako sam ja to radio pre... verovatno moze jednostavnije, nisam se bash zanimao sa ovim...:
Code:

error_reporting(0); //za svaki slucaj...
//definisi promenljive
$tekst = 'moj veeeeeeeeeeeeeeeeeeeeeeeeeeliki teeeeeeekst, moj veeeeeeeeeeeeeeeeeeeeeeeeeeeeeliki teeeeeeekst, moj veeeeeeeeeeeeeeeeeeeeeeeeeeeeeliki teeeeeeekst';
$skrati_na = 50;
//ne diraj
$skratinaminusjedan = $skrati_na - 1;
        if (strlen($tekst)>$skratinaminusjedan) {        
            for ($i = 0; $i < $skrati_na; $i++) {
              $deoteksta = $deoteksta . $tekst[$i];
            }
            $deoteksta = $deoteksta . '...'; //add '...'
        } 
        else {
        $deoteksta = $tekst;
        }
// ispis
echo $deoteksta;


[Ovu poruku je menjao JaHvram dana 30.08.2005. u 00:12 GMT+1]
[ Dejan Topalovic @ 30.08.2005. 08:37 ] @
wordwrap
[ noviKorisnik @ 30.08.2005. 09:02 ] @
substr
[ Nemanja Avramović @ 30.08.2005. 10:12 ] @
stripy, kako iskoristiti wordwrap za `odsecanje`? daj mi primer plz

...pa da, znao sam da ima nesto kao echo substr('abcdef // tekst duzi od 30 karaktera', 0, 30); // abcd sto moze da resi problem... samo uradis proveru (kao ja gore) da bi eventualno dodao '...' na kraju ako je zaista odsechen string

[Ovu poruku je menjao JaHvram dana 30.08.2005. u 11:13 GMT+1]
[ Nemanja Avramović @ 30.08.2005. 10:33 ] @
evo jos nesto zanimljivo iz php manual-a:

Code:

// example use:
// elliStr("have a nice day",8,1);
// results:
// have a nice...
//
// elliStr("have a nice day",8,0);
// results:
// have a n...

function elliStr($s,$n,$e) {
   if ( isset($e) ) {
     if ( $e == 1 ) {
         if ( substr(substr($s, 0, $n), -1, 0) != " " ) {
           for ( $x = 0; $x <= strlen($s); $x++ ) {
               if ( substr($s, strlen(substr($s, 0, $n))+$x-1, 1) == " " ) {
                 $newendval = $x;
                 $stop = 1;
               } else {
                 print(substr(substr($s, 0, $n), strlen(substr($s, 0, $n)), $x));
               }
               if ( isset($stop) ) {
                 return substr($s, 0, $n+$x-1) . "...";
               }
           }
         } else {
           return substr($s, 0, $n) . "...";
         }
     } else {
         if (strlen($s) > $n) {
           return substr($s, 0, $n) . "...";
         } else {
           return $s;
         }
     }
   } else {
     return false;
   }
}


ovo moze da odseche string na kraju rechi a ne na tacno odredjenom mestu (kako ne bi prekinulo rech)
[ pvujic @ 30.08.2005. 12:48 ] @
Citat:
Predrag Gajic: Neznam kako da se izvuče samo 200 karaktera.Mada ja radim na sledeći način.
Code:
<?php
$result = mysql_query('SELECT * FROM news order by id DESC limit 0,10 ') or
die (mysql_error());
while ($row = mysql_fetch_array($result))
{
echo "<a href='index.php?id=$row[id]'>$row[title]</a> datum:$row[date]<br>
$row[text]
";
}
mysql_free_result($result);


?>

Za ovo da se prikazuje samo vest npr. id=1
idex.php
Code:
<?php
$id=$_GET['id'];
$result = mysql_query("SELECT * FROM news where id='$id' limit 0,1") or
die (mysql_error());
while ($row = mysql_fetch_array($result))
{
echo "$row[text]";
?>


Mada "skraćeni tekst" možeš da rešiš dodavanjem jos jednog polja npr.kratak_text i onda na stranici gde želiš ubaciš $row[kratak_text] ...

Nadam se da sam ti donekle pomogao pošto ni Ja ne znam najbolje PHP,mada ćeš dobiti bolja i jednostavnija rešenja od nekog drugog...


Jeli bi se mogle ove dvije skripte spojiti u jednu?
[ Nemanja Avramović @ 30.08.2005. 15:23 ] @
pa sta treba da citas? sve ili samo jednu vest?
[ pvujic @ 30.08.2005. 16:23 ] @
Treba da se na index.php izlistaju sve vijesti i da sve svaku vijesti moze cijelu procitati.
[ sale83 @ 31.08.2005. 05:48 ] @
Sto se tice skracivanja stringa tj dugackog texta na reci tako da ne poremetis odredjenu rec mogao bi to ovako da uradis

Code:

$string = "Rec1 Rec2 Rec3 Rec4 Rec5 Rec6 
Rec3 Rec7 Rec8 Rec9 Rec10 Rec11 Rec12 Rec13 Rec14 Rec15 Rec16";

// $Broj_reci = 10; ovo ti je koliko oces reci da prikazes iz stringa

$Broj_reci = 10; // Prikazi 10 reci

for($j=0, $i = 0; $j < strlen($string); $j++)
{
   if($string[$j] == ' ') $i++;

   if($i == $Broj_reci) 
   break;
}

echo substr($string, 0, $j);



Pozzzzzzzz


[Ovu poruku je menjao sale83 dana 31.08.2005. u 06:57 GMT+1]
[ Nemanja Avramović @ 31.08.2005. 11:45 ] @
vesti.php (listanje svih)
Code:

<?php

$skrati_na = 20; //na koliko slova da odseche text


function elliStr($s,$n,$e) {
   if ( isset($e) ) {
     if ( $e == 1 ) {
         if ( substr(substr($s, 0, $n), -1, 0) != " " ) {
           for ( $x = 0; $x <= strlen($s); $x++ ) {
               if ( substr($s, strlen(substr($s, 0, $n))+$x-1, 1) == " " ) {
                 $newendval = $x;
                 $stop = 1;
               } else {
                 print(substr(substr($s, 0, $n), strlen(substr($s, 0, $n)), $x));
               }
               if ( isset($stop) ) {
                 return substr($s, 0, $n+$x-1) . "...";
               }
           }
         } else {
           return substr($s, 0, $n) . "...";
         }
     } else {
         if (strlen($s) > $n) {
           return substr($s, 0, $n) . "...";
         } else {
           return $s;
         }
     }
   } else {
     return false;
   }
}

$result = mysql_query('SELECT * FROM news order by id DESC limit 0,10 ') or
die (mysql_error());
while ($row = mysql_fetch_array($result))
{
$id = $row['id'];
$title = $row['title'];
$text = $row['text'];
$date = $row['date'];
$kratak_text = elliStr($text,$skrati_na,1);
echo "<a href='citaj.php?id=$id'>$title</a> datum:$date<br>\n$kratak_text";
}
mysql_free_result($result);


?>



citaj.php (prikaz samo jedne)
Code:

$id=$_GET['id'];
$result = mysql_query("SELECT * FROM news where id='$id' limit 0,1") or
die (mysql_error());
while ($row = mysql_fetch_array($result))
{
$title = $row['title'];
$text = $row['text'];
$date = $row['date'];
echo "<h2>$title [$date]</h2><br>\n$text";
}


nisam isprobao ovo tako da moguce da ne radi... javi da li je uspelo i - srecno ;)

[Ovu poruku je menjao JaHvram dana 31.08.2005. u 12:46 GMT+1]
[ pvujic @ 31.08.2005. 17:06 ] @
JaHvram, sve radi, hvala ti puno! Imam samo jos jedno pitanje/molbu: jeli se mogu vijesti.php i citaj.php spojiti u jednu skriptu?
[ Nemanja Avramović @ 31.08.2005. 17:53 ] @
moze, ali ti ne preporucujem to, dzabe komplikujes:

Code:

<?php
error_reporting(0);
$id = $_GET['id'];
if (!$id) {
//ovde iskopiraj kompletan vesti.php (samo bez znakova <?php i ?>)

//eh da, ono sto treba da izmenis je:
//echo "<a href='citaj.php?id=$id'>$title</a> datum:$date<br>\n$kratak_text";
//sa:
//echo "<a href='?id=$id'>$title</a> datum: $date<br>\n$kratak_text";
}
else {
//ovde iskopiraj kompletan citaj.php (samo bez znakova <?php i ?>)

//mozes da izbacis:
//$id = $_GET['id'];
//jer ga imas gore... gore treba da bude
}
?>


ako ne skontas... ma skontaj, nije tesko :D

[Ovu poruku je menjao JaHvram dana 31.08.2005. u 18:59 GMT+1]
[ pvujic @ 31.08.2005. 19:04 ] @
Sve radi kako treba! Puno zahvaljujem JaHvram-u i drugima koji su barem pokusali pomoci. ;)