Session een waarde geven uit een array

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Danny

Danny

24/01/2008 14:36:00
Quote Anchor link
Hoi,

Ik ben bezig aan een script waarbij een ingelogde gebruiker foto's kan uploaden naar zijn profiel.

Iedere gebruiker heeft een maximaal aantal foto's wat hij per profiel kan uploaden. Dit is in de database vastgelegd.

Op de onderstaande pagina word een overzicht weergegeven van de profielen die de ingelogde gebruiker heeft. Hij moet hier dan foto's bij kunnen uploaden dmv de link die in de array is verwerkt.

Echter zodra de gebruiker de link aanklikt moet het "profiel_id" in een sessie worden geplaatst zodat ik op de volgende pagina waar de gebruiker het eigenlijke uploaden moet doen aan de database kan aangeven om welk id het gaat. Het gebruikers id is al in de sessie ingevoerd toen hij inlogde.

Het probleem zit hem ergens in de "onclick"

ik heb tot nu toe onderstaand script geschreven:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
<?php
include '../library/config.php';
include '../library/opendb.php';

$user_id = $_SESSION['user_id'];

$query = "SELECT *, COUNT(gallery_userid) AS aantal FROM gallery WHERE gallery_userid = '$user_id' GROUP BY 'gallery_userid'";
mysql_query($query) or die('Error');    

$query2 = "SELECT id, gallery_usermax FROM phpmylogon WHERE id =" . $user_id;
mysql_query($query2) or die('Error2');    

$query3 = "SELECT * FROM gallery WHERE gallery_userid = '$user_id'";
mysql_query($query3) or die('Error');    

$data = mysql_query($query);
$data3 = mysql_query($query3);
$row = mysql_fetch_array($data);

$data2 = mysql_query($query2);
$row2 = mysql_fetch_array($data2);

$usermax = $row2['gallery_usermax'];
$aantal = $row['aantal'];
$toegestaan = $usermax - $aantal;

if($toegestaan == 0)
{


while($row3 = mysql_fetch_array($data3))
{

echo "<table width='90%'>";

echo "<tr><td width='25%'>";
echo "Gallery ID: ";
echo "</td><td width='75%'>";
echo $row3['gallery_id'];
echo "</td></tr><tr><td width='25%'>";
echo "Merk: ";
echo "</td><td width='75%'>";
echo $row3['merk'];
echo "</td></tr><tr><td width='25%'>";
echo "";
echo "</td><td width='75%'>";
echo "<a href='fotoupload.php' target='_top' onClick=\"$_SESSION['gallery_id'] = $row3['gallery_id'];\">Foto's toevoegen</a> - <a href='' target='_top'>Gallery bewerken</a>";
echo "</td></tr>";

echo "</table>";
echo '<br />';

}

echo "<br />Je kunt geen extra gallery's meer aanmaken tot je account geupgrade is.";

}

else if($toegestaan >= 1)
{


while($row3 = mysql_fetch_array($data3))
{

echo "<table width='90%'>";

echo "<tr><td width='25%'>";
echo "Gallery ID: ";
echo "</td><td width='75%'>";
echo $row3['gallery_id'];
echo "</td></tr><tr><td width='25%'>";
echo "Merk: ";
echo "</td><td width='75%'>";
echo $row3['merk'];
echo "</td></tr><tr><td width='25%'>";
echo "";
echo "</td><td width='75%'>";
echo "<a href='fotoupload.php' target='_top'>Foto's toevoegen</a> - <a href='' target='_top'>Gallery bewerken</a>";
echo "</td></tr>";

echo "</table>";
echo '<br />';
}


echo 'Je kunt nog ';
echo $toegestaan;
echo " gallery('s) aanmaken.<br /><br />";

echo "<a href='galleryaanmaken.php' target='_top'>Gallery aanmaken</a>";
}


include '../library/closedb.php';
?>
 
PHP hulp

PHP hulp

18/05/2024 20:53:41
 
Crispijn -

Crispijn -

24/01/2008 14:43:00
Quote Anchor link
Quote:
$_SESSION['gallery_id'] = $row3['gallery_id']


Je denkt dat het hier fout gaat. Dat denk ik ook. Dit is een beetje poep eerlijk gezegt. Aan een onclick event kan je een functie hangen en daar kan je allerlei dingen door laten gebeuren.

