Newsberichten
Ik ben vrij nieuw in PHP, en moet voor school een project maken voor een bestaande klant. Ik moet de home.php maken, en news.php. Op home was het de bedoeling om de laatste 5 nieuwsberichten te weergeven. Dit is keurig gelukt, maar de news pagina moeten dus 10 berichten getoond worden + onderaan zo'n next 10 results linkje of knopje.
Ik heb zitten denken, en heb wat tips gehad van een klasgenoot met meer ervaring. Maar aangezien het nu vakantie is en niet op school ben kan ik het net zo goed hier vragen. Onderaan zal ik wel plaatsen wat ik tot nu toe heb.
Code verwijderd zie TS 2e post.[/modedit]
Gewijzigd op 10/01/2012 20:06:36 door Bas IJzelendoorn
Plaats aub alleen relevante code, en plaats deze tussen code-tags.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<?php
//Maak verbinding met de database, als de verbinding mislukt, produceer foutbericht.
$link = mysql_connect("******","*********","********");
mysql_select_db('********',$link);
if (! $link)
{
die(mysql_error());
}
//Haal gebruikersnamen twitter en FB op
$result2 = mysql_query("SELECT * FROM AlgemeneInstellingen") or die(mysql_error());
$row = mysql_fetch_array($result2);
$TwitterUsername=$row['TwitterGebruikersnaam'];
$Facebooklink=$row['Facebookaccount'];
//check of er ?Start=1 of zoiets in de link staat
if(!isset($_GET['Start']) || empty($_GET['Start'])){
//Staat er niet in, dus beginnen met 1
$Start = 1;
}
else{
//Staat er wel in (er staat ?Start=11 of ?Start=21 etc)
$Start = $_GET['Start'];
}
//De SQL die je gaat uitvoeren is nu bijvoorbeeld LIMIT 1,10 of 11,20 of 21,30, etc
//De datum moet anders worden weergegeven (DD-MM-YYYY).
$result = mysql_query("SELECT Titel, DATE_FORMAT(Nieuwsberichten.DatumGeplaatst, '%d-%m-%Y') AS Datum, Tekst FROM Nieuwsberichten ORDER BY DatumGeplaatst DESC LIMIT \".$Start.\", \".$Start+9\"") or die(mysql_error());
while($nt = mysql_fetch_assoc($result))
{
echo "<tr><td>".$nt['Titel']."</td>";
echo "<td>".$nt['Datum']."</td></tr>";
echo "<tr><td colspan=\"2\">".$nt['Tekst']."</td></tr>";
echo "<tr><td> </td></tr>";
}
?>
//Maak verbinding met de database, als de verbinding mislukt, produceer foutbericht.
$link = mysql_connect("******","*********","********");
mysql_select_db('********',$link);
if (! $link)
{
die(mysql_error());
}
//Haal gebruikersnamen twitter en FB op
$result2 = mysql_query("SELECT * FROM AlgemeneInstellingen") or die(mysql_error());
$row = mysql_fetch_array($result2);
$TwitterUsername=$row['TwitterGebruikersnaam'];
$Facebooklink=$row['Facebookaccount'];
//check of er ?Start=1 of zoiets in de link staat
if(!isset($_GET['Start']) || empty($_GET['Start'])){
//Staat er niet in, dus beginnen met 1
$Start = 1;
}
else{
//Staat er wel in (er staat ?Start=11 of ?Start=21 etc)
$Start = $_GET['Start'];
}
//De SQL die je gaat uitvoeren is nu bijvoorbeeld LIMIT 1,10 of 11,20 of 21,30, etc
//De datum moet anders worden weergegeven (DD-MM-YYYY).
$result = mysql_query("SELECT Titel, DATE_FORMAT(Nieuwsberichten.DatumGeplaatst, '%d-%m-%Y') AS Datum, Tekst FROM Nieuwsberichten ORDER BY DatumGeplaatst DESC LIMIT \".$Start.\", \".$Start+9\"") or die(mysql_error());
while($nt = mysql_fetch_assoc($result))
{
echo "<tr><td>".$nt['Titel']."</td>";
echo "<td>".$nt['Datum']."</td></tr>";
echo "<tr><td colspan=\"2\">".$nt['Tekst']."</td></tr>";
echo "<tr><td> </td></tr>";
}
?>
En dan moet je na het ophalen van de query moet je in de while 10x of minder laten printen (echo).
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
while($nt = mysql_fetch_assoc($result))
{
for($i = 0; $i <= 10; $i++)
{
echo "<tr><td>".$nt['Titel']."</td>";
echo "<td>".$nt['Datum']."</td></tr>";
echo "<tr><td colspan=\"2\">".$nt['Tekst']."</td></tr>";
echo "<tr><td> </td></tr>";
}
}
{
for($i = 0; $i <= 10; $i++)
{
echo "<tr><td>".$nt['Titel']."</td>";
echo "<td>".$nt['Datum']."</td></tr>";
echo "<tr><td colspan=\"2\">".$nt['Tekst']."</td></tr>";
echo "<tr><td> </td></tr>";
}
}
er zijn beter oplossingen maar als je snel een oplossing zoekt zou ik het zo doen.
Gewijzigd op 28/12/2011 03:34:19 door Lendl Verschoor
Zoek anders eens op pagination.
Dit is wat ik zo ver heb.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php
//Maak verbinding met de database, als de verbinding mislukt, produceer foutbericht.
$link = mysql_connect("XXXXXXX","XXXXXXXX","XXXXXXXXXX");
mysql_select_db('XXXXXXX',$link);
if (! $link)
{
die(mysql_error());
}
if(isset($_GET['NieuwsberichtID'])){
$NieuwsberichtID = $_GET['NieuwsberichtID'];
}
$result = mysql_query("SELECT * FROM Nieuwsberichten WHERE NieuwsberichtID ='".$_GET['NieuwsberichtID']."'" ) or die(mysql_error());
$row = mysql_fetch_array($result);
if($_SESSION['admin']==1){
?>
<form method="GET" action="news.php">
Titel: <br />
<input type="text" value="<?php $row['Titel'] ?>" />
<br />
Tekst: <br />
<TEXTAREA value="<?php $row['Tekst'] ?>"></TEXTAREA>
<br />
<input type="submit" name="opslaan" value="Opslaan" />
<?php
}
?>
</form>
<body>
</body>
</html>
//Maak verbinding met de database, als de verbinding mislukt, produceer foutbericht.
$link = mysql_connect("XXXXXXX","XXXXXXXX","XXXXXXXXXX");
mysql_select_db('XXXXXXX',$link);
if (! $link)
{
die(mysql_error());
}
if(isset($_GET['NieuwsberichtID'])){
$NieuwsberichtID = $_GET['NieuwsberichtID'];
}
$result = mysql_query("SELECT * FROM Nieuwsberichten WHERE NieuwsberichtID ='".$_GET['NieuwsberichtID']."'" ) or die(mysql_error());
$row = mysql_fetch_array($result);
if($_SESSION['admin']==1){
?>
<form method="GET" action="news.php">
Titel: <br />
<input type="text" value="<?php $row['Titel'] ?>" />
<br />
Tekst: <br />
<TEXTAREA value="<?php $row['Tekst'] ?>"></TEXTAREA>
<br />
<input type="submit" name="opslaan" value="Opslaan" />
<?php
}
?>
</form>
<body>
</body>
</html>
Code tags toegevoegd[/modedit]
Gewijzigd op 10/01/2012 20:05:49 door Bas IJzelendoorn
David, wil je in je beginpost alleen relevante code tonen? Dat scheelt een hoop scrollen.
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
$query = mysql_query("SELECT * FROM iets");
if(!$query) {
echo "Query mislukt.";
} else {
# doe iets met je query
echo "Gelukt!";
}
?>
$query = mysql_query("SELECT * FROM iets");
if(!$query) {
echo "Query mislukt.";
} else {
# doe iets met je query
echo "Gelukt!";
}
?>
Verder is je Sql query meerdere malen niet helemaal goed:
Code (php)
1
2
3
2
3
<?php
mysql_query("SELECT Titel, DATE_FORMAT(Nieuwsberichten.DatumGeplaatst, '%d-%m-%Y') AS Datum, Tekst FROM Nieuwsberichten ORDER BY DatumGeplaatst DESC LIMIT \".$Start.\", \".$Start+9\"");
?>
mysql_query("SELECT Titel, DATE_FORMAT(Nieuwsberichten.DatumGeplaatst, '%d-%m-%Y') AS Datum, Tekst FROM Nieuwsberichten ORDER BY DatumGeplaatst DESC LIMIT \".$Start.\", \".$Start+9\"");
?>
wordt
Code (php)
1
2
3
2
3
<?php
$result = mysql_query("SELECT Titel, DATE_FORMAT(Nieuwsberichten.DatumGeplaatst, '%d-%m-%Y') AS Datum, Tekst FROM Nieuwsberichten ORDER BY DatumGeplaatst DESC LIMIT ".$Start.", ".$Start+9."");
?>
$result = mysql_query("SELECT Titel, DATE_FORMAT(Nieuwsberichten.DatumGeplaatst, '%d-%m-%Y') AS Datum, Tekst FROM Nieuwsberichten ORDER BY DatumGeplaatst DESC LIMIT ".$Start.", ".$Start+9."");
?>
Succes! ;-)
excuses nogmaals
@Jens
Dankje, daar was ik al uitgekomen, nu zit ik met een ander probleem.
Ik moet nu if($_SESSION['admin']==1)
twee knoppen genereren bij elk bericht. Een verwijder knop, en een wijzig knop. De wijzig knop laat ik verwijzen naar een andere pagina waarop je de tekst en de titel kan wijzigen. Wat ik heb (zie mijn vorige bericht klein stukje omhoog) werkt niet helemaal, want hij laat de textarea en knop etc wel zien als je admin==1 maar de tekst word niet meegenomen naar de volgende pagina.
:(
David, mijn vraag is eigenlijk: Wil je je beginpost aanpassen?
Er staat geen wijzig knop bij. Bij mijn andere berichten wel.
David Sediq op 10/01/2012 18:16:43:
Er staat geen wijzig knop bij. Bij mijn andere berichten wel.
Dat kan maar een bepaald aantal dagen.
Maar kan iemand mij misschien helpen? Loop er de hele tijd mee te knooien maar het wil niet echt.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
session_start();
// hier ergens je query om je gegevens op te halen
if(isset($_SESSION['admin'])){
if($_SESSION['admin']==1){
echo '
<form action="news.php" method="POST">
<input type="title" value="'.$row['title'].'"/><br/>
<textarea id="text">'.$row['text'].'</textarea>
<input type="submit"/>
</form>
';
}
else{
//sessie admin bestaat maar geen goede waarde
}
}
else{
//admin niet ingelogt, sessie bestaat niet
}
?>
session_start();
// hier ergens je query om je gegevens op te halen
if(isset($_SESSION['admin'])){
if($_SESSION['admin']==1){
echo '
<form action="news.php" method="POST">
<input type="title" value="'.$row['title'].'"/><br/>
<textarea id="text">'.$row['text'].'</textarea>
<input type="submit"/>
</form>
';
}
else{
//sessie admin bestaat maar geen goede waarde
}
}
else{
//admin niet ingelogt, sessie bestaat niet
}
?>
Gewijzigd op 10/01/2012 19:12:16 door gerhard l
code] [/code] tags gebruiken. Ze zijn nu allemaal toegevoegd.[/modedit]
Back to topic.
Graag in het vervolg bij code, [Back to topic.
Gewijzigd op 10/01/2012 20:09:57 door Bas IJzelendoorn
@Gerhard
Uhm, dit wil ook niet, is mijn query wel goed eigenlijk?
David Sediq op 10/01/2012 17:58:37:
Wat ik heb (zie mijn vorige bericht klein stukje omhoog) werkt niet helemaal, want hij laat de textarea en knop etc wel zien als je admin==1 maar de tekst word niet meegenomen naar de volgende pagina.
:(
:(
En wat staat er op die volgende pagina aan code dan?
Waarom gebruik je GET bij het formulier?
Uhm, ik weet niet, gewend zo te doen denk ik? Kan ik beter POST gebruiken dan? Zoja waarom eigenlijk?
Toevoeging op 11/01/2012 15:41:25:
Ik ben nu zo ver dat de bewerkpagina het doet, en ook alleen maar als je admin==1 bent. Alleen neemt ie in de URL niet de NieuwsberichtID mee. Er staat alleen NieuwsberichtID= maar als je handmatig iets inzet doet alles prima, ook als je op opslaan drukt.
Enig idee iemand waar mijn fout ligt.
En nog een vraagje. Heb ik dit goed geschreven?
mysql_query("INSERT INTO Nieuwsberichten
(Titel, DatumGeplaatst, Tekst) VALUES
('".$_POST['nTitel']."',
'".$_POST['nDatumGeplaatst']."',
'".$_POST['nTekst']."'
Toevoeging op 11/01/2012 16:32:33:
Laat maar zitten. Ik heb het inmiddels opgelost. Ben jullie allemaal dankbaar, en mocht iemand dit nodig hebben zal ik het wel doorsturen.
Nogmaals bedankt, en een fijne dag! :D