ugrás a tartalomhoz

Autómata vesszők kitevése

Anonymous · 2006. Jan. 9. (H), 07.57
Sziasztok!

Segytséget szeretnék tőletek kérni.
Az a gondom hogy van 1 fórum rendszerem és ugyebár minden fórumhoz lehet moderátort rendelni, amit ki is szeretneék iratni. Először úgy gondoltam hogy a moderátoroknak csinálok egy olyam mysq oszlopot h moderatorok minden fórumhoz, és oda a moderátorok idje-i lennének beírva.
De nem tudom hogy vigyem be? mivel az lenne h 1, 10, 30 akkor id-t nem 1, 10, 30 nak írná ki? és akkor ez olyan mintha 1 mod lenne a 3 helyett.

Én ezt most úgy oldottam meg hogy gondoltam 3 moderátornál úgy sem lessz több, bár kitudja hogy létrehoztam 3 oszlopot modertor_1 moderator_2 moderator_3, és értelemszerűen a moderator_1 be kerül az első moderátor id-je és így tovább...
Na és ezt úgy olvasom hogy linkelem is.
pl.: $moderator_1, $moderator_2, $moderator_3
és ugyebár ott vannak veszek kiolvasásnál, na de mi van akkor ha a moderátor üres?
akkor ha csak 1 van akkor azt az eredményt kapom h:
$moderator_1, , , vagy valami ilyesmit nos azt szeretném kérdezni hogy tundám ezt jobban megoldani és hogy lehetőleg a vesszőket is jól tegye ki.
hogy pl.: mikor csak 1 mod van ne tegyen utánna veszet de ha már 2 akkor tegyen egyet a 2 közé de az utolós utánn ne, és mikor 3 van akkor tegyen közéjük de az utolsó utánn ne.
Szóval értelemszerűen.
Kérlek segítsetek.
Előre is köszsönöm
Üdvözlettek:
Sziszi
 
1

több megoldás

Gal Kristof · 2006. Jan. 9. (H), 09.40
a legegyszerűbb (de leggyengébb) megoldás sztem, ha egyszerűen megnézed, hogy van-e értéke az oszlopnak :) és csak akkor írod ki, ha van...

a jó megoldás sztem, ha csinálsz egy kapcsoló táblát, amiben összerendeled a fórumokat a moderátorokkal. ebben a táblában nem lesz semmi csak egy id, egy forum_id, és egy moderator_id. egy rekord egy kapcsolatot fog jelölni, pl. forum_id = 2, moderator_id=7 az azt jelenti, hogy a 2-es fórumnak a 7-es moderátot moderátora. amikor ki akarod írni a moderátorokat az adott fórumhoz, akkor leszelektálod ezt a táblát a "forum_id = ez_kell_id" feltétellel, és megvannak a moderátorok id-jei.

félek, hogy az első megoldást fogod választani :)
2

oszlopok

Hojtsy Gábor · 2006. Jan. 9. (H), 11.40
Mivel bármennyi moderátor lehet, ezt egy külön táblában kellene megoldani.

+-------.-----+--------------+
| moderatorid | forumid      |
+-------------+--------------+
| 1           | 5            |
| 1           | 7            |
| 2           | 5            |
...
+-------------+--------------+

Ebből aztán le tudod kérdezni, hogy ki melyik fórumokat moderálja, és melyik fórumokat ki moderálja.
3

<Nincs cím>

Anonymous · 2006. Jan. 9. (H), 12.08
oh értem akkor a külön táblát fogok csinálni.

Köszönöm, de azt hogy oldom h a vesszőt is ki tegye?
4

oda is eljutsz majd

Hojtsy Gábor · 2006. Jan. 9. (H), 12.24
Innen csak egy olyan hosszú listát fogsz kapni, amennyi moderátor van. Ezeket mondjuk egyenként hozzá tudod fűzni egy karaktersorozathoz. Amint megvan a lekédezésed erre a táblára, tisztább lesz a kép.
5

