[PHP] even/oneven & nieuws archief probleem

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Fr0zenFlame
  • Registratie: September 2003
  • Laatst online: 19-11-2024

Fr0zenFlame

LAN 'A Holic

Topicstarter
Hallo,

Ik ben bezig met een soort van content management systeem voor onze clan website en nu loop ik op de volgende 2 punten vast.

1)

Op de member pagina worden dus de members uit de database gehaalt zoals hieronder, nu wil ik alleen dat er rij voor rij wordt megegeven "<tr class=even>" & op de volgende rij <tr class=oneven"> heeft iemand enig idee hoe het moet, het kan wel iig....

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<h1>Members</h1>
<div align="center">
  <table width="450" border="0" align="center" cellpadding="0" cellspacing="0" ce>
    <?php
  include ("*****.php");
  mysql_connect ("$dbhost","$username","$dbww");
  mysql_select_db ("$db") or die ("Fout opgetreden");
    $query = "SELECT * FROM `members` ORDER BY `id` ASC";
    $result = mysql_query($query) or die(mysql_error());
    while($rec = mysql_fetch_assoc($result))

{
    echo "<tr class=even>" . "<td>" . $rec["name"] . "</td>" . "<td>" . "||B2F|" . $rec["nickname"] ."|NL||" . "</td>" . "<td>" . $rec["rank"] . "</td>" . "<td>" . $rec["function"] . "<td>" . "<a href=index.php?page=profiles/" . $rec['nickname'] . ".php>Profile</a>"  . "</td>"  . "</tr>";
}
?>
  </table>
</div>


2)

Het 2e puntje waar ik tegen aanloop is het nieuws archief. Ik wil 5 meest recente nieuws berichten op de nieuws pagina laten zien, vervolgens komt er daarna een url met "nieuwsacrhief.php" waarop de overige te zien zijn... weet iemand hoe ik het aantal nieuws verichten tot 5 kan beperken en hoe zn archief pagina in elkaar moet zitten?

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<h1>Nieuws</h1>
<div align="center"> 
  <table width="450" border="0" cellspacing="2" cellpadding="2">
    <tr>
      <td align="left" valign="top"> 
        <?php
  include ("*****.php");
  mysql_connect ("$dbhost","$username","$dbww");
  mysql_select_db ("$db") or die ("Fout opgetreden");
    $query = "SELECT * FROM `news` ORDER BY `id` DESC";
    $result = mysql_query($query) or die(mysql_error());
    while($rec = mysql_fetch_assoc($result))
    {
        echo "<strong>" .  stripslashes($rec["subject"]) . "</strong>" . "<br>" . "<br>";
        echo stripslashes($rec["text"]) . "<br><br><br>";
        echo "<hr>" . "<em>" .  " | " .  stripslashes($rec["author"]) . " | " . stripslashes($rec["date"]) . " | " . "</em>" . "</hr>" . "<br>" . "<br>";
    }
?>
      </td>
    </tr>
  </table>
  
</div>

[ Voor 55% gewijzigd door Janoz op 28-02-2005 15:33 . Reden: +codetags - spam... + fixen html van Curry ]

i7-6700K | Z170A XPOWER GAMING TITANIUM EDITION | InWin904 | 32GB Corsair Dominator Platinum | nVidia GeForce RTX2080 TI | Iiyama G-Master UWQH 34" | 2x 1TB Samsung SSD 980PRO | 1x 4TB Samsung 860EVO | Arctis 7 | SteelSeries Apex Pro | Logitech G502 Hero


Acties:
  • 0 Henk 'm!

  • Bramster
  • Registratie: Juni 2001
  • Laatst online: 21:26
even/oneven kun je bepalen met modulo rekenen

je moet er dus een countertje aan toevoegen en dan elke keer "$c % 2" doen, krijg je 0 uit is het even, bij 1 is het oneven


oh, en zet effe code tags in je post, maakt het wat makkelijker te lezen :)

[ Voor 23% gewijzigd door Bramster op 28-02-2005 14:56 ]


Acties:
  • 0 Henk 'm!

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 14-05-2024

OZ-Gump

terug van weggeweest

Skuzz gaf je de goede richting voor even/oneven. Wat betreft de laatste 5: kijk eens naar de SQL optie Select TOP x .... om je resultset te beperken tot een aantal resultaten.

My personal website


Acties:
  • 0 Henk 'm!

  • 1st_Ro
  • Registratie: December 2002
  • Laatst online: 07-01-2022
Of je gebruikt de LIMIT parameter :

" With two arguments, the first argument specifies the offset of the first row to return, and the second specifies the maximum number of rows to return. The offset of the initial row is 0 (not 1):

mysql> SELECT * FROM table LIMIT 5,10; # Retrieve rows 6-15"

