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:
  1. echo '<table>'."\n";  
  2. $i = 1; // sorszám lesz  
  3. while(feltétel) {  
  4.   echo '  <tr>'."\n";  
  5.   echo '  <td>'.$i.'</td><td>ide jön valami</td>'."\n";  
  6.   echo '  </tr>'."\n";  
  7.   
  8.   $i++; // 1-gyel növeli a sorszámot  
  9. }  
  10. 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:
  1. while ($sor = mysql_fetch_array($eredmeny)) {  
  2. if ($szin=="#E6E6E6") {  
  3. $szin = "white";  
  4. }  
  5. else {  
  6. $szin = "#E6E6E6";  
  7. }  
  8. $i = 1;  
  9.   
  10. ...  
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:
  1. $i = 1;  
  2.   
  3. while ($sor = mysql_fetch_array($eredmeny)) {  
  4.  if ($szin=="#E6E6E6") {  
  5.   $szin = "white";  
  6.  } else {  
  7.   $szin = "#E6E6E6";  
  8.  }  
  9. ?>  
  10. ...  
  11.   
  12. <td width="90%" align="cender">  
  13. <?= $i . ". " ?> // ide kéne a sorszám...  
  14.   
  15. <?php  
  16.  $i++  
  17. //while ciklus vége  
  18. ?>  
  19. ...  
Ha jól sejtem, akkor ez egy fórum lesz (micsoda megfigyelő vagyok :D)

Én ezt a következő táblával oldotam meg:
  1. `messageID` bigint(20)  
  2. `topicID` int(11)  
  3.   
  4. `messageTime` varchar(19)  
  5. #Az egyszerűbb kiíratás végett az yyyy-mm-dd hh:mm:ss formában  
  6. #tárolom az időt.. ezt másra nem használom.  
  7.   
  8. `messageCount` bigint(20)  
  9. #Ez mondja meg, hogy az adott hozzászólás hányadik az adott topicban,  
  10. #így ha egy moderátor töröl a témában egy hozzászólást,  
  11. #akkor nem zavarodik össze minden...  
  12.   
  13. `messageSentBy` varchar(32)  
  14. `messageText` text  
  15.   
  16. `messageAnswereTo` bigint(20)  
  17. #Ide rakom be, hogy az adott témában(!) hányadik hozzászólásra volt  
  18. #ez a válasz, ezzel is egyszerűsítem a lekérdezéseket, és ha kell,  
  19. #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
  1. <?  
  2. $i = 1;  
  3. while ($sor = mysql_fetch_array($eredmeny)) {  
  4.  $szin=($i%2)?'#E6E6E6':'white';  
  5. ?>  
  6. <tr bgcolor="<?echo $szin?>">  
  7. <td><?echo $i?></td>  
  8. </tr>  
  9. <?  
  10.  $i++  
  11. }  
  12. ?>  
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!