Kód

Anonymous · 2006. Jan. 9. (H), 16.03
Szia,

ez nem a legelegánsabb megoldás, de kiindulásnak megteszi:
<?php
$moderatorok=""; //Ez tartalmazza majd a moderátorok listáját
$i=0;            //ciklus számláló
$parancs="SELECT moderator_id FROM moderatorok WHERE forum_id='$forum_azonosito'";  //SQL lekérdezés az adatbázisból
$talalat=mysql_query($parancs);  //lekérdezés végrehajtása
$szaml=mysql_num_rows($talalat);  //rekordok száma
while($eredmeny=mysql_fetch_row($talalat))  //rekordok beolvasása
 {
  $eredmeny[0]=trim(stripslashes($eredmeny[0]));  //szövegformázás
  $moderatorok.=$eredmeny[0];                     //moderátor id-jének hozzáadása
  if ($i<$szaml) $moderatorok.=", ";              //ha nem az utolsó moderátor a fórumhoz, akkor vessző hozzáfűzése
  $i++;                       //számláló léptetése
 }
6

<Nincs cím>

Anonymous · 2006. Jan. 9. (H), 19.33
Kössz, ez az ötlet azóta már nekem is eszembe jutott, és szerintem ez jó megoldás már ennél több ugysem kell.
kössz azért
7

<Nincs cím>

Anonymous · 2006. Jan. 10. (K), 10.51
Nos hellósztok megint én vagyok, újabb problémám támadt aminek az oka:
ő a kódban vagy ezt használom :extract($meselok_kiolvasasa_kiirasa);
vagy ezt: extract($meselok_kiolvasasa_kiirasa, EXTR_OVERWRITE);

<?php
if ($meselok_kiolvasasa = mysql_query("SELECT * FROM moderators WHERE forum_id='$forum_id_alap'")) {
$meselok_kiolvasasa_kiirasa = mysql_fetch_assoc($meselok_kiolvasasa);
extract($meselok_kiolvasasa_kiirasa);
$meselok_szama = mysql_num_rows($meselok_kiolvasasa);
$meselok_szama_novekvo_valtozo = "0";
while ($meselok_szama > $meselok_szama_novekvo_valtozo) {
$meselok_szama_novekvo_valtozo++;
if ($meselok_szama_novekvo_valtozo != $meselok_szama) {
print '<a href="#">'.$moderator_id.'</a>, ';
}
if ($meselok_szama_novekvo_valtozo == $meselok_szama) {
print '<a href="#">'.$moderator_id.'</a>';
}
}
}
Nos az a problémám gondolom mint látjátok hogy minden müxik és minden szép és jó, de...
van egy olyan gondom hogy mikor a táblában nincs semmi akkor azt szeretném hogy ne írodjón ki semmi
vagy majd később azt hogy nincs moderátor, de itt sajnos egy hiba jelenik meg ami szerint az extract fvben
nincs tömb ami érthető is mikor nem léteik az a sor.
"Warning: extract(): First argument should be an array in"
én mindig így szoktam kilvasni a dolgokat:
<?php
if($q = mysql_query("SELECT * FROM users WHERE user_id = '$_SESSION[session_user_id]'")){ 
while($kiolvasás = mysql_fetch_assoc($q)){ 
extract($kiolvasás, EXTR_OVERWRITE);
print $username;
}
}
ezt általában müxik, de úgy néz ki hogy most nem csak azt nem értem, hogy ot az elején
az if vezérlő ami azt csinálja hogy csak akkor menjen végbe ha van egy valami az adatbázisban
aminek a sora(forum_id) megegyezik egy változóval($forum_id_alap), na de ha nincs ilyen akkor mér megy a cucc?
Lehet h az rossz amit én használok kiolvasásra éppen?
8

<Nincs cím>

Anonymous · 2006. Jan. 10. (K), 20.03
ti milyet használtok ilyenre áltban?