Jump to content
Sign in to follow this  
robgar

Bare en del av dokumentet i include(), Hvordan?

Recommended Posts

Har en Index, der jeg har hentet opp "News.php" , som (du sikkert skjønte) er den filen hvor nyhetene ligger. De er avskilt i tabeller.

 

Men etterhvert ble den siden grådig lang.

 

Jeg lurer på om det går ann å include() bare de 2 første (altså de nyeste) tabellene , fra News.php

Share this post


Link to post

Slik:

 

 

<style type="text/css">
<!--
@import url("stil.css");
-->
</style>


<table width="338" height="71"  border="1" cellpadding="0" cellspacing="0" bordercolor="#666666" bgcolor="#FFFFFF">
 <!--DWLayoutTable-->
 <tr> 
   <td width="334" height="87" valign="top" bgcolor="#FFFFCC"><p> 11.09.04 14:45 
       GMT </p>
     <pre> <a href="news.php"><img src="images/icons/Image11.gif" width="32" height="32" border="0"></a> Made this a clan under <a onClick="getcb()">ClanBase</a></pre></td>
 </tr>
</table>
<p> </p>
<table width="338" height="71"  border="1" cellpadding="0" cellspacing="0" bordercolor="#666666" bgcolor="#FFFFFF">
 <!--DWLayoutTable-->
 <tr> 
   <td width="334" height="87" valign="top" bgcolor="#FFFFCC"><p> 11/09-2004 
       13:37 GMT</p>
     <pre> <a href="news.php"><img src="images/icons/Image11.gif" width="32" height="32" border="0"></a> Added a few links to the site. 
Also added time mode on news (GMT +1) </pre></td>
   </tr>
</table>
<p> </p>
<table width="338" height="71"  border="1" cellpadding="0" cellspacing="0" bordercolor="#666666" bgcolor="#FFFFFF">
 <!--DWLayoutTable-->
 <tr> 
   <td width="334" height="103" valign="top" bgcolor="#FFFFCC"><p>10/09-2004 
       01:04 GMT</p>
     <pre> <a href="news.php"><img src="images/icons/Image11.gif" width="32" height="32" border="0"></a> The design is finish (though a 
easy one), and the site is about to be
ready to be launched.</pre></td>
 </tr>
</table>

Share this post


Link to post

Ooh, tabellsuppe :w00t:

 

Ontopic:

Antar at news.php er en del av ettellerannet ferdigmekket news-script..? I så fall bør det være en innstilling i scriptet hvor du kan velge antall nyheter på hver side. Hvis ikke: bytt script :thumbup:

Share this post


Link to post
Ontopic:

Antar at news.php er en del av ettellerannet ferdigmekket news-script..?

Bruker ikke News script nei. Bare kopierte Tabellen på siden, og forandret på teksten :(

 

Er interesert i et slikt script, Helst i Php, det er nettop det jeg spurte etter..

 

Takk for hjelpen uansett! :)

Share this post


Link to post

Du kan jo kjapt proeve noe slikt som en midlertidig loesning:

 

	function print_partial_news( $news_file='news.php', $number_of_news=5 ) {
 if( file_exists( $news_file ) ) {
 	$newstables = file_get_contents( $news_file );
 	$offset = 0;
 	for( $i=0; $i < $number_of_news; $i++ ) {
   $end_of_table_pos = strpos( $newstables, '<p> </p>', $offset );
   $offset = $end_of_table_pos + 14;
 	}
 	echo( substr( $newstables, 0, $offset ) );
 	Return true;
 }
 Return false;
}

 

NB: jeg har ikke testet denne funksjonen, bare tastet den inn, slik at feil kan forekomme.

 

hilsen sprintf

Edited by sprintf

Share this post


Link to post
Ontopic:

Antar at news.php er en del av ettellerannet ferdigmekket news-script..?

Er interesert i et slikt script, Helst i Php, det er nettop det jeg spurte etter..

Kan anbefale CuteNews eller CuteNews AJ-fork

 

Vil du ha noe mer avansert, så kan Wordpress eller Textpattern være verdt en titt.

Disse bruker PHP og mySQL

Edited by PT

Share this post


Link to post

Tenkte litt på saken, og kom fram til at mysql er tingen her.

noe alla dette:

 

(Er ikke sikker på om det virker. Bare skrev scriptet, og prøvde ikke!)

 

Lage tabell (NB: forutsetter at du har en database!)

 

ny fil (lagetabell.php)


<?php

mysql_connect('HOST/SERVER', 'bruker', 'passord');
mysql_select_db('databasenavn');


$query = "CREATE TABLE `nyheter` (
 `id` INT(150) NOT NULL AUTO_INCREMENT, 
 `overskrift` varchar(255) NOT NULL,
`nyhet` TEXT NOT NULL, 
 `dato` varchar(18) NOT NULL,
 PRIMARY KEY (`id`)
);";

mysql_query($query);

?>

 

 

