Tabellen Koppelen
Ik heb geen idee hoe ik dit voor elkaar krijg zouden jullie aub willen helpen?
CREATE TABLE users(
P_ID int(8) not null auto_increment,
naam varchar(255) not null,
gebruikersnaam varchar(255) not null,
wachtwoord varchar(255) not null,
status tinyint(1),
PRIMARY KEY (P_ID)
)
CREATE TABLE berichten(
B_ID int(8) not null auto_increment,
onderwerp varchar(255) not null,
bericht text not null,
PRIMARY KEY (B_ID)
)
Mijn vraag is dus een gebruiker (P_ID) verstuurt een bericht (B_ID) hoe kan een gebruiker bij verzonden berichten zien dat zijn P_ID zijn B_ID's ziet?
Alvast bedankt.
Ik snap de query maar het is niet helemaal wat ik zoek denk ik als iemand zich registreerd krijgt hij/zij een id als iemand 5 berichten (5 id's) verstuurd moet hij deze ophalen op deze manier werkt dat toch niet?
Anders ziet straks gebruikerA ook alle berichten van gebruikerB etc. etc.
@(verwijderd), wanneer je iets (maakt niet uit wat) uit een database wilt ophalen dat gekoppeld is aan een ID, zul je alleen dat willen ophalen wat gekoppeld is aan het ID dan je wilt hebben. (tot zover jouw vraag)
maar een database weet niet blind welke gebruiker ingelogd is en welke niet. dat zul je hem dus moeten vertellen, doormiddel van een WHERE - clause. zie bovenstaande query van Q S, al is deze beter:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
$sql =
"SELECT
B_ID,
message etc
FROM
berichten
WHERE
P_ID = " . $pIDvanGebruiker;
?>
$sql =
"SELECT
B_ID,
message etc
FROM
berichten
WHERE
P_ID = " . $pIDvanGebruiker;
?>
(waarom is deze beter? SQL commando's in hoofdletters, niet selecteren met asterix (*), niet onnodig strings plakken, netjes geindenteerd.)
$pIDvanGebruiker is dus het ID van de persoon die net ingelogd is. je zult dus bij het inloggen moeten zorgen dat het ID bekend wordt, zodat je die kunt doorgeven.
Gewijzigd op 25/10/2014 14:48:16 door Bas IJzelendoorn
@erwin mijn code zit er anders uit maar is eigenlijk hetzelfde idee.
en voor de query gebruik je dan dit:
Oke bedankt ik snap hem alleen de database nog niet precies als ik P_ID invoeg bij berichten tabel weet hij toch niet dat P_ID gekoppeld is P_ID van users?
(verwijderd) op 26/04/2012 18:16:06:
@erwin mijn code zit er anders uit maar is eigenlijk hetzelfde idee.
Leg eens uit? Hoe maak je de link dan tussen zender, ontvanger en bericht?
Gewijzigd op 25/10/2014 14:48:39 door Bas IJzelendoorn
als je van de INNODB engine gebruikmaakt zou het kunnen, maar het is helemaal niet nodig. die database haalt alleen op wat je tegen hem zegt. als je tegen hem zegt van haal alle berichten op met P_ID = 3 haalt hij alle berichten op met P_ID = 3. kan hem het wat verrekken wat de inhoud nou precies betekent
@jeroen ik snap t bedankt
Inmiddels heb je dat overigens wel door geloof ik (door p_ID erbij in te voegen), maar om deze discussie af te ronden is het denk ik goed om het gewoon even te melden ;-)
Ik dacht dat ik het snap maar nu ik het in de code druk lukt t niet. hier ff 2 gedeeltes van scriptjes
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
// sessies opslaan bij het inloggen
$_SESSION['gebruikersnaam'] = ($_POST['gebruikersnaam']);
$_SESSION['status2'] = ($_POST['status'] == 0);
$_SESSION['userId'] = ($_POST['P_ID']); //Deze gegevens haal ik uit de users tabel
header('Location: gebruikerspagina.php');
?>
// sessies opslaan bij het inloggen
$_SESSION['gebruikersnaam'] = ($_POST['gebruikersnaam']);
$_SESSION['status2'] = ($_POST['status'] == 0);
$_SESSION['userId'] = ($_POST['P_ID']); //Deze gegevens haal ik uit de users tabel
header('Location: gebruikerspagina.php');
?>
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
<?php
//berichten ophalen
$sql =
"SELECT
*
FROM
berichten
WHERE
P_ID = " . $_SESSION['userId'];
$result = mysql_query($sql);
//Wat moet hier verder gebeuren ik kom dr niet uit.
Bump
//berichten ophalen
$sql =
"SELECT
*
FROM
berichten
WHERE
P_ID = " . $_SESSION['userId'];
$result = mysql_query($sql);
//Wat moet hier verder gebeuren ik kom dr niet uit.
Bump
verder moet je bij het aanmaken van een tabel de INNODB engine selecteren, hij staat standaard op MyISAM (bij phpmyadmin)
Jeroen vd op 29/04/2012 12:35:38:
verder moet je bij het aanmaken van een tabel de INNODB engine selecteren, hij staat standaard op MyISAM (bij phpmyadmin)
verder moet je bij het aanmaken van een tabel de INNODB engine selecteren, hij staat standaard op MyISAM (bij phpmyadmin)
Waarom MOET dat?
Dat moet niet, dat wil die. Wil je het, dan moet je tijdens het aanmaken doen
Sorry, dat had ik niet gezien.
Met die berichten ophalen het werkt gewoon niet wat doe ik dan precies fout?
Heb je in het script waar je sessie vars ophaalt ook session_start gebruikt?
Jazeker