ugrás a tartalomhoz

Archívum - 139783 - Fórum téma

szeptember 21

tervezés: redundánsan, vagy anélkül

Szekeres Gergő · 2006. Szep. 21. (Cs), 18.02
Egy projekt kivitelezése közben két alternatíva vetődött fel, amik közül nem tudok dönteni:

A lényeg annyi, hogy adatbázisba tárolnék e-maileket, neveket és csoportokat, körülbelül mint egy on-line telefonkönyvben. Minden regisztrált felhasználó feltölthet ide adatokat. (hogy miért csinálná ezt, azt most hagyjuk!:))

Így ha egyszerüen akarnám megcsinálni, akkor létrehoznék egy táblát:

address
------------
name ( ismerős neve )
mail ( ismerős mailcíme )
group ( ismerős melyik csoportba van - integer )
parent ( annak a usernek az azonosítója, aki feltöltötte, csak ő fér hozzá -int)

De arra gondoltam, hogy így ha egy embert sokan feltöltenek, akkor a mailcíme sokszor megjelenik az adatbázisba, így a következőt találtam ki:

table: mails
------------
mailID ( auto_inc, primary_key )
mail

table: names
------------
name
mailID ( primary_key )
group
parent

Így ha már van a táblába ilyen cím, akkor csak a names táblába kerülnek be az adatok, ha nincs akkor mindenhova.

Ezzel ugyan nagy rekordszám esetén helyet nyerhetek, de az INSERT-ek nek megnővelem a futáshosszát, mivel akkor végig kell pásztáznom a mails tábla mail mezőjét, hátha már be van jegyezve az adott rekord (esetleg indexelhetem is, de ez sem valami optimális megoldás...). Szóval pro és kontrák ismertek, de szerintetek melyik megoldás lenne a jobb?
 

Menü lenyíló része a div alá kerül

Anonymous · 2006. Szep. 21. (Cs), 16.33
Hali, nem tudjátok hogyan lehetne megoldani azt, hogy egy CSS menü lenyíló része ne kerüljön az alatta lévő relatívan pozícionált div alá?

Tehát úgy kell elképzelni, hogy az oldal fejlécében van a menü és alatta a tartalom egy divben (position:relative;). Amikor a menü lenyílik, akkor a lenyíló rész a tartalom div alá kerül, gondolom azért mert a relatív pozíció miatt az kiemelődik a tartalomból.

Viszont, a menü lenyíló része abszolút van pozícionálva, tehát elméletileg az is kiemelődik a tartalomból, de mégis a div alá kerül. Próbáltam a z-index-et állítani, de nem volt semmi hatása.

Van valami ötletetek esetleg?
 

preg_match es utf8 ekezetek

montressor · 2006. Szep. 21. (Cs), 12.50
Hali!

Szeretnek preg_match-el utf-8 magyar ekezetes betukre is szurni, hiaba a setlocale, a regex-ben az alnum se onmagaban, se utanna ő-t bigyesztve se szuri ki. Mit lehetne tenni?

setlocale(LC_ALL, 'hu_HU');