hente 5 nyeste nyheter

 

ny fil (Index.php)

<?php

// velg database
mysql_connect('HOST', 'bruker', 'passord');
mysql_select_db('database');

// Henter de 5 nyeste nyhetene Sortert etter dato

$topp5 = mysql_query("SELECT * FROM nyheter ORDER BY dato DESC LIMIT 0,5");


while($f_topp5 = mysql_fetch_array($topp5))
{
   
$overskrift = $f_topp5["overskrift"]; 
$nyhet = $f_topp5["nyhet"];
$dato = $f_topp5["dato"];
$id = $f_topp5["id"];
   

//Lagg tabbelen slik du selv vil ha den her:

print('<table width="400"  border="1" bordercolor="#666666" bgcolor="#FFFFFF" cellpadding="0" cellspacing="0">
 <!--DWLayoutTable-->
 <tr> 
   <td width="396" valign="top" bgcolor="#FFFFCC"><blockquote> 
        ' .$overskrift. '  ' .$dato. '  ID:  ' .$id. '
     </blockquote>
     <pre>' .$nyhet. '</pre></td>
 </tr>
</table>');
}

?>

 

 

 

Ny fil (ny.php)

 

<html>

<head><title>Ny</title>

</head>


<body>

<form name="generere" action=ny.php method=POST>
   <table>
      <tr>
         <td colspan="2">

 <h1><center>Lag ny nyhet!</center></h1>

 </td>
     </tr>

<td>Overskrift:
</td>
     
<td> <input type=text name=overskrift>
 </td>
     </tr>

<tr>
  
  <td>Nyhet:
</td>

<td><TEXTAREA name=nyhet></TEXTAREA>
 </td>
     </tr>

<tr>
<td colspan="2"><input type=submit name=submit value=lag ny nyhet>
   </td>

</tr>

      </table>

</form>

<?php

mysql_connect('localhost', 'tonethos', 'KARBON');

mysql_select_db('tonethos_loginliste');

$overskrift = $_POST['overskrift'];
$nyhet = $_POST['nyhet'];
$dato = date("d/m-y H:i");

if (isset($overskrift))
{
 if (isset($nyhet))
{
mysql_query("INSERT INTO nyheter  (id, overskrift, nyhet, dato)
     VALUES ('', '$overskrift', '$nyhet', '$dato');");
}
}

else
{
print('Skriv inn Overskrift!'); 


print('Skriv inn en nyhet!');

}   
?>


</body>
</html>

 

 

 

 

EDIT: testet nå, det virker, men bare beta (det vil si at jeg kan gjøre mer ut av det. kort sagt :) )

Edited by robgar

Share this post


Link to post

Kom på at man kan bestemme antall nyheter slik:

(ved å legge til på url'en til index.php:

index.php?antall=4 -> vil gi 4 nyheter.

 

index.php

<?php

mysql_connect('HOST', 'bruker', 'passord');
mysql_select_db('database');


$antall_get = $_GET['antall'];

if (empty$antall_get)) 
{
$antall=intval($antall_get);
}

else
{
$antall = "5";
}


$topp5 = 'mysql_query("SELECT * FROM nyheter ORDER BY dato DESC LIMIT 0,(`$antall`)');

while($f_topp5 = mysql_fetch_array($topp5))
{
   
$overskrift = $f_topp5["overskrift"]; 
$nyhet = $f_topp5["nyhet"];
$dato = $f_topp5["dato"];
    
print('
   <table>
<tr>
 <td>
     <center>
      <h1>' .$overskrift. '</h1>' .$dato. '</center>
<br> 
     <div align=left>' .$nyhet. ' </div>
</tr>
 </td>
  </table>');
}

?>

 

Må igjen tilføye at det ikke er testet..

Edited by robgar

Share this post


Link to post
$antall_get = $_GET['antall'];

 

if (isset($antall_get)) $antall=$antall_get;

 

else

{

$antall = "5";

}

 

Et enkelt og sikrere alternativ er:

$antall = 5;
if( !empty($_REQUEST['antall'] ) {
   $antall = intval( $_REQUEST['antall'] );
}

Slik unngår man at ondskapsfulle individer legger inn SQL kode ( index.php?antall=SQL-kode ) og får tilgang på databasen din.

Share this post


Link to post

Er det det samme om jeg bruker $_GET istedenfor $_REQUEST ?

 

$antall = 5;
if( empty($_GET['antall'] ) {
  $antall = intval( $_GET['antall'] );
}

 

Og takk for alle svar! :)

Edited by robgar

Share this post


Link to post

Jepp, desom du alltid propagerer 'antall' gjennom URL'en burker du $_GET.

 

Det vilktige å huske på er alltid å validere verdier som hentes gjennom htttp request (post, get, cookies) - spesielt dersom disse verdiene inngår i en SQL transaksjon. I dette tilfellet sikrer du deg mot "SQL injection" gjennom bruk av funksjonen intval().

Share this post


Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...