webForumDet fria alternativet
Logga in / Bli medlem

Ändra antal mot limit

PHP

8 svar · 292 visningar · startad av Melea

Medlem sedan juli 20033 147 inlägg
Trådstart#1

Kom inte på någon direkt bra rubrik så får förklara mig här istället.
Har en kod som loopar ut alla datum där det finns några nyheter i och sen skriver ut nyheterna under dessa datum. Nu måste jag ändra antalet dagar den ska söka bakåt i tiden efter nyheter för att få fram de riktigt gamla. För om man inte skriver en nyhet på kanske 2 veckor finns det inga i nyhetslistan. Jag vill alltså byta ut antalet dagar mot en limit 14 eller liknande. This is how it looks

<?
echo "<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\" width=\"100%\">";

	for ($i = 0; $i <= 50 ; $i++){

	   $t = 60*60*24*$i;
  	   $datum1a = date("Y-m-", date("U") -$t);
 	   $datum1b = date("d", date("U") -$t);
  	   $datum1c = $datum1a.$datum1b;

  	   $datum1aa = date("l", date("U") -$t);
 	   $datum1bb = date(" jS", date("U") -$t);
  	   $datum1cc = $datum1aa.$datum1bb;

  	   $SQL = mysql_query("SELECT * FROM teamswe_news where datum_short = '$datum1c' order by id desc") or die (mysql_error());

			if (mysql_num_rows($SQL) <> 0) {

			echo "<tr><td style=\"color: #FFFFFF; font-weight: bold;\">".$datum1cc."</td></tr><tr>";

			while($objRS = mysql_fetch_array($SQL)) {

			$SQL2 = mysql_query("SELECT Count(*) AS iCount FROM teamswe_newscom where newsid = $objRS[id]") or die (mysql_error());
			$objM = mysql_fetch_array($SQL2);
?>

<td class="menu_left_topic">(<?=$objM[iCount]?>) <a href="index.php?show=news&id=<?=$objRS['id']?>">
<?
    $tecken = 27;
    $str = $objRS['rubrik'];
    $strLenen = strlen($str);

    if ($strLenen > $tecken) {
        $str = substr($str,0,($tecken-3));
        echo " ".$str."...";
    } else {
        echo $str;
    }
?>
</a></td>
</tr><tr>

<?
			} // If satsen som kollar om det finns några poster slutar här
		} // Loopen slutar här
	} // For satsen slutar här

echo "</table>";
?>

Tack på förhand
Mvh

Medlem sedan jan. 200215 inlägg
#2

pröva att ange "SELECT TOP 5 *" i sql-strängen istället, då returneras de övre fem (eller färre om det inte finns fler) raderna, baserat på de villkor som du ställer upp.
med WHERE kan du sedan enkelt begränsa hur gammal nyheten får vara.

//jocke

Medlem sedan juni 200032 967 inlägg
#3

joakimbr skrev:

pröva att ange "SELECT TOP 5 *" i sql-strängen istället, då returneras de övre fem (eller färre om det inte finns fler) raderna, baserat på de villkor som du ställer upp.
med WHERE kan du sedan enkelt begränsa hur gammal nyheten får vara.

//jocke

TOP används inte i MySQL, utan i MySQL använder man LIMIT, som Melea skriver.

Tyvärr kan jag inte hjälpa till med ursprungsfrågan.

Medlem sedan aug. 20002 975 inlägg
#4
SELECT * FROM teamswe_news ORDER BY id DESC LIMIT 14

Bör ge dig de 14 senaste posterna.

Om du har en datum/tid-kolumn bör du använda denna istället för id att sortera mot.

Medlem sedan juli 20033 147 inlägg
#5

Koden ovanför skriver ut

[b]Fredag 14 Januari[/b]
Välkommen till sidan
Jonas vann SM i dator!
[b]Måndag 17 Januari[/b]
wF får pris i blabla

Fast den skriver ut de nyheterna som är 50 eller mindre dagar gamla (for ($i = 0; $i <= 50 ; $i++){). Det jag vill göra är att bygga om koden så den skriver ut de 14 senaste men ändå med samma system som Måndag 17 Januari osv...

Har 2 st datumkolumner, en med datetime 2004-02-28 13:41:02 och en varchar som sparar Friday 12th December

Tips någon? :)

Medlem sedan aug. 20002 975 inlägg
#6

Vad har du for-satsen till ?

Testa något på det här hållet:

<?php

echo "<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\" width=\"100%\">";

$sql = "SELECT * FROM teamswe_news ORDER BY id DESC LIMIT 14";
$SQL = mysql_query($sql);

while($objRS = mysql_fetch_array($SQL)) {

    echo "<tr>\n<td style=\"color: #FFFFFF; font-weight: bold;\">
          {$objRS['kolumnnamn_datum_text']}</td>\n</tr>";

    $sql = "SELECT Count(*) AS iCount FROM teamswe_newscom 
           WHERE newsid = $objRS[id]";
    $SQL2 = mysql_query($sql) or die (mysql_error());
    $objM = mysql_fetch_array($SQL2);
    
    echo "<tr>\n<td class=\"menu_left_topic\">({$objM['iCount']})
          <a href=\"index.php?show=news&id={$objRS['id']}\">\n";

    $tecken = 27;
    $str = $objRS['rubrik'];
    $strLenen = strlen($str);

    if ($strLenen > $tecken) {
        $str = substr($str,0,($tecken-3));
        echo " ".$str."...";
    } else {
        echo $str;
    }
    
    echo "</a></td>\n</tr>\n";

}

echo "</table>";

?>
Medlem sedan juli 20033 147 inlägg
#7

Weho! Funkar halvt som halvt... problemet är att den skriver ut:

[b]Monday 9th February[/b] 
(7) SWE.bw lost to Canada 
[b]Monday 9th February [/b]
(5) Sweden gets support! 
[b]Monday 9th February [/b]
(0) Inferno Online - Tours

Istället för

[b]Monday 9th February[/b]
(7) SWE.bw lost to Canada
(5) Sweden gets support! 
(0) Inferno Online - Tours

:OO

Medlem sedan aug. 20002 975 inlägg
#8

Testa det här då:

<?php

echo "<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\" width=\"100%\">";

$sql = "SELECT * FROM teamswe_news ORDER BY id DESC LIMIT 14";
$SQL = mysql_query($sql);

$headline = '';

while($objRS = mysql_fetch_array($SQL)) {

    if ($headline != $objRS['kolumnnamn_datum_text']) {

        $headline = $objRS['kolumnnamn_datum_text']

        echo "<tr>\n<td style=\"color: #FFFFFF; font-weight: bold;\">
              $headline \n</td>\n</tr>\n";

    }

    $sql = "SELECT Count(*) AS iCount FROM teamswe_newscom 
           WHERE newsid = $objRS[id]";
    $SQL2 = mysql_query($sql) or die (mysql_error());
    $objM = mysql_fetch_array($SQL2);
    
    echo "<tr>\n<td class=\"menu_left_topic\">({$objM['iCount']})
          <a href=\"index.php?show=news&id={$objRS['id']}\">\n";

    $tecken = 27;
    $str = $objRS['rubrik'];
    $strLenen = strlen($str);

    if ($strLenen > $tecken) {
        $str = substr($str,0,($tecken-3));
        echo " ".$str."...";
    } else {
        echo $str;
    }
    
    echo "</a></td>\n</tr>\n";

}

echo "</table>";

?>
Medlem sedan juli 20033 147 inlägg
#9

Ja där ser man, älskar verkligen wF! ;)

Tack så hemskt mkt

267 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
129 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)