Voor een script sla ik 20 gebruikersnamen op in een database m.b.v serialize en unserialize deze informatie haal ik dan weer op door deze in arrays te zetten en zo weer te geven op mijn site.
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.
Ik snap je vraag niet helemaal. Wil je nu een relatie leggen tussen user_id en gebruikers naam? Dit lijkt mij niet helemaal de bedoeling.
De gangbare manier is om een tabel te maken met gebruikers.
Bijvoorbeeld een tabel "users"
met deze kolommen:
- user_id (auto_increment)
- name
- age
- email
- password
"user_id" kun je dan gebruiken in andere tabellen om een ralatie met een gebruiker aan te geven.
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.
SELECT
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.
$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>
";
}
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
SELECT
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.
Ik denk dat je me nog niet helemaal goed begrijpt.
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.
<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...
<?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>';
}
}
}
?>
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:
INSERT INTO laatste (".$aanwezig_lid_id.",NOW())
Edit
Even vergeten dat je geen UBB in codeblokken kan gebruiken...
Ho, ik ben een ding vergeten. In de tabel laats moet uiteraard wel aangegeven worden welke profiel hij bezocht heeft :)
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.