Ik heb een mailsysteem gemaakt op mijn site (alles werkt goed)
Maar nu wil ik in de inbox de berichten niet allemaal onder elkaar weergeven maar enkel de naam en het onderwerp. Als je daardan op klikt opent het volledige berichtje.
Iemand een idee hoe ik daar best aan begin?
Ik dacht dus eerst gewoon het onderwerp en de naam op te roepen en dat dan in een link te steken als je daardan op klikt alles weergeven door de where te gebruiken (where naam="naam" and onderwerp="onderwerp")
Hoe begin ik daaraan?
http://www.domein.nl/bericht/id/48.html
http://www.domein.nl/bericht.php?id=48
Als je daar dan op klikt het volledige bericht weergeven.
Dan krijg je iets als:
FROM berichten WHERE id =
Gewijzigd op 20/06/2010 14:02:24 door Erik Kraijenoord
hoe zet ik die link?
Daarop zeg je bij het uitlezen van je berichten in de foreach loop dus.
Code (php)
Gewijzigd op 20/06/2010 16:32:19 door Wim E
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
echo "berichten:";
$query = "SELECT * FROM `internemail` where voor='".$_SESSION['gebruiker']."'";
//query is aangemaakt
$sql = mysql_query($query) or die ( mysql_error( ) );
//query is uitgevoerd
echo"<table border=1>";
while($record = mysql_fetch_object($sql)){
echo"<tr><td>Van:</td><td>".$record->van."</td></tr>
<tr><td>Onderwerp:</td><td>".$record->onderwerp."</td></tr>
<tr><td>Bericht:</td><td>".$record->bericht."</td></tr>";
}
echo"</table>";
?>
echo "berichten:";
$query = "SELECT * FROM `internemail` where voor='".$_SESSION['gebruiker']."'";
//query is aangemaakt
$sql = mysql_query($query) or die ( mysql_error( ) );
//query is uitgevoerd
echo"<table border=1>";
while($record = mysql_fetch_object($sql)){
echo"<tr><td>Van:</td><td>".$record->van."</td></tr>
<tr><td>Onderwerp:</td><td>".$record->onderwerp."</td></tr>
<tr><td>Bericht:</td><td>".$record->bericht."</td></tr>";
}
echo"</table>";
?>
hoe zet ik dat er dan in?
2. SQL Injectie ligt op de loer
3. _fetch_object heeft geen toegevoegde waarde dus gebruik de meest geoptimaliseerde fetch: _fetch_assoc
4. quote je string met enkele quotes
5. codeer overzichtelijk
6. or die() is iets wat je absoluut niet in je code moet toepassen, pas fatsoenlijke foutafhandeling toe
7. je html is ook niet valid -> attribuutwaarden dien je ook te quoten en bij voorkeur met ""
"hoe zet ik dat er dan in?"
-> een zeer onzinnige vraag, jet hebt het zelf nog geen eens geprobeerd
en deze de bovenstaande link meegeven, alleen dan met $record->id ipv $row["id"]
Het komt erop neer dat je bijvoorbeeld het onderwerp een link moet maken (met behulp van <a href="...">) en in de url van die link het id van het betreffende bericht op moet nemen. Hoe je url er verder uit komt te zien, hangt er helemaal vanaf hoe jouw applicatie in elkaar zit. Maar je zult in ieder geval moeten verwijzen naar de pagina waar je het bericht gaat tonen.
Edit:
Hmm, spuit 11 :-)
Gewijzigd op 20/06/2010 16:48:06 door Joren de Wit
maar ik zal is een tut zoeken voor foreach loops want dat snap ik niet zo.
EDIT: als ik die foreach loop dus aanpas moet ik zo iets maken:
foreach($record as $fetchRows) {
echo "<a href='http://www.members.multimania.nl/jappe9/inbox/id/" . $row["id"] . ".html'>" . $row["onderwerp"] . "</a>";
}
$record is mijn sql mijn link word dan http://www.members.multimania.nl/jappe9/inbox/id/ en wat is $fetchrows, dat kan ik niet goed vinden
Gewijzigd op 20/06/2010 17:32:09 door Jasper DS
Jasper jasper op 20/06/2010 17:22:57:
dit topic is toch bedoeld voor BEGINNENDE phpers ik ben helemaal nog niet lang bezig.
Dat is het zeker. Maar dat betekent nog niet dat we alles maar voor moeten kauwen en dat je zelf niets uit hoeft te zoeken of te proberen.
PHP Beginnershandleiding
Lees als beginner deze handleiding eens door. Daarin vind je de basis van PHP en bijvoorbeeld dus ook hoe een foreach loop werkt...
edit: zijn jullie zeker dat die foreach loop de beste manier is? Het lijkt mij zo raar om het zo te doen ik kan het niet vinden.
Gewijzigd op 20/06/2010 19:23:42 door Jasper DS
Het kan prima met de code zoals jij die oorspronkelijk had, je zult nu alleen nog de link moeten echoën binnen je while loop. En zoals gezegd moet je zorgen dat je in de url van die link het id van het betreffende bericht stopt.
mijn array is $result zoals je kan zien in mijn vorig bericht maar ik loop vast aan die url bestaat die al of maak ik die?
En wat betreft die url, die moet jij natuurlijk zelf maken. Je zult moeten verwijzen naar de pagina waarmee het bericht weergegeven wordt en het id als GET variabele meegeven. Dus iets als 'bericht.php?id=1' bijvoorbeeld. Er vanuit gaande dat $result een array is waar alle opgehaalde records in zitten zou dat dan zoiets worden:
Code (php)
En neem dit nu niet letterlijk over, maar kijk wat het doet en kijk of het toepasbaar is in jouw situatie...
code INBOX:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?php
echo "berichten:";
$query = "SELECT * FROM internemail where voor='".$_SESSION['gebruiker']."'";
//query is aangemaakt
$sql = mysql_query($query) or die ( mysql_error( ) );
//query is uitgevoerd
echo"<table border=1>";
while($record = mysql_fetch_array($sql) and $result = mysql_fetch_object($sql)){
$link = '<a href="bericht.php">'.$record['onderwerp'] .'</a>';
echo "<tr><td>".$result->van."</td><td>".$link."</td></tr>";
}
echo"</table>";
?>
echo "berichten:";
$query = "SELECT * FROM internemail where voor='".$_SESSION['gebruiker']."'";
//query is aangemaakt
$sql = mysql_query($query) or die ( mysql_error( ) );
//query is uitgevoerd
echo"<table border=1>";
while($record = mysql_fetch_array($sql) and $result = mysql_fetch_object($sql)){
$link = '<a href="bericht.php">'.$record['onderwerp'] .'</a>';
echo "<tr><td>".$result->van."</td><td>".$link."</td></tr>";
}
echo"</table>";
?>
Code BERICHT:
Code (php)
1
2
3
2
3
<?php
sprintf('SELECT * FROM internemail WHERE id=%d AND (voor="%2$s" OR van="%2$s")', $id, mysql_real_escape_string($_SESSION['gebruiker']));
?>
sprintf('SELECT * FROM internemail WHERE id=%d AND (voor="%2$s" OR van="%2$s")', $id, mysql_real_escape_string($_SESSION['gebruiker']));
?>
wat is er nu nog fout:
- er word maar 1 bericht weergeven in inbox en niet allemaal.
- Als ik op onderwerp klik opent bericht maar alleen lay-out, menu etc. opent maar niet het menu
Vragen:
met wat voor iets zorg ik dat bericht opent op pagina bericht en hoe weergeef ik alle berichten onder elkaar in inbox.
Gewijzigd op 21/06/2010 21:50:56 door Jasper DS
Het is gelukt! bedankt iedereen!