ugrás a tartalomhoz

MySQL eredménytábla sorszámozása PHP-ben

syntex · 2006. Ápr. 21. (P), 20.53
Olyan problémám lenne h próbáltam megcsinálni for() ciklussal az h a táblázatom minden sorában más legyen a sorszám. Ami itt sikerült is:

<?php
for ($i = 1; $i <= 3; $i++) {
?>

<table border="1">
  <tr>
   <td><?= $i . ". " ?></td>
  </tr>
</table>
<?php
}
?>
Na de mikor már while() -al kevertem akkor sokszorozódott.. :(
Ebbe a kódban h tudnád megcsinálni h sorszámot adjon minden táblázat sornak???

<?php
include("kapcsolat.php");
?>

<table width="65%">
  <tr>
    <td align="center"><font size="5"><b>Admin oldal</b></font></td>
  </tr>

  <tr>
<td>&nbsp;</td>
  </tr>

  <tr>
<td bgcolor="grey"><font color="white"><b>Tutorial hozzáadása:</b></font></td>
  </tr>

  <tr>
<td>
<font size="1"> <br> </font>
 <form action="add_tutorial.php">
   <input type="submit" value="Új tutorial hozzáadása">
 </form>
</td>
  <tr>

  <tr>
<td bgcolor="grey"><font color="white"><b>Tutorialok módosítása, törlése: </b></font></td>
  </tr>
</table>

<?php
$tutorials = "SELECT * FROM tutorials ORDER BY id DESC";
$eredmeny = mysql_query($tutorials);
$szin = "white";

while ($sor = mysql_fetch_array($eredmeny)) {

if ($szin=="#E6E6E6") {
        $szin = "white";
      }
      else {
        $szin = "#E6E6E6";
   }
$i = 1;

?>

<table width="65%"  bgcolor="<?= $szin ?>" cellspacing="0">
  <tr>
    <td width="10%" rowspan="8" align="center">
<img src="<?= $sor["avatar"] ?>" width="40" height="40"></td>
    <td width="90%" align="cender">
<?= $i . ". " ?> // ide kéne a sorszám...
    <font size="2"><a href="viewtut.php?id=<?= $sor["id"] ?>"><?= $sor["cim"] ?> - <?= $sor["leiras"] ?></font></td>
  </tr>
  <tr>
    <td><font size="2">Keletkezett: <?= $sor["datum"] ?></font></td>
  </tr>
  <tr>
    <td><font size="2">Forrás:<a href="<?= $sor["forras"] ?>"> <?= $sor["forras"] ?></a></font></td>
  </tr>
  <tr>
    <td><font size="2">Kategória: <?= $sor["kategoria"] ?></font></td>
  </tr>
  <tr>
    <td><font size="2">Nehézség: <?= $sor["nehezseg"] ?></font></td>
  </tr>
  <tr>
<td align="center">
 <font size="2"><a href="modosit_urlap.php?id=<?= $sor["id"] ?>">Módosítás</a> - <a href="torol.php?id=<?= $sor["id"] ?>">Törlés</a></font></td>
  </tr>

</table>
<?php
}
?>

<table width="65%" cellspacing="0">
  <tr>
<td bgcolor="grey">&nbsp;</td>
  </tr>
<table>


Előre is köszönöm a segítséget vagy a javaslatokat!
 
1

Hát...

-zsolti- · 2006. Ápr. 21. (P), 21.37
...a ciklusmagban csak az legyen, aminek ismétlődnie kell - a <table> nem ilyen (elég ha csak a sorokat <tr> gyarapítod). A számlálóhoz pedig először beállítasz egy változót valamilyen értékkel (1), aztán a ciklusmagban növelgeted. Tehát:

echo '<table>'."\n";
$i = 1; // sorszám lesz
while(feltétel) {
  echo '  <tr>'."\n";
  echo '  <td>'.$i.'</td><td>ide jön valami</td>'."\n";
  echo '  </tr>'."\n";

  $i++; // 1-gyel növeli a sorszámot
}
echo '</table>'."\n";
Ui: használd a színezett kód gombot, azért van.
2

Hiba

Pred · 2006. Ápr. 21. (P), 23.11
Ha jól sejtem, mindenhova csak 1-est ír sorszámnak. (Számomra nem volt egyértelmű, hogy csak bozonyos sorszámok sokszorozódnak, vagy csak egy van mindenhol.)

Nos.. ez a kód van a ciklusod lején:

while ($sor = mysql_fetch_array($eredmeny)) {
if ($szin=="#E6E6E6") {
$szin = "white";
}
else {
$szin = "#E6E6E6";
}
$i = 1;

...
Nos innen csak annyi hiányzik, hogy növeld a $i változód értékét. Illetve, hogy kezdőértéket ne a ciklusmagban adj neki, hanem az előtt...

Tehát:

$i = 1;

while ($sor = mysql_fetch_array($eredmeny)) {
 if ($szin=="#E6E6E6") {
  $szin = "white";
 } else {
  $szin = "#E6E6E6";
 }
?>
...

<td width="90%" align="cender">
<?= $i . ". " ?> // ide kéne a sorszám...

<?php
 $i++
} //while ciklus vége
?>
...
Ha jól sejtem, akkor ez egy fórum lesz (micsoda megfigyelő vagyok :D)

Én ezt a következő táblával oldotam meg:

`messageID` bigint(20)
`topicID` int(11)

`messageTime` varchar(19)
#Az egyszerűbb kiíratás végett az yyyy-mm-dd hh:mm:ss formában
#tárolom az időt.. ezt másra nem használom.

`messageCount` bigint(20)
#Ez mondja meg, hogy az adott hozzászólás hányadik az adott topicban,
#így ha egy moderátor töröl a témában egy hozzászólást,
#akkor nem zavarodik össze minden...

`messageSentBy` varchar(32)
`messageText` text

`messageAnswereTo` bigint(20)
#Ide rakom be, hogy az adott témában(!) hányadik hozzászólásra volt
#ez a válasz, ezzel is egyszerűsítem a lekérdezéseket, és ha kell,
#akkor is vissza lehet keresni
Remélem tudtam segíteni

by Pred...

(a fenti példán alapuló fórum !nagyon! béta verzióját megnézheted a Synaps bemutatóoldalán
3

Off

-zsolti- · 2006. Ápr. 21. (P), 23.21
Mint ahogy az elnevezések/cimkék is mutatják valami tutorial listázó oldala lesz (szerintem). Amúgy hogy jön ide a fórumod meg a táblája? (Azon kívül, hogy leírtad még egyszer ugyanazt, amit én is.)
6

sorry

Pred · 2006. Ápr. 22. (Szo), 11.52
Annak, hogy ugyanazt írtam le, az lehet az oka, hogy nem olvastam el figyelmesen mindent :D

És hogy a fórumos tábla hogy jön ide, gondoltam segítek neki :D

Még 1x sorry
4

egyszerűbben

Anonymous · 2006. Ápr. 22. (Szo), 01.28
<?
$i = 1;
while ($sor = mysql_fetch_array($eredmeny)) {
 $szin=($i%2)?'#E6E6E6':'white';
?>
<tr bgcolor="<?echo $szin?>">
<td><?echo $i?></td>
</tr>
<?
 $i++
}
?>
Gyulus
5

Működik! :)

syntex · 2006. Ápr. 22. (Szo), 06.57
Köszönöm szépen mindenkinek a segítséget! Amúgy igen egy tutorialos oldal lesz ahol magyarra fordítom a tutorialokat :)

Még egyszer köszi!