Acties:
  • 0 Henk 'm!

  • Fr0zenFlame
  • Registratie: September 2003
  • Laatst online: 19-11-2024

Fr0zenFlame

LAN 'A Holic

Topicstarter
Skuzz schreef op maandag 28 februari 2005 @ 14:56:
even/oneven kun je bepalen met modulo rekenen

je moet er dus een countertje aan toevoegen en dan elke keer "$c % 2" doen, krijg je 0 uit is het even, bij 1 is het oneven


oh, en zet effe code tags in je post, maakt het wat makkelijker te lezen :)
Yo,

Thanks voor jullie tips alvast! toppie... maar wat betreft de eerste reply.. hoe doe ik dat precies? ben net begonnen wat php betreft, naja tijdje terug al, maar hele tijd nix meer mee gedaan!

P.S

wou de code al als PHP code weergeven maar wist even niet meer tussen wele tags ik ze moest zetten & was net even het dorp in :)

i7-6700K | Z170A XPOWER GAMING TITANIUM EDITION | InWin904 | 32GB Corsair Dominator Platinum | nVidia GeForce RTX2080 TI | Iiyama G-Master UWQH 34" | 2x 1TB Samsung SSD 980PRO | 1x 4TB Samsung 860EVO | Arctis 7 | SteelSeries Apex Pro | Logitech G502 Hero


Acties:
  • 0 Henk 'm!

  • Helmet
  • Registratie: Januari 2002
  • Laatst online: 21-08 15:00
PHP:
1
2
3
4
5
6
7
$i =0;
while ($record = mysql_fetch_assoc($res))
{
 $i++;
 $kleur = is_int($i /2) ? '#EEEEEE;'  : '#CCCCCC;';
 echo '<tr bgcolor="' . $kleur . '"><td>' . $record['id'] . '</td></tr></table>';
}


deze code verzorgt een simpele zebra-stripe ($res = het resultaat van je mysql_query en kan dus vanalles zijn)

[ Voor 125% gewijzigd door Helmet op 28-02-2005 16:40 ]

Icons are overrated


Acties:
  • 0 Henk 'm!

  • R4NCOR
  • Registratie: December 2000
  • Laatst online: 16-09 12:26

R4NCOR

eigenlijk gewoon Niels

de laatste 5 selecteren is heel gemakkelijk met LIMIT naar mijn mening:

code:
1
$query = "SELECT * FROM news ORDER BY id DESC LIMIT 0,5";


Wat betreft even/oneven is hierboven al genoeg geopperd, persoonlijk zou ik de modulo oplossing gebruiken :)

Acties:
  • 0 Henk 'm!

  • Fr0zenFlame
  • Registratie: September 2003
  • Laatst online: 19-11-2024

Fr0zenFlame

LAN 'A Holic

Topicstarter
PHP:
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    <?php
  include ("****.php");
  mysql_connect ("$dbhost","$username","$dbww");
  mysql_select_db ("$db") or die ("Fout opgetreden");
    $query = "SELECT * FROM `members` ORDER BY `id` ASC";
    $result = mysql_query($query) or die(mysql_error());
    while($rec = mysql_fetch_assoc($result))
{
    $i++;
    $tr = is_int($i /2) ? '<tr class=even>'  : '<tr class=oneven>';

    echo $tr . "<td>" . $rec["name"] . "</td>" . "<td>" . "||B2F|" . $rec["nickname"] ."|NL||" . "</td>" . "<td>" . $rec["rank"] . "</td>" . "<td>" . $rec["function"] . "<td>" . "<a href=index.php?page=profiles/" . $rec['nickname'] . ".php>Profile</a>"  . "</td>"  . "</tr>";
}
?>


Heb deze code iig voor members gebruikt en het werkt goed, thanks voor de tips iig! _/-\o_

i7-6700K | Z170A XPOWER GAMING TITANIUM EDITION | InWin904 | 32GB Corsair Dominator Platinum | nVidia GeForce RTX2080 TI | Iiyama G-Master UWQH 34" | 2x 1TB Samsung SSD 980PRO | 1x 4TB Samsung 860EVO | Arctis 7 | SteelSeries Apex Pro | Logitech G502 Hero


Acties:
  • 0 Henk 'm!

  • Fr0zenFlame
  • Registratie: September 2003
  • Laatst online: 19-11-2024

Fr0zenFlame

LAN 'A Holic

Topicstarter
Nog een vraagje :*) :X

Heb dus een nieuws systeem waarvan ik dus 5 berichten maximaal wil tonen en dan een archief link, dat is dus gelukt. Verder wil ik dus onder de link "Archief" de URLs plaatzen voor alle berichten in het archief, dat is dus ook gelukt zoals hier onder in de code te zien is & op http://b2f.hncf.nl/www/index.php?page=nieuwsarchief