Je zegt hier alleen onclick 1=1 in het gunstige geval. Maar ik snap niet wat je precies wil. Je hebt al een link naar de pagina waar je foto's kan uploaden.

Kan je niet beter controleren of die link wel zichtbaar mag zijn?

Dus:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
    if($user_id == $galery_id){
        echo 'link voor uploaden';
    }

?>


Verder snap ik niet hoe je zo zeker kan zijn dat het user_id zo hard samenhangt met het galery_id. Hoe heb je dat geregeld? Heb je goed gekeken naar de normalisatie van je database?

Kortom: Kijk even goed naar wat je wilt. Ik kan me voorstellen dat je een gallery koppelt met een users database, en dat je foto's aan je gallery toevoegt. Alleen volgens mij komt er dan een heel andere database opzet uit...
 
Danny

Danny

24/01/2008 15:15:00
Quote Anchor link
Ik heb een pagina deze heet fotoupload.php,

De foto die dmv deze pagina word geupload word gerenamed en in een map geplaatst. In de database word in de tabel 'galleryimage' een record aangemaakt die deze foto een id geeft en die deze koppelt aan een galleryid en aan een userid.

Echter moet deze pagina wel weten aan welke gallery id het moet worden gekoppeld. Deze waarde moet worden meegegeven van de pagina in bovenstaande broncode.

Ik heb dus ook nog een table 'phpmylogon' dit is van het login script dat ik gebruik. hierin worden alle users en hun gegevens geplaatst.

Verder heb ik nog een table 'gallery' hierin worden alle gallery gegevens bewaard. en dus ook het user_id.

PS. In deze pagina heb ik dus al een controle ingevuld op het maximale aantal gallery's dat de gebruiker mag hebben. Hij haalt de max gallery waarde uit de database en hij telt het aantal gallery's dat al gemaakt zijn door de gebruiker. Dmv van die rekensom bepaalt hij of je wel of niet de extra gallery aanmaken link mag zien. het gaat hier dus niet om de foto upload link.
Gewijzigd op 01/01/1970 01:00:00 door Danny
 
Crispijn -

Crispijn -

24/01/2008 15:33:00
Quote Anchor link
Hoe ziet je database structuur er uit? Je bent volgens mijn ontzettend veel data dubbel aan het opslaan.

Verder snap ik waar je heen wilt, alleen ik kon alleen maar een onlclick vinden in de a href die naar het foto's uploaden wijst... snap je mijn verwarring?
 
Danny

Danny

24/01/2008 15:52:00
Quote Anchor link
Mijn structuur. Indien hier verbetering aan kunnen hoor ik dit graag natuurlijk.

De website waar het allemaal om draait is trouwens: www.cargallery.nl
Zoals je ziet nog druk in aanbouw vandaar dat ik alles stap voor stap afmaak.

Voel je vrij om je eventueel aan te melden en het een en ander te testen. Voordat de site werkelijk online komt worden toch alle tabellen geleegd.

Mijn structuur:

Tabel structuur voor tabel gallery
Veld Type Null Standaardwaarde
gallery_id int(10) Nee
gallery_userid int(10) Nee 0
merk text Nee
type text Nee
bouwjaar text Nee

Tabel structuur voor tabel galleryimage
Veld Type Null Standaardwaarde
imageid int(11) Nee
gallery_id int(10) Nee 0
galleryimage_userid int(11) Ja NULL
name varchar(30) Nee
type varchar(30) Nee
size int(11) Nee 0
path varchar(60) Nee

Tabel structuur voor tabel phpmylogon
Veld Type Null Standaardwaarde
id int(11) Nee
name varchar(50) Nee
password varchar(50) Nee
cookie_pass varchar(50) Nee
state char(1) Nee 0
mail varchar(100) Nee
active char(1) Nee 0
actcode varchar(15) Nee
lastactive datetime Nee 0000-00-00 00:00:00
voornaam varchar(100) Nee niet ingevuld
achternaam varchar(100) Nee niet ingevuld
woonplaats varchar(100) Nee niet ingevuld
gallery_usermax int(10) Nee 1
image_usermax int(10) Nee 3
 
Crispijn -

