webForumDet fria alternativet

Ändra antal mot limit

8 svar · 290 visningar · startad av Melea

MeleaMedlem sedan juli 20033 147 inlägg
#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

joakimbrMedlem 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

@ndersMedlem sedan juni 200032 969 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.

MatteMedlem 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.

MeleaMedlem 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? :)

MatteMedlem 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>";

?>
MeleaMedlem 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

MatteMedlem 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>";

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

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

Tack så hemskt mkt

129 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)