Maar nu wil ik weten hoe je alleen het bericht kan toenen wat de URL aangeeft (dus alleen het betrefende nieuws bericht aanroepen uit de Db??? 8)7

PHP:
4
5
6
7
8
9
10
11
12
13
14
15
16
17
        <?php
  include ("*****.php");
  mysql_connect ("$dbhost","$username","$dbww");
  mysql_select_db ("$db") or die ("Fout opgetreden");
    $query = "SELECT * FROM `news` ORDER BY `id` DESC";
    $result = mysql_query($query) or die(mysql_error());
    while($rec = mysql_fetch_assoc($result))
{
    $i++;
    $tr = is_int($i /2) ? '<tr class=even>'  : '<tr class=oneven>';

    echo $tr .  "<td width=150>" . "<a href=index.php?page=nieuws&newsid=" . $rec['id'] . ">" . $rec['subject'] . "</a>"  . "</td>" . "<td width=150>" .  $rec['author'] . "</td>". "<td width=150>" .  $rec['date'] . "</td>" . "</tr>";
}
?>

[ Voor 38% gewijzigd door Fr0zenFlame op 28-02-2005 21:29 ]

i7-6700K | Z170A XPOWER GAMING TITANIUM EDITION | InWin904 | 32GB Corsair Dominator Platinum | nVidia GeForce RTX2080 TI | Iiyama G-Master UWQH 34" | 2x 1TB Samsung SSD 980PRO | 1x 4TB Samsung 860EVO | Arctis 7 | SteelSeries Apex Pro | Logitech G502 Hero


Acties:
  • 0 Henk 'm!

  • JHS
  • Registratie: Augustus 2003
  • Laatst online: 16-09 16:02

JHS

Splitting the thaum.

PHP:
1
$query = "SELECT * FROM `news` WHERE `id` = '{$id}'"
En dan het id uit de url verkrijgen (vergeet de sanitising niet) :?

[ Voor 12% gewijzigd door JHS op 28-02-2005 22:35 ]

DM!


Acties:
  • 0 Henk 'm!

  • R4NCOR
  • Registratie: December 2000
  • Laatst online: 16-09 12:26

R4NCOR

eigenlijk gewoon Niels

Je vragen zijn nu wel _erg_ basic imo :P

Maargoed, hou ook rekening met superglobals:

code:
1
$query = "SELECT * FROM 'news' WHERE id='".intval($_GET['id'])."'";

Acties:
  • 0 Henk 'm!

  • Fr0zenFlame
  • Registratie: September 2003
  • Laatst online: 19-11-2024

Fr0zenFlame

LAN 'A Holic

Topicstarter
Simpel of niet, 't lukt me nie :(

De code die ik hierboven poste staat op de pagina "nieuwsarchief.php". Dus als je op de pagina nieuws.php op de link "archief" klikt dan zie je dus een lijstje van nieuws berichten in URL form, zodra je op een van de URLs clickt moet de pagina veranderen in het betrefende bericht, dat is wat ik wil maken.

Dus in de code van "nieuwsarchief.php" en niet een nieuwe pagina hoefen te creeren.... waarschijnlijk is dit een domme vraag maar mij lukt t niet :s

i7-6700K | Z170A XPOWER GAMING TITANIUM EDITION | InWin904 | 32GB Corsair Dominator Platinum | nVidia GeForce RTX2080 TI | Iiyama G-Master UWQH 34" | 2x 1TB Samsung SSD 980PRO | 1x 4TB Samsung 860EVO | Arctis 7 | SteelSeries Apex Pro | Logitech G502 Hero


Acties:
  • 0 Henk 'm!

  • R4NCOR
  • Registratie: December 2000
  • Laatst online: 16-09 12:26

R4NCOR

eigenlijk gewoon Niels

Dat is op zich gemakkelijk te doen met een if-else constructie:

nieuwsarchief.php:
PHP:
1
2
3
4
5
if (isset($_GET['id'])) {
   // doe je ding om een specifiek nieuwsbericht te laten zien (met bijv. de query die ik hierboven aangaf)
} else {
  // laat gewoon een lijstje zien van de nieuwsberichten met een link naar "nieuwsarchief.php?id=_hierhetid_"
}

Acties:
  • 0 Henk 'm!

  • Fr0zenFlame
  • Registratie: September 2003
  • Laatst online: 19-11-2024

Fr0zenFlame

LAN 'A Holic

Topicstarter
Hmm zou je een voorbeeld van de gehele code kunnen geven.. waarschijnlijk zie ik een haakje over het hoofd, gebruik ik een superglobal of een variable dubbel maar op een of andere manier lukt nie..

nieuws.php & nieuwsarchief staan in de zelfde directorie.

Dit is de code in nieuws.php:
Deze code is gewoon goed maar ter extra informatie