Crispijn -

24/01/2008 15:58:00
Quote Anchor link
galleryimage_userid int(11) Ja NULL

Deze snap ik bijvoorbeeld niet (gevonden in de tabel galleryimage). Je kan toch aan de hand van de relatie gallery-user weten van wie deze afbeelding is? Waarom zou je weer apart een userid opslaan?

Verder is het raar om in je tabel phpmylogon (wat eigenlijk je users tabel is) een variabele als image_usermax mee te geven. Of wisselt dit per gebruiker? Dat lijkt mij op dit moment nog sterk. Je kan beter elke keer tellen hoeveel gallery's door de gebruiker al zijn aangemaakt. Zo ben je veel betrouwbaarder bezig.

Hetzelfde geld voor het aantal foto's.

Verder snap ik niet dat het fout gaat bij het aanmaken van een gallery. Die onclick staat nog steeds gewoon bij het toevoegen van een afbeelding. Dus wat wil je nu precies?
 
Danny

Danny

24/01/2008 16:03:00
Quote Anchor link
Zodra jij je aanmeld krijg je het recht om 1 gallery met 3 afbeeldingen te maken.

Dit kan later worden aangepast dmv van je account te upgraden. ( Telefonisch, per sms, enz ) dit word allemaal geregeld via mobilemoney.biz dus heb ik verder geen omkijken na.

Zodra het geupgrade is krijgt de gebruiker rechten om meer foto's en of gallery's op te slaan / aan te maken.

Vandaar die waarden. ( gebruikers zijn dus vrij in het en wanneer upgraden van hun accounts )

Deze kant wil ik dus op..

Hoe zou jij dit doen?
 
Buddy Bgh

Buddy Bgh

25/01/2008 11:13:00
Quote Anchor link
Danny kijk je pm aub
 
- SanThe -

- SanThe -

25/01/2008 12:36:00
Quote Anchor link
Mist session_start() niet bovenin?
 
Frank -

Frank -

25/01/2008 12:44:00
Quote Anchor link
De 1e query is fout en hoort een dikke error op te leveren, de 2e en 3e query kun je volgens mij samenvoegen tot 1 query.

Stel MySQL in op STRICT-mode en leer SQL correct te gebruiken. De GROUP BY is namelijk helemaal fout, je groupt nu op een string, je hoort te groupen op alle kolommen die niet in een aggregate functie staan.

Ik vraag me ook af waarom je alle queries 2x uitvoert, waarbij je niks doet (of kunt doen!) met de eerste keer dat je hem uitvoert. De 2e keer dat je een query uitvoert, doe je niks aan foutafhandeling, eveneens zeer bijzonder.

Kortom, nog een hele hoop werk te doen!
 
Danny

Danny

28/01/2008 00:08:00
Quote Anchor link
De sessie word al gestart in een andere pagina zodra de gebruiker inlogd.
Er zijn dan ook geen problemen met het verkrijgen van de gegevens uit de sessie.

Als reactie op pgFrank, ik ben nog niet zo lang bezig met mysql dus vandaar deze fouten. In ieder geval bedankt voor je reactie.

Iemand nog een oplossing voor het probleem waar ik eigenlijk dit topic voor ben begonnen ?
 
Danny

Danny

28/01/2008 23:15:00
Quote Anchor link
ik heb de code al iets opgeschoond:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
<?php
include '../library/config.php';
include '../library/opendb.php';

$user_id = $_SESSION['user_id'];

$query = "SELECT *, COUNT(gallery_userid) AS aantal FROM gallery WHERE gallery_userid = '$user_id' GROUP BY 'gallery_userid'";
$data = mysql_query($query) or die('Error');    

$query2 = "SELECT id, gallery_usermax FROM phpmylogon WHERE id =" . $user_id;
$data2 = mysql_query($query2) or die('Error2');    

$query3 = "SELECT * FROM gallery WHERE gallery_userid = '$user_id'";
$data3 = mysql_query($query3) or die('Error3');    

$row = mysql_fetch_array($data);
$row2 = mysql_fetch_array($data2);

$usermax = $row2['gallery_usermax'];
$aantal = $row['aantal'];
$toegestaan = $usermax - $aantal;

