22786
Html-, css- és php-help
-
#1372 Faustus irigyelem a türelmed a témában...amennyit képeztem magamat én is, és a kérdések.
Le a kalappal,)))) -
#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. -
#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? -
#1369 Kicsit késve, de köszi. Bevált. -
#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) -
#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! -
#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!
-
#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? -
#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. -
#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. -
#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") ?> -
#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... -
#1360 Akkor arra senkinek semmi ötlete, hogy azt hogyan lehetne megcsinálni, hogy nejelentkezzen át az azelőtt belépett felhasználó nevébe? -
#1359 ha már javítani nem, lehet igazán kinyomhatnák a szemünket egy előnézet gombbal -
#1358 Köszi! Ez a problémám megoldódott! De még mindíg átjelentkezik az ezelőtt bejelentkezett felhasználóhoz! -
#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 ,) -
#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. -
#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? -
#1354 De ez a kód még annyira se fut mint az enyém! De köszi a segítséget! -
#1353 A táblából! -
#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? -
#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!! -
#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). -
#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. -
#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>";
} -
#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!
-
#1345 köszi -
#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. -
#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;
}
?> -
#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?? -
#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);
}
?> -
#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 -
#1338 Köszi!!Műxik! -
#1337 Az adatbázisból való lekéréskor állíts be a megelelő paramétereket.
PL: select * form 'tábla' order by 'nevek' -
#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 -
#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 -
#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