PHP:
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<h1>Nieuws</h1>
<div align="center"> 
  <table width="450" border="0" cellspacing="2" cellpadding="2">
    <tr>
      <td align="left" valign="top"> 
        <?php
  include ("****.php");
  mysql_connect ("$dbhost","$username","$dbww");
  mysql_select_db ("$db") or die ("Fout opgetreden");
    $query = "SELECT * FROM `news` ORDER BY `id` DESC LIMIT 0,5";
    $result = mysql_query($query) or die(mysql_error());
    while($rec = mysql_fetch_assoc($result))
    {
        echo "<strong>" .  stripslashes($rec["subject"]) . "</strong>" . "<br>" . "<br>";
        echo stripslashes($rec["text"]) . "<br><br><br>";
        echo "<hr>" . "<em>" .  " | " .  stripslashes($rec["author"]) . " | " . stripslashes($rec["date"]) . " | " . "</em>" . "</hr>" . "<br>" . "<br>";
    }
?>
      </td>
    </tr>
  </table>
  <br>
  <a href="index.php?page=nieuwsarchief">...::Archief::...</a> 
  <br>
<br>
  </div>


Dit is de code in nieuwsarchief tot zover ik geen errors kreeg:
Hier is geen van beide if then else statements toegepast!

PHP:
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<h1>Nieuws Archief</h1>
<div align="center"> 
  <table width="450" border="0" align="center" cellpadding="0" cellspacing="0">
    <tr>
      <td align="left" valign="top"> 
        <?php
  include ("*****.php");
  mysql_connect ("$dbhost","$username","$dbww");
  mysql_select_db ("$db") or die ("Fout opgetreden");
    $query = "SELECT * FROM `news` ORDER BY `id` DESC";
    $result = mysql_query($query) or die(mysql_error());
    while($rec = mysql_fetch_assoc($result))
{
    $i++;
    $tr = is_int($i /2) ? '<tr class=even>'  : '<tr class=oneven>';

    echo $tr .  "<td width=150>" . "<a href=index.php?page=nieuws&newsid=" . $rec['id'] . ">" . $rec['subject'] . "</a>"  . "</td>" . "<td width=150>" .  $rec['author'] . "</td>". "<td width=150>" .  $rec['date'] . "</td>" . "</tr>";
}
?>
      </td>
    </tr>
  </table>
  </div>


Beide worden geinculude op index.php


Het is voor mij wel belangrijk dat ik dit systeem werkend krijg omdat het "WAR" systeem ook een dergelijk systeem moet worden & dat ik dus uit deze syntax leer kan trekken om dat systeem te bouwen.

Alvast bedankt...

[ Voor 25% gewijzigd door Fr0zenFlame op 01-03-2005 02:25 . Reden: typo ]

i7-6700K | Z170A XPOWER GAMING TITANIUM EDITION | InWin904 | 32GB Corsair Dominator Platinum | nVidia GeForce RTX2080 TI | Iiyama G-Master UWQH 34" | 2x 1TB Samsung SSD 980PRO | 1x 4TB Samsung 860EVO | Arctis 7 | SteelSeries Apex Pro | Logitech G502 Hero


Acties:
  • 0 Henk 'm!

  • R4NCOR
  • Registratie: December 2000
  • Laatst online: 16-09 12:26

R4NCOR

eigenlijk gewoon Niels

Als je dan toch op die manier met includen van bestanden werkt, waarom blijf je dan niet consequent en maak je voor het gedeelte om een nieuwsbericht te laten zien ook een andere? :) Je weet blijkbaar wel hoe het werkt in index.php met je if-else constructie omdat je aan de hand daarvan ($page) een andere file include?

In je nieuwsarchief heb je ook al linkjes naar index.php?page=nieuws&id=x, dus dan is het gemakkelijk te doen op de manier die je al hanteerd ? :)

Of begrijp ik je nu verkeerd?

Acties:
  • 0 Henk 'm!

  • JHS
  • Registratie: Augustus 2003
  • Laatst online: 16-09 16:02

JHS

Splitting the thaum.

Falcon88: Ik denk niet dat iemand je de code gewoon gaat geven, en dat is ook niet de bedoeling op GoT. Je post nu twee stukken van je code welke werken, met de vraag of iemand iets wil toevoegen. De code van R4NCOR laat toch duidelijk zien wat je zou moeten doen :) .

Maar het komt dus op zoiets neer:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//sanitise je code, en, indien ze bestaan, return $id en $page vanuit $_GET['id'], 
//als ze niet bestaan: $id = FALSE;

if($page == "nieuws") {
   if($id) {
      $query = "SELECT * FROM `news` WHERE `id` = '{$id}'" 
      //haal je resultaat op
      //echo je resultaat en html
   }
   else {
      //doe niewsarchief
   }
}

//en zorg dan dat je als je de laatste nieuwsitems laat zien ook voor een linkje

DM!

Pagina: 1