22786
Html-, css- és php-help
  • Vorpal
    #1372
    Faustus irigyelem a türelmed a témában...amennyit képeztem magamat én is, és a kérdések.
    Le a kalappal,))))
  • Dj Faustus #1371
    Kedves Tufa,
    ezt leginkább PHP-ben (vagy más szerveroldali nyelven - APS, JSP, Perl) tudod megoldani (ha a webszerveren nincs engedélyezve a directory listing...).
    Erre szolgál PHP-ben a readdir függvény.

    Az alábbi kód kilistázza a gyökérkönyvtárban elhelyezkedő file-okat. Ha az opendir('.')-t átírod opendir('konyvtar')-ra, akkor a konyvtar nevű könyvtár tartalmát fogja kilistázni a szkript.
    <?php
    if ($k_azon = opendir('.')) {
    while (false !== ($fajl = readdir($k_azon))) {
    if ($fajl != "." && $fajl != "..") {
    echo "$fajl\n";
    }
    }
    closedir($k_azon);
    }
    ?>


    Vagy nézz szét itt.
  • Tufa
    #1370
    Kellene nekem egy olyan listázó vmi, amivel ilyen módon lehet kilistázni a feltöltött fileokat. Nem kell design, semmi, csak hogy http-n keresztül lehessen letölteni...
    Tudna vki csinálni egyet nekem?
  • Evin
    #1369
    Kicsit késve, de köszi. Bevált.
  • Dj Faustus #1368
    "Na! Az a $nev -es rész oldaná meg a név kiírását!"
    A $nev valtozót honnan veszed? Session-ből? Adatbázisból? (Lásd: #1363 5. pont)

    if ( $nev != "$nev" ) <- ez megegyezik ezzel -> if ( $nev != $nev )
    Mivel ez a kifejezés sohase teljesűl, az utána következő parancsot (include("config2.php");) nem fogja végrehajtani. (Lásd a macskás példámat! #1363 2. pont)
  • Jégkocka
    #1367
    Valószinűleg a név miatt kavar be, és amiatt jön minden üzenet után 1 új üzenet ami üres, csak az előző üzenetet feladó neve van kiírva! Meg valószinűleg emiatt lép át más nevébe is!
  • Jégkocka
    #1366
    Na! Az a $nev -es rész oldaná meg a név kiírását! És szerintem amiatt jelentkezik át! Van 2 táblám! szoveg és szoveg2 a config a szovegbe csatlakozik, a config2 pedig a szoveg 2-be! A szoveg -be van az illető neve, ezt kéne kiírni valahogy, és a szoveg2-be kerül be az a szöveg amit az illető felad!
  • Dj Faustus #1365
    "az elsőnél nembaj ha megjegyzi, hogy használja a második paramétert, lassabb nem lesz tőle, ez inkább a jelen idő szerint csak "elhagyható""
    Úgy van!

    "ill. ha a $nevben nincs szóköz, akkor felesleges idézőjelbe tenni, bár így a biztosabb

    sql kéréseknél legtöbbször lényegtelen hogy simán '$nev' vagy '".$nev."'-ként adod be."

    Csak meg kéne szokni a rendes kódolást. PHP-ban lehet mindenféle - más nyelvekben eretnekségnek számító dolgot - művelni, de azért adjuk már magunkra... Nemde?
  • cSuwwi
    #1364
    az elsőnél nembaj ha megjegyzi, hogy használja a második paramétert, lassabb nem lesz tőle, ez inkább a jelen idő szerint csak "elhagyható"

    <br<br> html tag nincs, <br><br>, vagy xhtml validságra törekvésénél <br /><br />

    az egysoros ifeknél mégha nem is muszály kirakni a kapcsoszárójeleket, érdemes, mert nem minden texteditor ismeri fel (notepad2 pl nem)

    ill. ha a $nevben nincs szóköz, akkor felesleges idézőjelbe tenni, bár így a biztosabb

    sql kéréseknél legtöbbször lényegtelen hogy simán '$nev' vagy '".$nev."'-ként adod be.
  • Dj Faustus #1363
    "Ügyködtem 1 kicsit a kódon! Mutatom, hogy most hogynéz ki!"
    Még mindig benne vannak a hibák...
    1. $date = date("Y.m.d. H:i:s", time()) ."<br<br>"; - még mindig benne van a time(). Minek? A date függvény leírásában le van írva, hogy a 2. paraméter felesleges...
    2. if ( $nev != "$nev" ) include("config2.php"); - Ez a rész mit csinál?
    Lásd az alábbi kódrészletet:
    <?php
    $nev="macska";
    if ($nev != "$nev") {
    print("Nem egyezik!");
    }
    else {
    print ("Egyezik!");
    }
    ?>

    Az eredmény természetesen minden esetben - mivel macska == macska - az "Egyezik!" szöveg kiírása.
    3. "$parancs = "CREATE TABLE szoveg2 ( nev varchar(20), szoveg char(100), datum char(20) )";" - ez még továbbra is szükségtelen (egyszer hozzuk létre a táblát, utána már felesleges a szervert terhelni vele).
    4. $parancs2 = "insert into szoveg2 ( nev, szoveg, datum ) values ( '$nev', '$szoveg', '$date' )"; helyette $parancs2 = "INSERT IGNORE INTO szoveg2 ( nev, szoveg, datum ) VALUES ( '".$nev."', '".$szoveg."', '".$date."' );"; Tehát: a változókat ne rakjuk a sztringbe, hanem különítsük el! Ugyanis bár lehet, hogy működésképes, de más esetekben, ha megszokod, problémák merűlhetnek fel.
    5. Továbbra sem látom, hol azonosítod a felhasználót.
  • Jégkocka
    #1362
    Igen! ezt értem! Valószinűleg itt a hiba! Nekem van 2 táblám az adatbázisban! A 2-es táblába kerül be a szöveg, de az 1-es táblából kéne kiolvasni a nevet! Ügyködtem 1 kicsit a kódon! Mutatom, hogy most hogynéz ki! Még így is ugyanez a hiba! Ha tudtok létszi segítsetek! A kód a következő:

    <?php
    $date = date("Y.m.d. H:i:s", time()) ."<br<br>";
    ?>
    <?php
    include("config.php");
    if ( $nev != "$nev" )
    include("config2.php");
    {
    $parancs = "CREATE TABLE szoveg2 ( nev varchar(20), szoveg char(100), datum char(20) )";
    $parancs2 = "insert into szoveg2 ( nev, szoveg, datum ) values ( '$nev', '$szoveg', '$date' )";
    mysql_query( $parancs, $kapcs);
    mysql_query( $parancs2, $kapcs);
    }
    ?>
    <center><form action=<?php $php_self ?>>
    <center>120 karaktert írhatsz a falra!</center>
    Szöveg:<br> <textarea cols=50 rows=5 name="szoveg"></textarea><br>
    <input type="submit" value=mehet>
    if (strlen($szoveg)>90 && $eredm==0)
    {
    print "Csak 90 karaktert írhatsz!!"
    }
    </form>
    <br><br><?php include("smiley.html") ?>
  • Dj Faustus #1361
    Mivel azonosítod a felhasználót a vendégkönyvben? Munkamenet-változóval (session)?
    Mit tartalmaz? Nevet? Felhasználói azonosítót (számokat)?
    Ha az utóbbit, biztos vagy abban, hogy nem változott (mármint a session-ban), illetve hogy azt a nevet adja vissza ami a felhasználói azonosítóhoz tartozik?
    Forráskód nélkűl (az általad idézett kódban nem láttunk utalást a felhasználói név megadására) nemigazánt tudhatjuk hol lehet a probléma...
  • Jégkocka
    #1360
    Akkor arra senkinek semmi ötlete, hogy azt hogyan lehetne megcsinálni, hogy nejelentkezzen át az azelőtt belépett felhasználó nevébe?
  • CattiBrie
    #1359
    ha már javítani nem, lehet igazán kinyomhatnák a szemünket egy előnézet gombbal
  • Jégkocka
    #1358
    Köszi! Ez a problémám megoldódott! De még mindíg átjelentkezik az ezelőtt bejelentkezett felhasználóhoz!
  • Vorpal
    #1357
    "De ez a kód még annyira se fut mint az enyém!" pedig jónak tűnik

    araa vigyázz,hogy faustus commentjei pl :újra létrehozni a táblát, amikor az egyetlenegyszer is elég?
    azok nem a kód részei, nem kell beleirni ,)
  • Vorpal
    #1356
    vagy az is egy szép megoldás a 90 karakterre, hogy ha
    if (strlen($szoveg)>90) akkor $warning ='Túl hosszu'
    és a Submt gomb alá beteszel egy
    echo '$warning'; ot ami csak akkor jelenik meg ha létezik a hiba,és
    ha $warning == '0' akkor mehet a beirás az adatbázisba.

    Igy megteheted, hogy a túl hosszu szöveget átadod mint POST a következő
    oldalra és még javithat rajta az illető illetve megmetszheti, és hibaüzenet
    pedig ott van alatta.

    előnézet ne is mond == ég a pofim a J és LY hibáim miatt állandóan.
  • Dj Faustus #1355
    Hopp egy kis hibajavítás (na ezért kéne előnézet gomb az SG.hu fórumára)...
    $parancs2 = "INSERT IGNORE INTO szoveg2 ( nev, szoveg, datum ) VALUES ( '".$nev."', '".$szoveg."', '".$date."' );"; - szóval az első pontosvessző a zárójel után...

    "De ez a kód még annyira se fut mint az enyém!"
    Hibaüzenet?

    "A táblából!"
    Melyikből? Honnan? Merről?
  • Jégkocka
    #1354
    De ez a kód még annyira se fut mint az enyém! De köszi a segítséget!
  • Jégkocka
    #1353
    A táblából!
  • Dj Faustus #1352
    Először is ez a kód sok sebből vérzik:
    1. "$parancs = "CREATE TABLE szoveg2 ( nev varchar(20), szoveg char(100), datum char(20) )";" - minek mindig újra és újra létrehozni a táblát, amikor az egyetlenegyszer is elég?
    2. $parancs2 = "insert into szoveg2 ( nev, szoveg, datum ) values ( '$nev', '$szoveg', '$date' )"; helyett $parancs2 = "INSERT IGNORE INTO szoveg2 ( nev, szoveg, datum ) VALUES ( '".$nev."', '".$szoveg."', '".$date."'; )";
    3. <form action=<?php $php_self ?>> helyett <form action="<?php echo $PHP_SELF; ?>" method="post">
    4. Az előzőből következik, hogy a PHP-kód első felének így kéne kinéznie:
    <?php
    $date = date("Y. m. d. G:i:s")."<br><br>";
    $szoveg = $_POST["szoveg"];
    if (strlen($szoveg)>90) {
    exit ("Maximum 90 karaktert írhatsz a falra!"); //Itt van a 90 karakteres ellenörzés
    }
    include("config2.php");

    5. A HTML-kódban tessék rendesen kiírni az attribútum-érték párosokat! attributum="érték" - tehát:
    cols="50"
    rows="5"
    value="mehet"

    6. A hozzászóló nevét honnan szeded?
  • Jégkocka
    #1351
    Sziasztok! Megint lenne 1 kérdésem! Van 1 üzenőfalam, és mien kóddal tudnám megoldani, hogy csak 90 karaktert írhassanak rá? Meg azzal is van problémám, hogy ha valaki bejelentkezik, és küldd 1 üzenetet, és ha küldd mégeggyet, akkor átlép annak a nevébe aki az előtt volt bejelentkezve! Lehet, hogy bonyolult vagyok, ha igen akkor szóljatok! Az üzenőfalra írás kódja(itt van az amibe beírhatják a szöveget):
    <?php
    $date = date("Y.m.d. H:i:s", time()) ."<br<br>";
    ?>
    <?php
    include("config2.php");
    if ( $nev != "" ) {
    $parancs = "CREATE TABLE szoveg2 ( nev varchar(20), szoveg char(100), datum char(20) )";
    $parancs2 = "insert into szoveg2 ( nev, szoveg, datum ) values ( '$nev', '$szoveg', '$date' )";
    mysql_query( $parancs, $kapcs);
    mysql_query( $parancs2, $kapcs);
    }
    ?>
    <center><form action=<?php $php_self ?>>
    <center>90 karaktert írhatsz a falra!</center>
    Szöveg:<br> <textarea cols=50 rows=5 name="szoveg"></textarea><br>
    <input type="submit" value=mehet>
    </form>
    <br><br><?php include("smiley.html") ?>

    Szerintem mind a 2 hiba ebben a kódban van! Ha nem akkor szóljhatok, és megadom a bejelentkezés kódját is, vagy amelyik kell!!
  • Dj Faustus #1350
    Evin: Neked a Flash Satay megoldásra lesz szükséged. Erről bővebben a A list a part oldalán olvashatsz. De ez megtalálható a Macromedia oldalán is.

    De van ennek kicsit felturbózott változata: lásd itt (Internet Explorer 5.5 körüli problémák megoldására).
  • Evin
    #1349
    Tudja valaki, ohgy xhtml-be hogy kell swf-et beszúrni? Próbáltam azzal, ahogy a html-be kell, de az <embed>-et nem szereti, nekem pedig szabványos megoldás kellene.
  • Zsoldos
    #1348
    Hello!

    Egy html kerdoivet szeretnek csinalni. Szimpla kis kerdesekre, radiobutton-al valaszthato valaszokat lehessen adni. Ez eddig meg gyerekjatek, ami extrat szeretnek bele, hogy egy bizonyos radiobuttonra ranyomva inaktivva valjon nehany masik gomb.

    Kerdoiveknel gyakran lathato pl: ha 5. kerdesrre negativ a valasza, ugorjon a 8-as kerdesre (tehat disable-re kerul a 6-7.)

    Valaki tudja hogy lehet ezt megcsinalni? Gondolom javascript temakor.
  • Dj Faustus #1347
    Töltsd be az értékeket tömbökbe, és úgy már tudsz fordított sorrendben listázni, utolsó x üzenetet kiírni. Tehát ilyesmire gondolok:
    $i=0;
    while ( $sor = mysql_fetch_array($select)) {
    $nev[$i]=$sor[nev];
    $szoveg2[$i] = $sor[szoveg];
    $datum[$i] = $sor[datum];
    $szoveg2[$i] = str_replace( array(':)', ';)', ':*(', 'B)', ':D', ':-(', ':-)', ':O'), array('<img src=smile/smile.gif>', '<img src=smile/smile2.gif>', '<img src=smile/bad.gif>', '<img src=smile/cool.gif>', '<img src=smile/grin.gif>', '<img src=smile/grr.gif>', '<img src=smile/laugh.gif>', '<img src=smile/oh.gif>'), $szoveg2[$i]);
    $i++;
    }
    $uzenetszam=$i-1;
    for ($i=$uzenetszam; $i>$uzenetszam-9; $i--) {
    print "<table border=\"0\"><tr><td bgcolor=\"blue\" width=\"100%\"><b><font color=\"white\">$nev[$i]</b> - $datum[$i]</font></td><tr><td width=\"100%\">$szoveg2[$i]</td><td></td></tr></table>";
    }
  • Jégkocka
    #1346
    1 nagyon amatőr problémám van de egyszerűen nem tudom megoldani! Csináltam 1 üzenőfalat, de egymás alá írja ki az üzeneteket! Rendesen fut de egymás alatt vannak az üzenetek! A php kód a következő:

    <marquee><center>Üzenetek: <br><br>
    <?php
    include("config.php");
    $select = mysql_query( "select * from szoveg2" );
    while ( $sor = mysql_fetch_array($select))
    {
    $nev = $sor[nev];
    $szoveg2 = $sor[szoveg];
    $datum = $sor[datum];
    $szoveg2 = str_replace( array(':)', ';)', ':*(', 'B)', ':D', ':-(', ':-)', ':O'), array('<img src=smile/smile.gif>', '<img src=smile/smile2.gif>', '<img src=smile/bad.gif>', '<img src=smile/cool.gif>', '<img src=smile/grin.gif>', '<img src=smile/grr.gif>', '<img src=smile/laugh.gif>', '<img src=smile/oh.gif>'), $szoveg2);
    print "<table border=0><tr><td bgcolor=blue width=100%><b><font color=white>$nev</b> - $datum</font></td><tr><td width=100%>$szoveg2</td><td></td></tr></table>";
    }
    ?>

    <center> </marquee>

    Ha valaki tudná azt is, hogy azt, hogy lehetne megoldani, hogy csak a legutóbbi 8 üzenet látszódjon azt megköszönném!
  • Jégkocka
    #1345
    köszi
  • Dj Faustus #1344
    Tehát a lényeg: bármit is kívánsz csinálni (létrehozni, felülírni, lekérdezni, megsemmisíteni) a munkamenet-változóval (session-nal), mindig legyen a file elején egy session_start() függvény.
  • Dj Faustus #1343
    Íme gy példa arra, hogyan marad meg a munkamenet-változó:
    test.php
    <?php
    session_start();
    $sessionname = "SessionNeve";
    $_SESSION[$sessionname]="próba";
    ?>
    <a href="test2.php">Link</a>


    test2.php
    <?php
    session_start();
    $sessionname = "SessionNeve";
    print($_SESSION[$sessionname]);
    ?>


    Másik megoldás: php switch get:
    <?php
    session_start();
    $sessionname = "SessionNeve";
    $id=$_GET["id"];
    switch ($id) {
    case belep : $_SESSION[$sessionname]="próba";
    print ("Bejelentkezés sikeres!<br>\n");
    print ("<a href=\"test.php?id=tovabb\">Tovább</a><br>\n");
    print ("<a href=\"test.php?id=kilep\">Kilép</a><br>\n");
    break;
    case tovabb : print ("Bejelentkezve!<br>\n");
    print ("<a href=\"test.php?id=kilep\">Kilép</a><br>\n");
    break;
    case kilep : session_unset();
    session_destroy();
    print ("Kijelentkezés sikeres!<br>\n");
    print ("<a href=\"test.php?id=belep\">Belép</a><br>\n");
    break;
    default : if (isset($_SESSION[$sessionname])) {
    print ("Bejelentkezve!<br>\n");
    print ("<a href=\"test.php?id=kilep\">Kilép</a><br>\n");
    } else {
    session_unset();
    session_destroy();
    print ("Kijelentkezve!<br>\n");
    print ("<a href=\"test.php?id=belep\">Belép</a><br>\n");
    }
    break;
    }
    ?>
  • Jégkocka
    #1342
    Sziasztok! :D Elég rég nemírtam! :D Megint 1 kérdésem lenne! Hogyan tudnám megcsinálni, hogyha valaki bejelentkezett az oldalamra az ha ellép 1 másik lapra akkor is bejelentkezve maradjon??
  • Dj Faustus #1341
    Ha a beolvasott file 10. sorát akarod megváltoztatni:
    <?php
    $fileneve = "valami.txt";
    $valtozo = @file($fileneve); //Beolvassuk az adatokat egy tömbbe
    //Itt csinálsz valamit a 10. sorral pl: $valtozo[9]=chop($valtozo[9])."bla\n";
    $fp = fopen($fileneve,"w"); //Felülírjuk a file-t...
    for ($i=0; $i<count($valtozo); $i++) {
    fwrite($fp, $valtozo[$i]); //Soronként beleírjuk a tartalmat
    }
    fclose($fp); //Zárjuk a file-t.
    ?>

    Persze ennek előfeltétele hogy minimum 10 soros legyen az állomány, és a sorok végén legyen sorvége-jel.

    Ha csak úgy a 10. sorba akarsz írni (a többi sor üres legyen):
    <?php
    $fileneve = "valami.txt";
    $akarmi = "asdf";
    $fp = fopen($fileneve,"w"); //Felülírjuk a file-t...
    for ($i=0; $i<10; $i++) {
    if ($i==9) {
    fwrite($fp, $akarmi."\n"); //Ha 10. sor, tartalmat írunk bele
    } else {
    fwrite($fp, "\n"); //Ha nem 10. sor, tartalmat nem írunk bele
    }
    }
    fclose($fp); //Zárjuk a file-t.
    ?>
  • Blackrav3n
    #1340
    Hi

    És azt hogy lehet megcsinálni, hogy egy változót egy txt file 10. sorába beleírjon?

    <?php
    $File = "valami.txt";
    $akarmi = "asdf";
    $fp = fopen($File,"a");
    fwrite($fp, $akarmi); ezt kéne módosítani, hogy a 10. sorába írja az akarmi változót
    fclose($fp);
    }
    ?>
  • Gerasim
    #1339
    Faustus!

    Köszi szépen a gyors segitséget!
    Kicsit sokáig probálkoztam vele mert egy egér mozgatos képra akartam rávinni de sikerült!
    Kösz még1x
  • Flamaster #1338
    Köszi!!Műxik!
  • Bercy #1337
    Az adatbázisból való lekéréskor állíts be a megelelő paramétereket.
    PL: select * form 'tábla' order by 'nevek'
  • Dj Faustus #1336
    Helló!

    Tegyük fel, hogy van 3 frame-ed: menu, tartalom1, tartalom2 - például így:
    <frameset rows="10%,45%,45%">
    <frame src="menu.htm" name="menu">
    <frame src="tartalom1.htm" name="tartalom1">
    <frame src="tartalom2.htm" name="tartalom2">
    </frameset>


    Tegyük fel továbbá, hogy a menűben van a link, amellyel a két tartalmi részbe akarsz oldalakat betölteni. Akkor a következő kódrészletre van szükséged:
    <script type="text/javascript">
    function betolt(bea,beb) {
    parent.tartalom1.location=bea;
    parent.tartalom2.location=beb;
    }
    </script>
    <a href="#" onclick="betolt('egyik.htm','masik.htm');">Link</a>


    Forrás: Using JavaScript to load multiple frames
  • Gerasim
    #1335
    Hello Minenki!

    Hirtelen szükségem lenne 1 kis segitségre!
    Azt nem tudom hogy meg lehet oldani 1 szöveg vagy bármilyen képre rálinkelni úgy
    hogy 2 külömböző html-t nyísson meg és ezt a 2 html-t 2 külömböző frame-be!
    Meglehet hoyg nagy baromságot kérdeztem de nem tudom hoyg létezik vagy nem!
    A segitséget előre is köszönöm!

    Gerasim
  • Flamaster #1334
    Hálás köszönet :)
    Sikerült megoldjam a linkelt file-al.
    Először nem működött, csak miután commenteltem ezt a sort:

    if (($x%3)==0)
    {
    //print "</tr>";
    }
    $x=$x+1;

    De hogy a dolog mégse legyen ezzel lezárva , egy olyan probléma adódott most, hogy számomra logikátlanul rakja a képeket egymás mellé.
    Arra tudtok megoldást, hogy tudom pl. ID szerint kilistázni őket?
  • Blackrav3n
    #1333
    thx