ugrás a tartalomhoz

Saját hírkezelő rendszer

Orb1337 · 2009. Júl. 26. (V), 21.46
Van egy híroldalam, ahol a híreket egy adatbázisban tárolom. A hír részei a következők: hírcím, beküldő, létrehozás dátuma, tartalom1, tartalom2.
A főoldalon megjelenik a hírcíme, készítője és a tartalom1 és egy teljes bejegyzés olvasása gomb amire rákattintva megjelenne a teljes hír. Nos itt akadtam el, hogyan tudom a teljes tartalom divbe megjeleníteni a hír tartalmát?

Következő kóddal dolgoztam:
  1. $sql = mysql_query("select * from hirek order by hirid desc",$kapcs);  
  2.                 while($hirek_row=mysql_fetch_array($sql))  
  3.                 {  
  4.                     echo "<table id='htabla' cellspacing='10'>";  
  5.                     echo "<tr><td id='htablacim'>  
  6.                           <h2><a href='?p=hirmeg&hirid=".$hirek_row['hirid']."'>".$hirek_row['cim']."</h2></a></td></tr>";  
  7.                     echo "<tr><td id='szerzo'>Szerző: ".$hirek_row['keszito']." | Dátum: ".$hirek_row['keszitesiido']."</td></tr>";  
  8.                     echo "<tr><td id='szerzo'> </td></tr>";  
  9.                     echo "<tr><td id='htablatartalom1'>"  
  10.                          .$hirek_row['tartalom1'].  
  11.                         "</td></tr><tr><td id='htablatovabb'><a href='?p=hirmeg&hirid=".$hirek_row['hirid']."'>Teljes bejegyzés olvasása>></a></td></tr><br><br>";  
  12.                   echo "</table>";  
 
1

Szerintem felesleges 2 mező,

Tanul0 · 2009. Júl. 27. (H), 11.11
Szerintem felesleges 2 mező, ha a tartalom1 a tartalom1 pl. első 200 karakterét tartalmazza. Ezt ha jól tudom, AJAX-al szokták megoldani toggle-el. Vagy php-val oldod meg:
  1. $sql = mysql_query("select * from hirek order by hirid desc",$kapcs);    
  2.    while($hirek_row=mysql_fetch_array($sql))    
  3.    {    
  4.   
  5.     if($_GET['teljesbejegyzes']==0)  
  6.     {  
  7.   
  8.      $maximum=200;//maximum megjelenített karakter a hírből  
  9.      $tartalom=$hirek_row['tartalom'];  
  10.   
  11.        if(strlen($tartalom)>$maximum)   
  12.             {  
  13.   
  14.              $tartalom=substr($tartalom, 0, $maximum);  
  15.              $tartalom='...<br><a href="?p=hirmeg&hirid=".$hirek_row['hirid']."&teljesbejegyzes=1">Teljses bejegyzes olvasása</a>;  
  16.   
  17.         }  
  18.   
  19.      }else  
  20.      $tartalom=$hirek_row['tartalom'];  
  21.   
  22.                      echo "<table id='htabla' cellspacing='10'>";    
  23.                      echo "<tr><td id='htablacim'>    
  24.                            <h2><a href='?p=hirmeg&hirid=".$hirek_row['hirid']."'>".$hirek_row['cim']."</h2></a></td></tr>";    
  25.                      echo "<tr><td id='szerzo'>Szerző: ".$hirek_row['keszito']." | Dátum: ".$hirek_row['keszitesiido']."</td></tr>";    
  26.                      echo "<tr><td id='szerzo'> </td></tr>";    
  27.                      echo "<tr><td id='htablatartalom1'>".$tartalom."</td></tr><br><br>";    
  28.                    echo "</table>";    
  29.       
2

Mindenképpen a két tartalmas

Orb1337 · 2009. Júl. 27. (H), 13.20
Mindenképpen a két tartalmas megoldás mellett maradok, mivel ha a bevezető rész hosszú, akkor lemaradna a többi karakter. Ezzel a kóddal és az én kódommal is az a baj hogy nem adja át a <a href="?p=hirmeg&hirid=xx -nak a megjelenítést
3

nem is fogja, mivel az idéző

Tanul0 · 2009. Júl. 27. (H), 13.31
nem is fogja, mivel az idéző jelekkel gond van.

Ajánlom neked, hogy használj változókat,

$hirid=$hir_row['hirid'];
$tartalom=$hir_ro....

és ne a lekérdezést echo-zd ki hanem a változót.

'<a href="?p=hirmeg&hirid='.$hirid.'">Olvasás</a>'

Így működni.
4

Köszi, megcsináltam

Orb1337 · 2009. Júl. 27. (H), 14.25
Köszi, megcsináltam változókban, azt echozom, most ha jól gondolom annyi a dolgom, hogy a hirmegjelenítő oldalamon a $hirid-t rakom a lekérdezés feltételébe és ezalapján listázom ki a mezőket.
5

Igen, de ha ajánlhatom, akkor

Tanul0 · 2009. Júl. 27. (H), 18.53
Igen, de ha ajánlhatom, akkor kicsit átgondoltabban csináld meg a dolgokat

pl.:

csinálsz egy function.inc.php -t

abba
  1. //biztonságos lekérdezés  
  2. function lekerdez($query="") {  
  3.     if(stristr($query"union")===FALSE){  
  4.     if(emptyempty($query)) return false;  
  5.     if(DEBUG == "OFF"$result = mysql_query($queryor die('Adatbázis hiba!');  
  6.     else {  
  7.         $result = mysql_query($queryor die('Adatbázishiba: '  
  8.                                                 .'<li>errorno='.mysql_errno()  
  9.                                                 .'<li>error='.mysql_error()  
  10.                                                 .'<li>query='.$query);  
  11.     }  
  12.     return $result;  
  13.     }  
  14.     else {  
  15.     die();  
  16.     }  
  17. }  
  18.   
  19. //html template bekérése  
  20. function get_html($html_template,$kiterjesztes="html") {  
  21.     $konyvtar = "path/to/html_templates"//ide írod a html hfájloknak az elérési útját  
  22.     return str_replace("\"","\\\"",implode("",file($konyvtar."/".$html_template.".".$kiterjesztes)));  
  23. }  
minden php fájlod elejére:
  1. include('functions.inc.php');  
Ez után mysql_query helyett csak annyit írsz hogy lekerdez("....")

A php kódodból kiszeded a az összes html tagot, és a html kód helyére:
  1. eval ("\$hir_template = \"".get_html("hir_template")."\";");  
  2. echo $hir_template;  
A html fájlod pedig aminek a neve hir_template.html
  1. <table id='htabla' cellspacing='10'>    
  2. <tr>  
  3.  <td id='htablacim'>    
  4.    <h2><a href="?p=hirmeg&hirid=$hirid">$hircim</h2></a>  
  5.  </td>  
  6. </tr>   
  7. <tr>  
  8.  <td id='szerzo'>  
  9.   Szerző: $szerzo | Dátum: $datum  
  10.  </td>  
  11. </tr>    
  12. <tr>  
  13.  <td id='szerzo'>  
  14.  </td>  
  15. </tr>  
  16. <tr>  
  17.  <td id='htablatartalom1'>  
  18.    $tartalom   
  19.  </td>  
  20. </tr>  
  21. <tr>  
  22.  <td id='htablatovabb'>  
  23.   <a href="?p=hirmeg&hirid=$hirid">Teljes bejegyzés olvasása>></a>  
  24.  </td>  
  25. </tr>  
  26.   <br />  
  27.   <br />    
  28. </table>