$szoveg="qwerő";
if(preg_match("/^[[:alnum:]ő]{1,8}$/",$szoveg)){
print("rendicsek");
}else{
print("nem rendicsek");


>nem rendicsek

koszonom
 

Külső alkalmazás indítása HTML dokumentumból

baller2 · 2006. Szep. 21. (Cs), 11.53
Sziasztok!

Talán banálisnak tűnik a kérdés, de nem tudom megoldani, és nem találtam megoldást a weblabor archívumban sem:
Tehát egy dinamikusan elkészített weblapra egy belső hálózaton szeretnék egy olyan linket elhelyezni, amely egy szerver megosztott könyvtárára mutat.
Szeretném elérni, hogy aki a hivatkozásra kattint, annak egy sima fájlkezelő induljon el, benne a megosztás tartalmával.

Kérdésem, hogy lehet e a href hivatkozást úgy paraméterezni, hogy az egy sima megosztásra mutasson (nekem nem sikerült), vagy lehet-e olyan JAVA szkriptet csinálni, ami a hivatkozásra kattintva a fájlkezelőt nyitja meg, átatva neki a megnyitni kívánt elérési utat.

Köszönöm a segítséget előre is!
 

szeptember 21

AJAX navigáció

Anonymous · 2006. Szep. 20. (Sze), 23.33
Jó estét!

AJAX segítéségével szeretném azt megoldani, hogy az oldalon való navigációkor
ne töltődjön újra az egész oldal, csak a tényleges tartalom (tehát a fejléc, menü,
lábléc stb. ne).

Eddig az AJAXszal csak nagyon egyszerű dolgokat csináltam (pl. egy select értékének
beállítása az adatbázisból egy másik select értékének alapján), ezért most kellene
némi segítség/útmutatás.

Szóval, ahogy én elképzeltem:

1. gondolva arra, hogy esetleg nem mindenki engedélyezi a javascriptet, ezért két féle
oldalt készítenék, az egyik a hagyományos (tehát egy menüpontra kattintva az egész
oldal betölt) és egy AJAXosat. A hagyományos oldal benne lenne egy divben és ha
engedélyezve van a JS, akkor azt a visibility állításával eltüntetem, míg az eddig
rejtett AJAXos oldalt előhozom. Viszont akkor így kétszer lesz "ugyanaz" a forráskód, ezért
az AJAXos oldalt lehet, hogy magával az AJAXszal kéne betöltenem?

2. a menüre való kattintáskor a linkben átadnám, hogy melyik oldalhoz tartozó tartalomra
van szükség és a PHP fájl egy switch segítségével az oldalnak megfelelő kódot adná
vissza, amiket külön fájlokban tárolnék. Viszont így minden oldalhoz kell egy PHP fájl is. Gondolom ennél van jobb megoldás is, nem?

3. hogyan tudom megcsinálni azt hogy a kérés küldése és a válasz
közti időben kiírjak egy "Kérem várjon" feliratot?

Na, most ezek jutottak eszembe, de szívesen fogadok minden tanácsot, segítséget!


- BalázS -
 

Szöveg hosszának kurtítása javascript-tel.

s_volenszki · 2006. Szep. 20. (Sze), 20.27
Sziasztok!

Hogyan lehet szöveges változó hosszát pl.: 9-re csappantani javascript-tel, azon kívül, hogy írok egy ciklust és 0-tól 8-ig egyesével összefűzöm!


szoveg = 'Ez lenne a minta!'
eredmény
szoveg = 'Ez lenne'

s_volenszki
 

PhpMyAdmin beállítás után is 'access denied' hibát ad

Anonymous · 2006. Szep. 20. (Sze), 17.20
Üdv!
Létrehoztam a config.inc.php fájlt, beírtam a jelszót. De mindíg ezt írja ki:
#1045 - Access denied for user: 'root@localhost' (Using password: NO)

Mi lehet a gond??
 

Ertekek beszurasa adatbazisba

Anonymous · 2006. Szep. 20. (Sze), 13.14

<?php
if(isset($_POST['submit'])) 
{
	$users = explode(",", $_POST['name']);
	$find  = mysql_query("SELECT user_id, username FROM register WHERE username IN('". implode ("', '", $users) ."')");
    	
	mysql_query("INSERT INTO messages (id, subiect, message, send_date) VALUES (0, '".$_POST['subiect']."', '".$_POST['mesaj']."', NOW())"); 
	$messages_id = mysql_insert_id();
	
	while ($row = mysql_fetch_array($find)) 
	{	
		mysql_query("INSERT INTO pm (id, msg_id, fromuserid, fromusername, touserid, folderid, messageread) VALUES (0, '".$messages_id."', '".$_SESSION['uid']."', '".$_SESSION['username']."', '".$row['user_id']."', '0', 'no')") or die(mysql_error());	
		$pm_id = mysql_insert_id();
	
		if (isset($_FILES['file']['tmp_name']) && $_FILES['file']['tmp_name']) 
		{
				foreach ($_FILES["file"]["name"] as $key => $name) 
				{
					$rand = substr(md5( time() . $_FILES['file']['name'][$key]), 0, 15);
					$target = "/home2/devfirst/files/"; 
					$target = $target . $rand;

					if(move_uploaded_file($_FILES['file']['tmp_name'][$key], $target)) 
					{
					mysql_query("INSERT INTO files (id, name, newname, size, type) VALUES (0, '".$_FILES['file']['name'][$key]."', '".$rand."', '".$_FILES['file']['size'][$key]."', '".$_FILES['fisier']['type'][$key]."')") or die(mysql_error()); 
					print mysql_insert_id();		
					}
				}
					mysql_query("INSERT INTO files_parent (id, pmid, filesid, fromuserid) VALUES (0, '".$pm_id."', '".$files_id."', '".$_SESSION['uid']."')") or die(mysql_error()); 	
		}
	}

}	
?>
A fenti kod beszur egy sort a messages nevezetu tablaba.
Veszi a messages tabla azonositojat (ID) es beszurja egy masik tablaba pm annyi usernek ahanynak az uzenett kuldve lett.

Ha az uzenethez fajlot csatolok, ezeket a fajlokat beirja egy files nevu tablaba.

Van egy masik tabla is files_parent ahol megadom melyik sor a pm tablabol melyik fajlot kapta.

files_parent

Warning: Missing argument 1 for torles()

Anonymous · 2006. Szep. 20. (Sze), 12.47
Warning: Missing argument 1 for torles() in ... on line 26

Warning: unlink(): No such file or directory in ... on line 27
ezek milyen hibák?
ezt kapom és nemtudom mit csináljak...
ez a 26-27. sor:

function torles($fajl) {
      unlink($fajl);
}
előre is köszi
 

txt feltöltése

Anonymous · 2006. Szep. 20. (Sze), 10.10
Hali!
megtudnátok nekem mondani hogy txt fájlt hogy kell feltölteni?
mert ahogy szerintem kell ugy nemjo..
szntem így kell vagyis ígyis lehet:

if ( ($fajl_type == "text/plain") or ($fajl_type == "application/vnd.ms-excel") ) {
	move_uploaded_file ( "$fajl", "$feltoltes_konyvtar/$fajl_name") or die ("A fájlt ( $fajl ) nem lehet feltölteni!");
}
előre is köszi