if($toegestaan == 0)
{


while($row3 = mysql_fetch_array($data3))
{

echo "<table width='90%'>";

echo "<tr><td width='25%'>";
echo "Gallery ID: ";
echo "</td><td width='75%'>";
echo $row3['gallery_id'];
echo "</td></tr><tr><td width='25%'>";
echo "Merk: ";
echo "</td><td width='75%'>";
echo $row3['merk'];
echo "</td></tr><tr><td width='25%'>";
echo "";
echo "</td><td width='75%'>";
echo "<a href='fotoupload.php' target='_top' onClick=''>Foto's toevoegen</a> - <a href='' target='_top'>Gallery bewerken</a>";
echo "</td></tr>";

echo "</table>";
echo '<br />';

}

echo "<br />Je kunt geen extra gallery's meer aanmaken tot je account geupgrade is.";

}

else if($toegestaan >= 1)
{


while($row3 = mysql_fetch_array($data3))
{

echo "<table width='90%'>";

echo "<tr><td width='25%'>";
echo "Gallery ID: ";
echo "</td><td width='75%'>";
echo $row3['gallery_id'];
echo "</td></tr><tr><td width='25%'>";
echo "Merk: ";
echo "</td><td width='75%'>";
echo $row3['merk'];
echo "</td></tr><tr><td width='25%'>";
echo "";
echo "</td><td width='75%'>";
echo "<a href='fotoupload.php' target='_top'>Foto's toevoegen</a> - <a href='' target='_top'>Gallery bewerken</a>";
echo "</td></tr>";

echo "</table>";
echo '<br />';
}


echo 'Je kunt nog ';
echo $toegestaan;
echo " gallery('s) aanmaken.<br /><br />";

echo "<a href='galleryaanmaken.php' target='_top'>Gallery aanmaken</a>";
}


include '../library/closedb.php';
?>
 
Danny

Danny

30/01/2008 23:25:00
Quote Anchor link
iemand nog vragen / opmerkingen / oplossingen?
 
Jan Koehoorn

Jan Koehoorn

30/01/2008 23:29:00
Quote Anchor link
Wat is het probleem precies?
 
Danny

Danny

31/01/2008 23:00:00
Quote Anchor link
Ik wil graag dat zodra een gebruiker op de link klikt van een gallery om een foto te uploaden het gallery id in een sessie word gezet. Zodat ik op de pagina waar het foto upload script staat deze waarde kan uitlezen en zo aan de database kan aangeven bij welk gallery id de afbeelding hoort.
 
Sir Psycho Sexy

Sir Psycho Sexy

31/01/2008 23:28:00
Quote Anchor link
Inderdaad, wat is je probleem? Ik snap er niks van.
Gewijzigd op 01/01/1970 01:00:00 door Sir Psycho Sexy
 
Danny

Danny

31/01/2008 23:50:00
Quote Anchor link
Ik wil graag dat zodra een gebruiker op de link klikt van een gallery om een foto te uploaden het gallery id in een sessie word gezet. Zodat ik op de pagina waar het foto upload script staat deze waarde kan uitlezen en zo aan de database kan aangeven bij welk gallery id de afbeelding hoort.
 
Joren de Wit

Joren de Wit

01/02/2008 10:37:00
Quote Anchor link
Geef het id van de gallery mee als GET variabele in de url en lees hem vervolgens op de pagina waar je de foto wilt uploaden weer uit?

Hier kun je hem vervolgens in een sessievariabele zetten of zou je hem ook in een hidden inputfield in je upload formulier kunnen zetten...
 
Danny

Danny

01/02/2008 18:01:00
Quote Anchor link
Dit is geen optie, omdat zodra iemand deze id veranderd deze dan op andermans pagina zou kunnen oploaden.. toch ?
 
Joren de Wit

Joren de Wit

01/02/2008 18:12:00
Quote Anchor link
Maar dat is toch enkel een kwestie van eventjes controleren of de ingelogde gebruiker wel de eigenaar is van de gekozen gallery? Als dat niet het geval is, stuur je de gebruiker gewoon weg van die pagina...
 
Danny

Danny

02/02/2008 00:07:00
Quote Anchor link
Ja dit is inderdaad een oplossing... iemand een idee over hoe ik dit zo veilig mogelijk kan implementeren?
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.