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:

$sql = mysql_query("select * from hirek order by hirid desc",$kapcs);
				while($hirek_row=mysql_fetch_array($sql))
        		{
            	    echo "<table id='htabla' cellspacing='10'>";
            	    echo "<tr><td id='htablacim'>
            	          <h2><a href='?p=hirmeg&hirid=".$hirek_row['hirid']."'>".$hirek_row['cim']."</h2></a></td></tr>";
                    echo "<tr><td id='szerzo'>Szerző: ".$hirek_row['keszito']." | Dátum: ".$hirek_row['keszitesiido']."</td></tr>";
                    echo "<tr><td id='szerzo'> </td></tr>";
                    echo "<tr><td id='htablatartalom1'>"
          	             .$hirek_row['tartalom1'].
          	            "</td></tr><tr><td id='htablatovabb'><a href='?p=hirmeg&hirid=".$hirek_row['hirid']."'>Teljes bejegyzés olvasása>></a></td></tr><br><br>";
          	      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:

$sql = mysql_query("select * from hirek order by hirid desc",$kapcs);  
   while($hirek_row=mysql_fetch_array($sql))  
   {  

    if($_GET['teljesbejegyzes']==0)
    {

     $maximum=200;//maximum megjelenített karakter a hírből
     $tartalom=$hirek_row['tartalom'];

       if(strlen($tartalom)>$maximum) 
            {

             $tartalom=substr($tartalom, 0, $maximum);
             $tartalom='...<br><a href="?p=hirmeg&hirid=".$hirek_row['hirid']."&teljesbejegyzes=1">Teljses bejegyzes olvasása</a>;

	    }

     }else
     $tartalom=$hirek_row['tartalom'];

                     echo "<table id='htabla' cellspacing='10'>";  
                     echo "<tr><td id='htablacim'>  
                           <h2><a href='?p=hirmeg&hirid=".$hirek_row['hirid']."'>".$hirek_row['cim']."</h2></a></td></tr>";  
                     echo "<tr><td id='szerzo'>Szerző: ".$hirek_row['keszito']." | Dátum: ".$hirek_row['keszitesiido']."</td></tr>";  
                     echo "<tr><td id='szerzo'> </td></tr>";  
                     echo "<tr><td id='htablatartalom1'>".$tartalom."</td></tr><br><br>";  
                   echo "</table>";  
	

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


//biztonságos lekérdezés
function lekerdez($query="") {
    if(stristr($query, "union")===FALSE){
	if(empty($query)) return false;
	if(DEBUG == "OFF") $result = mysql_query($query) or die('Adatbázis hiba!');
	else {
		$result = mysql_query($query) or die('Adatbázishiba: '
												.'<li>errorno='.mysql_errno()
												.'<li>error='.mysql_error()
												.'<li>query='.$query);
	}
	return $result;
    }
    else {
    die();
    }
}

//html template bekérése
function get_html($html_template,$kiterjesztes="html") {
    $konyvtar = "path/to/html_templates"; //ide írod a html hfájloknak az elérési útját
    return str_replace("\"","\\\"",implode("",file($konyvtar."/".$html_template.".".$kiterjesztes)));
}

minden php fájlod elejére:

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:

eval ("\$hir_template = \"".get_html("hir_template")."\";");
echo $hir_template;
A html fájlod pedig aminek a neve hir_template.html

<table id='htabla' cellspacing='10'>  
<tr>
 <td id='htablacim'>  
   <h2><a href="?p=hirmeg&hirid=$hirid">$hircim</h2></a>
 </td>
</tr> 
<tr>
 <td id='szerzo'>
  Szerző: $szerzo | Dátum: $datum
 </td>
</tr>  
<tr>
 <td id='szerzo'>
 </td>
</tr>
<tr>
 <td id='htablatartalom1'>
   $tartalom 
 </td>
</tr>
<tr>
 <td id='htablatovabb'>
  <a href="?p=hirmeg&hirid=$hirid">Teljes bejegyzés olvasása>></a>
 </td>
</tr>
  <br />
  <br />  
</table>