Beste,
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?
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?
Ik zou dit op id-nummer doen:
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 =
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?
Gebruik auto-increment in MySQL.
Daarop zeg je bij het uitlezen van je berichten in de foreach loop dus.
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
zo lees ik nu mijn tabel uit:
hoe zet ik dat er dan in?
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?
1. backticks horen niet thuis in SQL
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
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
Dus moet je even kijken wat je als link wil hebben (of apparte knop)
en deze de bovenstaande link meegeven, alleen dan met $record->id ipv $row["id"]
en deze de bovenstaande link meegeven, alleen dan met $record->id ipv $row["id"]
Jasper, je mag zelf natuurlijk ook wel wat proberen. Wim geeft je een voorzetje van hoe je de link kunt opbouwen, dat kun je zelf verder uitbreiden.
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.
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
dit topic is toch bedoeld voor BEGINNENDE phpers ik ben helemaal nog niet lang bezig.
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
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...
de echte basis ken ik al ook hoe je die foreach loop gebruikt maar niet hoe ik dit combineer met mijn sql
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.
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
Een foreach loop gebruik je om een array uit te lezen. Als de resultaten van je query nog niet in een array staan, maar bijvoorbeeld in een resultaatset die nog gefetcht moet worden, is dat dus niet de beste manier. Dan kun je beter een while loop gebruiken waarin je een mysql_fetch_* functie aanroept...
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.
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?
Een array $result? Dan heb je dus de resultaten uit je database al gefetcht en in een array gestopt? Prima, dan kun je een foreach loop gebruiken.
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:
En neem dit nu niet letterlijk over, maar kijk wat het doet en kijk of het toepasbaar is in jouw situatie...
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...
ik heb het anders gedaan:
code INBOX:
Code BERICHT:
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.
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!




