Versio

Mail

Overzicht Reageren

PHP Jasper

PHP Jasper

20/06/2010 13:54:21
Quote Anchor link
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?
 
PHP hulp

PHP hulp

25/05/2012 08:42:12
Gesponsorde koppelingen:
BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  
 
Erik Kraijenoord

Erik Kraijenoord

20/06/2010 13:59:47
Quote Anchor link
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 =
Gewijzigd op 20/06/2010 14:02:24 door Erik Kraijenoord
 
PHP Jasper

PHP Jasper

20/06/2010 15:24:26
Quote Anchor link
hoe zet ik die link?
 
Wim Eikelboom

Wim Eikelboom

20/06/2010 16:31:57
Quote Anchor link
Gebruik auto-increment in MySQL.
Daarop zeg je bij het uitlezen van je berichten in de foreach loop dus.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
foreach($row as $fetchRows) {
  //Doe er iets voor wat je wilt...
  echo "<a href='http://www.domein.nl/bericht/id/" . $row["id"] . ".html'>" . $row["onderwerp"] . "</a>";
}

?>
Gewijzigd op 20/06/2010 16:32:19 door Wim Eikelboom
 
PHP Jasper

PHP Jasper

20/06/2010 16:38:10
Quote Anchor link
zo lees ik nu mijn tabel uit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>";
?>


hoe zet ik dat er dan in?
 
Noppes Homeland

Noppes Homeland

20/06/2010 16:44:11
Quote Anchor link
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
 
Wim Eikelboom

Wim Eikelboom

20/06/2010 16:45:39
Quote Anchor link
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"]
 
Joren de Wit
Beheerder

Joren de Wit

20/06/2010 16:46:58
Quote Anchor link
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.

Edit:
Hmm, spuit 11 :-)
Gewijzigd op 20/06/2010 16:48:06 door Joren de Wit
 
PHP Jasper

PHP Jasper

20/06/2010 17:22:57
Quote Anchor link
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
Gewijzigd op 20/06/2010 17:32:09 door PHP Jasper
 
Joren de Wit
Beheerder

Joren de Wit

20/06/2010 18:42:31
Quote Anchor link
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...
 
PHP Jasper

PHP Jasper

20/06/2010 19:06:29
Quote Anchor link
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.
Gewijzigd op 20/06/2010 19:23:42 door PHP Jasper
 
Joren de Wit
Beheerder

Joren de Wit

20/06/2010 20:17:56
Quote Anchor link
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.
 
PHP Jasper

PHP Jasper

20/06/2010 20:29:03
Quote Anchor link
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?
 
Joren de Wit
Beheerder

Joren de Wit

20/06/2010 20:49:52
Quote Anchor link
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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
foreach($result as $record) {
  echo '<a href="bericht.php?id='.$record['id'].'">Link</a>';
}

?>


En neem dit nu niet letterlijk over, maar kijk wat het doet en kijk of het toepasbaar is in jouw situatie...
 
PHP Jasper

PHP Jasper

21/06/2010 16:48:32
Quote Anchor link
ik heb het anders gedaan:

code INBOX:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>";
?>


Code BERICHT:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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']));
?>


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 PHP Jasper
 
PHP Jasper

PHP Jasper

22/06/2010 20:57:06
Quote Anchor link
Het is gelukt! bedankt iedereen!
 



Overzicht Reageren