» »

PHP - pomoč

PHP - pomoč

matotej ::

Alo!

Dobil sem nalogo za postavitev ene strani s pomocjo PHP&MySQL. Uporabniki bi se lahko logirali in tam imeli
povezavo do neke datoteke (popravek programa). Jaz sem se to lotil po kmečko omogočil adminu, da vpiše neko povezavo, ki
se potem uporabniku prikaže ko se logira. Kar pa seveda ni bilo prav. Dobil sem sledeča navodila, ki mi pa niso jasna. Ker sem
n00b bi nekoga prosil za pomoč, kako se to naredi.

"Pri vsakemu uporabniku se lahko doda vec le njemu, uporabniku specificnih povezav do upgradov, navodil,... Torej lahko imas tabelo uporabnikov z vsemi njihovimi podatki, nato pa se eno tabelo, kjer so zbrani linki z identifikacijo, kateremu uporabniku pripadajo. Linke lahko seveda tudi brisemo."

Pogledal sem pa tutorialov, ampak nisem našel 0 uporabnega.

Hvala!

lp

BlueRunner ::

Bodisi si najdi programerja, ki ti bo to uredil v eni uri, bodisi vzemi v roke kakšno resno knjigo o programiranju. Morda Programming PHP.

Vsekakor pa nikoli ne sprejmi dela, za katerega nisi usposobljen. Tudi, če se boš kdaj usposobil za to delo, ti ne bo več nikoli nihče zaupal.

Tody ::

Huh ja nekako tako :D

Torej tole je login skripta : klikot

Tole je ODLIČEN SLOVENSKI PHP KROŽEK (Bravo Marko ;)) Spletni PHP krožek

Tole je tudi dost dober angleški php krožek PHP Tutorial - Functions

Vse ostalo je prepuščeno tebi...

Torej moreš narediti neko forumo kjer se bo uporabniku dodajalo pravice.

Odvisno od tvojih zmožnosti... Če imaš ful časa na voljo si sam sprogramiraj zadevo (ti bo koristilo če se misliš še naprej gibat v tej smeri) Če nimaš časa ne volje reskiraj ene 5.000 sit za programerja (povprašaj na slo-techu)

Zgodovina sprememb…

  • spremenil: Tody ()

matotej ::

OK zgleda me niste najbolj razumeli.

Jaz imam to že ful narejeno. Stvar se pač učim in naredil sem, da se oseba lahko logira, spreminja svoje podatke. Imam administratorja, ki lahko dodaja admine in nove uporabnike (tudi briše in ureja). Sedaj ti uporabniki naj bi imeli dostop do popravkov nekega programa. In te povezave do teh popravkov je treba realizirati na ta način, ki pa meni ni jasen.

"Pri vsakemu uporabniku se lahko doda vec le njemu, uporabniku specificnih povezav do upgradov, navodil,... Torej lahko imas tabelo uporabnikov z vsemi njihovimi podatki, nato pa se eno tabelo, kjer so zbrani linki z identifikacijo, kateremu uporabniku pripadajo. Linke lahko seveda tudi brisemo."

Tko, da bi samo prosil, če mi lahko mal razložite, kako se naredi te linke in na kakšen način delujejo?!

Hvala!
lp

Alpheus ::

maš recimo 2 tabeli
v eni tabeli piše
ID - ime - vrsta - starost
--------------------------------
1 - janez - homo sapiens - 14 let
2 - miha - medved - 65 let
itd.

pol pa maš v drugi tabeli
recimo:

ID - popravk
--------------------------------
1 - popravek X
1 - popravek X2
2 - popravek Y1
1 - popravek nekaj

torej maš eno tabelo z IDji (prva celica) uporabnikov in pol tem IDjem (uporabnikom) prirejaš "popravke", saj če sem dobro razumel
VI VERI VENIVERSUM VIVUS VICI.

Zgodovina sprememb…

  • spremenil: Alpheus ()

matotej ::

OK to štekam... tudi tko mam narejeno, vsak user ima svoj ID, ki je unique in auto_inc. Zdej admin more imet funkcijo za dodajat linke in potem določit še ID. V praksi določiš ID=37 in link=http://www.xxxyyxxy.xyx

Potem pa na njegovi user strani prikažem tiste linke "where ID=37"!

A bi to blo to?
lp

BlueRunner ::

Za povezave many-to-many uporabiš povezovalno tabelo, ne pa tako, kot je Aplheus napisal. Relacija je many-to-many, zato, ker imaš lahko za vsako datoteko več uporabnikov, ki jim je dostopna, in za vsakega uporabnika več datotek, ki so jim dostopne. Več na več...

Tako administriraš seznam uporabnikov posebej, seznam datotek posebej in seznam povezav med uporabniki in datotekami (ugani zakaj se tabeli reče povezovalna) posebej. Sicer pa povezovalna tabela vsebuje samo dve polji: ID uporabnika in ID datoteke. Verjetno te je pa zmedlo to, da se zadevi reče "link table"... povezava == link... Nimajo pa "linki" med uporabniki in datotekami nikakršne povezave z URL "linki" v tabeli datotek.

Če se predstavljaš: izbereš uporabnika, nato pa se prikaže seznam vseh obstoječih datotek. Pri vsaki datoteki, za katero želiš, da bo uporabniku prikazana, pritisneš kljukico. Ko na vmesniku pritisneš submit, pa (po kmečko) najprej iz povezovalne tabele izbrišeš vse vrstice, kjer je user_id enak izbranemu userju, potem pa dodaš še vse vrstice, kjer je user_id enak izbranemu userju, datoteka_id pa ID-ju datoteke pred katero si dal kljukico.

