Array vraag
Nu heb ik 1 en ander gewijzigd en nu is het noodzakelijk dat de userids worden opgeslagen ipv de gebruikersnamen, maar toch wil ik de gebruikersnaam weergeven bij het desbeteffend id van die gebruiker.
Kan iemand mij een simpel opweghelpvoorbeeldje ( nieuw galgje woord ;-) ) laten zien hoe dit te doen. Derest pluis ik zelf wel weer uit.
De gangbare manier is om een tabel te maken met gebruikers.
Bijvoorbeeld een tabel "users"
met deze kolommen:
- user_id (auto_increment)
- name
- age
- password
"user_id" kun je dan gebruiken in andere tabellen om een ralatie met een gebruiker aan te geven.
Gewijzigd op 01/01/1970 01:00:00 door Martijn B
Ik sla een 20-tal gebruiker-id's op in de database.
Die haal ik weer op door ze in een array te zetten.
Nu gebruik ik het gebruikersid om een link naar desbetreffend gebruikersprofiel te leggen (dus Bv.profiel.php?userid=1200)
Ik wil dus kort gezegd deze 20 gebruiker-id's welke opgeslagen staat in tabelx ophalen en deze koppelen aan de gebruikersnaam in het tabel users
Wat ik nu zichtbaar heb is;
"<a href='profile.php?lookup=$array[2]'> - $array[2]</a><br>
Nu krijg ik dus ook het gebruikers-id als naam te zien, wat ik wil is dus op de plaats van de tweede $array[2] een gebruikersnaam zichtbaar. omdat dit nummer opgeslagen staat in een apart tabel moet dit nummer dus eerst "opgezocht worden uit het leden tabel..maar hoe ik dit het beste moet aanpakken is me momenteel even een raadsel.
Hopelijk is het nu wat duidelijk>?!
Code (php)
1
2
3
4
5
2
3
4
5
SELECT
a.gebruikersnaam AS gebruikersnaam,
b.id AS id
FROM tabelx a, users b
WHERE a.id = b.id;
a.gebruikersnaam AS gebruikersnaam,
b.id AS id
FROM tabelx a, users b
WHERE a.id = b.id;
Edit:
Maar ik verwacht dat je al een quert hebt om je data op te halen (iets meer dan SELECT * FROM tabel), dus geef je query eens, dan kunnen we verder kijken.
Gewijzigd op 01/01/1970 01:00:00 door Willem Jan Z
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
$query = "SELECT laatste5 FROM users WHERE user_id='$login_info'";
$res = mysql_query($query) or die("database fout");
while ($uitlezen = mysql_fetch_object($res))
{
$array = unserialize($uitlezen->laatste5);
echo"<a href='profile.php?lookup=$array[0]'>$array[0]</a><br>
<a href='profile.php?lookup=$array[1]'>$array[1]</a><br>
<a href='profile.php?lookup=$array[2]'>$array[2]</a><br>
";
}
$res = mysql_query($query) or die("database fout");
while ($uitlezen = mysql_fetch_object($res))
{
$array = unserialize($uitlezen->laatste5);
echo"<a href='profile.php?lookup=$array[0]'>$array[0]</a><br>
<a href='profile.php?lookup=$array[1]'>$array[1]</a><br>
<a href='profile.php?lookup=$array[2]'>$array[2]</a><br>
";
}
edit;
De link naar het profiel is dus goed, Alleen wil ik tussen de <a> </a> een profielnaam weergeven die bijbehorende naam dus d.m.v. de opgeslagen gebruikersid (uit de array) ophaalt uit de tabel users
Gewijzigd op 01/01/1970 01:00:00 door Alexxx
laatste5,
username
FROM
users
WHERE user_id='".$login_info."'
Gewoon username meenomen in de query, verder is het makkelijker om mysql_fetch_assoc te gebruiken.
Ik zal jouw script even ombouwen voor je.
Maar je hebt trouwens je database niet goed opgebouwd, je stopt een array in een veld. Dat zijn dingen die je met SQL gewoon goed kan opvragen.
SELECT titel, datum FROM berichten WHERE auteur = 'Jantje' ORDER BY datum DESC LIMIT 0,5;
Zo krijg je de laatste 5 berichten van Jantje te zien.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
$query = "
SELECT
laatste5,
username
FROM users
WHERE user_id='".$login_info."'";
$res = mysql_query($query) or die('database fout:'.mysql_error());
while ($uitlezen = mysql_fetch_assoc($res))
{
$array = unserialize($uitlezen['laatste5']);
echo ' Laatste 5 van: '.$uitlezen['username'].'
<a href="profile.php?lookup='.$array[0].'">'.$array[0].'</a><br>
<a href="profile.php?lookup='.$array[1].'">'.$array[1].'</a><br>
<a href="profile.php?lookup='.$array[2].'">'.$array[2].'</a><br>
<a href="profile.php?lookup='.$array[3].'">'.$array[3].'</a><br>
<a href="profile.php?lookup='.$array[4].'">'.$array[4].'</a><br>';
}
?>
$query = "
SELECT
laatste5,
username
FROM users
WHERE user_id='".$login_info."'";
$res = mysql_query($query) or die('database fout:'.mysql_error());
while ($uitlezen = mysql_fetch_assoc($res))
{
$array = unserialize($uitlezen['laatste5']);
echo ' Laatste 5 van: '.$uitlezen['username'].'
<a href="profile.php?lookup='.$array[0].'">'.$array[0].'</a><br>
<a href="profile.php?lookup='.$array[1].'">'.$array[1].'</a><br>
<a href="profile.php?lookup='.$array[2].'">'.$array[2].'</a><br>
<a href="profile.php?lookup='.$array[3].'">'.$array[3].'</a><br>
<a href="profile.php?lookup='.$array[4].'">'.$array[4].'</a><br>';
}
?>
Het zit zo. Wanneer een gebruiker (x) een profiel bekijkt van (y), word het id-nummer van gebruiker (x) opgeslagen in de database van gebruiker (y) Zodat gebruiker (y) kan zien wie er op zijn profiel is geweest.
In bovenstaande code werkt dat inderdaad ook prima met het uitlezen van de gebruiker-id's, alleen word er nu een id opgehaald i.p.v de gebruikersnaam. Ik wil dus de opgeslagen id omzetten in een gebruikersnaam, voorheen bij een ander systeem sloeg ik i.p.v het gebruikersid, de naam gelijk op en had ik geen problemen.
Aangezien er 20 gebruikerid's opgeslagen zitten in 1 veld (vandaar gebruik van array's anders zou ik ook 20 velden moeten aanmaken in de database en dat leek me een beetje teveel van het goede) die id's moeten omgezet worden in gebruikersnamen en daar kom ik even niet uit.
Code (php)
1
<a href="profile.php?lookup='.$array[4].'">Hier moet bijbehoren gebruikersnaam staan van het id opgeslagen in array[4]</a>
Ja ik weet het, het is moeilijk te verwoorden zo...
Misschien dat het nu weer iets duidelijker is.
Gewijzigd op 01/01/1970 01:00:00 door Alexxx
Maar daarvoor moet je of een 2e query maken, of je database omgooien. Ik prefereer het tweede.
Jouw database ziet er nu zo uit:
Code (php)
1
2
3
4
5
2
3
4
5
users
-------
userid naam email laatste5
--------------------------------------------------------
1 Jantje [email protected] 1,67,2,75,87
-------
userid naam email laatste5
--------------------------------------------------------
1 Jantje [email protected] 1,67,2,75,87
Maar dit is stukken handiger:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
users
-------
userid naam email
-----------------------------------------------
1 Jantje [email protected]
2 Kees [email protected]
3 Piet [email protected]
laatste
--------
user_id datumtijd
-----------------------------------------------
1 2006-07-28 11:22:15
2 2006-07-29 00:48:15
1 2006-07-29 04:10:15
3 2006-07-29 13:14:15
3 2006-07-29 13:14:15
2 2006-07-29 13:14:15
2 2006-07-29 13:14:15
1 2006-07-29 13:14:15
2 2006-07-29 13:14:15
3 2006-07-29 13:14:15
-------
userid naam email
-----------------------------------------------
1 Jantje [email protected]
2 Kees [email protected]
3 Piet [email protected]
laatste
--------
user_id datumtijd
-----------------------------------------------
1 2006-07-28 11:22:15
2 2006-07-29 00:48:15
1 2006-07-29 04:10:15
3 2006-07-29 13:14:15
3 2006-07-29 13:14:15
2 2006-07-29 13:14:15
2 2006-07-29 13:14:15
1 2006-07-29 13:14:15
2 2006-07-29 13:14:15
3 2006-07-29 13:14:15
Je kan dan zo je gegevens ophalen
Code (php)
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
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
<?php
$sql = "
SELECT
a.naam AS naam,
b.user_id AS id,
DATE_FORMAT(b.datumtijd, '%d-%m-%y %H:%i') AS datum
FROM users a, laatste b
WHERE a.user_id = b.user_id
AND b.user_id = ".$idvanprofieleigenaar."
ORDER BY b.datumtijd DESC
LIMIT 0,5";
if(!$res = mysql_query($sql))
{
echo 'Er is een fout opgetreden: '. mysql_error();
}
else
{
if(mysql_num_rows($res) == 0)
{
echo 'Er zijn nog geen bezoekers geweest';
}
else
{
while($row = mysql_fetch_assoc($res))
{
echo '<a href="profile.php?lookup='.$row['id'].'">'.$row['naam'].'</a>';
}
}
}
?>
$sql = "
SELECT
a.naam AS naam,
b.user_id AS id,
DATE_FORMAT(b.datumtijd, '%d-%m-%y %H:%i') AS datum
FROM users a, laatste b
WHERE a.user_id = b.user_id
AND b.user_id = ".$idvanprofieleigenaar."
ORDER BY b.datumtijd DESC
LIMIT 0,5";
if(!$res = mysql_query($sql))
{
echo 'Er is een fout opgetreden: '. mysql_error();
}
else
{
if(mysql_num_rows($res) == 0)
{
echo 'Er zijn nog geen bezoekers geweest';
}
else
{
while($row = mysql_fetch_assoc($res))
{
echo '<a href="profile.php?lookup='.$row['id'].'">'.$row['naam'].'</a>';
}
}
}
?>
Als het goed is krijg je nu een lijstje van 5 namen met in de url het id van de personen die het profiel als laatst hebben bezocht.
Als iemand nu op een profiel komt, heb je een simpele INSERT:
Edit
Even vergeten dat je geen UBB in codeblokken kan gebruiken...
Gewijzigd op 01/01/1970 01:00:00 door Willem Jan Z
Ik ben even met een voorbeeldje bezig...
Edit
Voorbeeld
Hier heb ik een voorbeeldje gemaakt. Je bent steeds 'ingelogd' met een random gebruiker. Dan wordt de tabel laatste geupdate om het lijstje van de andere profielen correct te maken.
Daarna haal ik de lijst van het op dit moment bezochte profiel (klik op een naam of verander de user_id in de URL om ander profiel te krijgen. (Heb in database maar 3 'leden' staan op dit moment)
Dan worden de linken gemaakt, met desbetreffende ID van de laatste bezoekers.
Gewijzigd op 01/01/1970 01:00:00 door Willem Jan Z
Is het al gelukt?
Nee nog niet, de server ligt er al nu 2 dagen uit, i.v.m een kapotte hardware dus kan nu nog ff nix beginnen.
gratis natuurlijk
pm me dan ff-tjes
Toch bedankt.
|\| () T |-| /-\ |\| ><