Za seznam datotek pri prijavljenem uporabniku pa samo združiš povezovalno tabelo z tabelo datotek in filtriraš po user_id.

Glede na to, da pa je to ABC relacijskih podatkovnih baz, ti še vedno močno priporočam, da se čim prej vsedeš pred knjigo in se naučiš kaj in kako te zadeve delujejo. Po temu, kar si napisal se bi dalo sklepati, da si vedno na robu tega, da boš ostal brez naročila, ugleda in še česa. In to samo zato, ker se lotevaš zadev, ki jih še nisi "doma sprobal", da ne bo kdo rekel, da samo z knjigami posiljujem.

Alpheus ::

in v čem se tole razlikuje od česar sem jaz napisal?
VI VERI VENIVERSUM VIVUS VICI.

mte ::

in v čem se tole razlikuje od česar sem jaz napisal?

V tem da ti imaš 2 tabele, rabil bi pa 3. Tabelo z uporabniki, tabelo s popravki in povezovalno tabelo, ki vsebuje samo id-je.
Tvoj pristop je one-to-many - nek popravek lahko pripada samo enemu uporabniku.

Zgodovina sprememb…

  • spremenil: mte ()

Looooooka ::

relacijske se ponavad dela s tremi tabelami

tabela 1

userid
username
userpassword
userwhatever

tabela 2 -> datoteke al whatever
fileid
filedescription
fileblabla

tabela 3 rel_username_file
id
userid
fileid

in vse kar rabs je pol lepo left join na usertabelo...simple k pasulj...ce pa to delas sam z dvema tabelama...pol pa sklepam da se bos nekje zabasu s kolumni kar je neucinkovito.

matotej ::

Ful hvala vm za pomoč.
Stvar počasi napreduje in mislim, da bom kmalu pri kraju. Samo nisem vedel kako se lotit.
Aja brez skrbi tle ne gre za noben denar, delam seminarsko za faks... problem je bil, ker nisem dobil
dovolj točnih navodil(samo ustno navodil). In ko sem mislil, da sem že končal so prihajale nove stvari...

Hvala!
lp

BlueRunner ::

Ah, če je pa to seminarska za faks, potem greš pa že definitivno v pravi smeri... Strah je takrat, kadar se ljudje učijo na stroške nič hudega slutečih naročnikov.

matotej ::

Prišel sem še do 1 zadrege.
Stvar mi zdej lepo dela. Naredil sem upload datotek, potem še to tabelo za povezavo. Amapak, ko naredim join mi koda izpise
vsako pravo rešitev natančno 4x!

if ($dat_licenca > $datum)
{
$join = mysql_query("SELECT * FROM users, relacija, upload WHERE $_id = relacija.id and relacija.fileid= upload.fileid") or die(mysql_error());

while($rowj = mysql_fetch_array( $join ))
{
$_fid = $rowj['fileid'];
$_fname = $rowj['filename'];
?>
/* tle mi izpise, ampak mi forum(zgleda ga mal mede php). pa vejetno to ni problem */

Tkole zgleda tale moja žalost od kode, če mi lahko kdo pomaga, zakaj se to izpiše 4x?!
lp

BlueRunner ::

Narobe si se lotil... Povezovalna tabela ima ID polje iz user-jev in ID polje iz upload-ov. Ti dve polji obe sestavljata primarni ključ, dodatnega ID polja za samo "relacijo" pa nimaš, ker ga ne potrebuješ.

Da se ne boš več mučil, ker te teme očitno še ne razumeš. Osebno si mislim, da si zaslužiš negativno oceno za seminar, saj nimaš niti minimalnega znanja iz tega področja, ki ga od tebe nekdo očitno zahteva...

---------------------------------------------------------------------------------------------------------------
CREATE TABLE user (
id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
name CHAR(60) NOT NULL,
PRIMARY KEY (id)
);

CREATE TABLE upload (
id SMALLINT UNSIGNED NOT NULL AUTO_INCEREMENT,
name CHAR(60) NOT NULL,
link CHAR(256) NOT NULL,
PRIMARY KEY (id)
);

CREATE TABLE relacija (
user_id SMALLINT UNSIGNED NOT NULL,
upload_id SMALLINT UNSIGNED NOT NULL,
PRIMARY KEY (user_id, upload_id)
);

---------------------------------------------------------------------------------------------------------------

Če hočeš pregled vseh uporabnikov in njihovi datotek (skupaj z uporabniki brez datotek):
SELECT * FROM users LEFT JOIN relacija ON user.id = relacija.user_id INNER JOIN upload ON relacija.upload_id = upload.id

Če hočeš samo pregled datotek za določenega uporabnika:
SELECT * FROM relacija INNER JOIN upload ON relacija.upload_id = upload.id WHERE relacija.user_id = $_id

Zgodovina sprememb…



Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Myslq index ne deluje???

Oddelek: Izdelava spletišč
172032 (1810) algo
»

Predlog - tabela - plačilni sistemi

Oddelek: Programiranje
5899 (708) programercek
»

php skripta za registracijo uporabnikov

Oddelek: Izdelava spletišč
161996 (1577) skorpio
»

portal ostal, baza sla

Oddelek: Izdelava spletišč
61731 (1616) bombacina
»

MySQL združevanje tabel..

Oddelek: Programiranje
191628 (1443) Nemenej

Več podobnih tem