Scoutnet vzw

We connect scouts!
Het is momenteel 20 Apr 2024 5:20

Alle tijden zijn UTC + 1 uur




Plaats een nieuw onderwerp Reageren op dit onderwerp  [ 10 berichten ] 
Auteur Bericht
BerichtGeplaatst: 28 Aug 2008 18:58 
Offline
 
 

Geregistreerd: 17 Sep 2007 18:44
Berichten: 10
Woonplaats: --do not use--
Hey,

Hier is de situatie, ik heb verschillende leiding dit kan "posten" op de hoofdpagina. Ze kunnen ook hun eigen post editen/deleten.
Elke post heeft in de DB pindex,pleiding,pdate,ptext,...,...

Nu ik print af van de hoogste pindex (dus 't laats geposte) tot laten we zeggen 5 post onder hoogste pindex.

Code:
$sql="SELECT max(pindex) from post";
$max = mysql_fetch_row( mysql_query($sql), MYSQL_ASSOC );
for($i=$max[0];i>=$max-5;$i--)
{
     //de post afprinten met de nodige zever erbij.
}

Werkt perfect maar gaat een probleem worden bij als iemand 5 post maakt en ze allemaal verwijderd en dan nog eentje post. Zodat er men hoofdpagina dan slechts 1 post bevat.
Ik kan iets toevoegen als if( strcmp($db['ptext'],''){ i++;} Om er steeds 5 af te drukken.
Maar dan heb ik wel 4x nutteloze db query's gedaan wat niet het de manier is.

Dus kan iemand me een goede manier uitleggen?


Omhoog
 Profiel  
 
BerichtGeplaatst: 28 Aug 2008 20:14 
Offline
 
 
Gebruikers-avatar

Geregistreerd: 04 Jul 2002 23:00
Berichten: 501
Woonplaats: Reet
Als ik het goed begrijp zou je iets als volgt nodig hebben (uit de losse pols, dus niet getest)

Code:
<?php
// query om de 5 laatste post op te halen
$sql = "SELECT * FROM post ORDER BY pindex DESC LIMIT 0,5";

$result = mysql_query($sql);

// de resultset doorlopen, dit zullen er max 5 zijn omdat dit de 'limit' van de query was.
while($row = mysql_fetch_assoc($result)){
   //de post afprinten met de nodige zever erbij.
   print_r($row);
}
?>


Edit: Fouten in code aangepast.


Laatst gewijzigd door Geert82 op 29 Aug 2008 16:44, in totaal 1 keer gewijzigd.

Omhoog
 Profiel  
 
BerichtGeplaatst: 29 Aug 2008 9:29 
Offline
 
 
Gebruikers-avatar

Geregistreerd: 22 Mrt 2005 0:00
Berichten: 353
Geert82 schreef:
Als ik het goed begrijp zou je iets als volgt nodig hebben (uit de losse pols, dus niet getest)

Code:
<?php

// query om de 5 laatste post op te halen
$sql = "SELECT * FROM post ORDER BY pindex DESC LIMIT 0,5"; 

$result = mysql_fetch_assoc($sql);

// de array van resultaten doorlopen, dit zullen er max 5 zijn omdat dit de 'limit' van de query was. 
foreach($result as $row){
   //de post afprinten met de nodige zever erbij.
   print_r($row);
}
?>


inderdaad, ik dacht ook zoiets: query aanpassen en met LIMIT werken.


Omhoog
 Profiel  
 
BerichtGeplaatst: 29 Aug 2008 16:09 
Offline
 
 

Geregistreerd: 17 Sep 2007 18:44
Berichten: 10
Woonplaats: --do not use--
Oke nu heb ik het volgende.

Code:
$sql="SELECT * FROM leden WHERE ltak='".$functie."' ORDER BY 'ltak', 'ljaar'";
$db = mysql_fetch_assoc( mysql_query($sql) );
 
foreach($db as $row)
{            
   echo '<tr>';
   echo '<td>'.$row['lvoornaam'].'</td>';
   echo '<td>'.$row['lnaam'].'</td>';
   echo '<td>'.$row['lemail'].'</td>';
   echo '<td>'.$row['ltelefoon'].'</td>';
   echo '<td>'.$row['lstraat'].'</td>';
   echo '<td>'.$row['lgemeente'].'</td>';
   echo '<td>'.$row['ljaar'].'</td>';
   echo '</tr>';      
}

Probleem is dat dit niet werkt, ik krijg bezijnder vreemde resultaten terug.

Code:
2   2   2   2   2   2   2
d   d   d   d   d   d   d
q   q   q   q   q   q   q
k   k   k   k   k   k   k
2   2   2   2   2   2   2
q   q   q   q   q   q   q
s   s   s   s   s   s   s
q   q   q   q   q   q   q
q   q   q   q   q   q   q

De database query geeft het volgende terug:
Code:
mysql> SELECT * FROM leden WHERE ltak='kawelpen' ORDER BY 'ltak', 'ljaar';
+--------+-----------+----------+----------+-------+----------+-----------+----------------+---------------------------+
| lindex | lvoornaam | lnaam    | ltak     | ljaar | lemail   | ltelefoon | lstraat        | lgemeente                 |
+--------+-----------+----------+----------+-------+----------+-----------+----------------+---------------------------+
|      2 | dqfqsdf   | qsdfsqdf | kawelpen |     2 | qsdfqsdf | sqdf      | qdsfqsdf qdsf  | qsdfqdsf qdsfqdsf         |
|      3 | qdsfsqdf  | qsdfqdsf | kawelpen |     2 | qdsfqsdf | qdsfqsdf  | qdsfqdsfq qdsf | qsdfqdsfqsdf qdsfqdsfqdsf |
|      4 | qsdfqsdf  | qsdfqdsf | kawelpen |     3 | qsdf     | qsdfqsdf  | dsqfqs dfqsdf  | fds sfdqs                 |
+--------+-----------+----------+----------+-------+----------+-----------+----------------+---------------------------+
3 rows in set (0.00 sec)


Het probleem is dat ik op deze manier bijzonder vreemde resultaten krijg.
Ik zou dus graag voornaam telefoon etc er uit halen. Hoe kan ik dit doen?


Omhoog
 Profiel  
 
BerichtGeplaatst: 29 Aug 2008 16:50 
Offline
 
 
Gebruikers-avatar

Geregistreerd: 04 Jul 2002 23:00
Berichten: 501
Woonplaats: Reet
Ik had in mijn voorbeeld blijkbaar een serieus de mist ingegaan, is bij deze aangepast.

Jou code zou er dan als volgt uitzien:

Code:
    $sql="SELECT * FROM leden WHERE ltak='".$functie."' ORDER BY ltak, ljaar";
    $result = mysql_query($sql);

    while($row = mysql_fetch_assoc($result) )
    {           
       echo '<tr>';
       echo '<td>'.$row['lvoornaam'].'</td>';
       echo '<td>'.$row['lnaam'].'</td>';
       echo '<td>'.$row['lemail'].'</td>';
       echo '<td>'.$row['ltelefoon'].'</td>';
       echo '<td>'.$row['lstraat'].'</td>';
       echo '<td>'.$row['lgemeente'].'</td>';
       echo '<td>'.$row['ljaar'].'</td>';
       echo '</tr>';     
    }


De mysql_fetch_* functies moet je eigenlijk per record uit je resultset doen, en niet zoals ik eerder had aangegeven.


Omhoog
 Profiel  
 
BerichtGeplaatst: 29 Aug 2008 16:57 
Offline
 
 

Geregistreerd: 17 Sep 2007 18:44
Berichten: 10
Woonplaats: --do not use--
Toch nog een probleempje.

Om een of andere reden word er nu niet meer gesorteerd afgedrukt.
Het alsof ik niet order by heb staan in de query.


Omhoog
 Profiel  
 
BerichtGeplaatst: 30 Aug 2008 11:45 
Offline
 
 
Gebruikers-avatar

Geregistreerd: 04 Jul 2002 23:00
Berichten: 501
Woonplaats: Reet
In welke volgorde worden je resultaten dan weergegeven?
Aan je eerste voorbeeld te zien loopt de volgorde van lindex ook gelijk aan ljaar. Kan je misschien het resultaat nog eens posten?

Heb je mijn code overgenomen, of de jouwe aangepast? Misschien ook even je laatste versie code posten?


Omhoog
 Profiel  
 
BerichtGeplaatst: 31 Aug 2008 20:17 
Offline
 
 

Geregistreerd: 17 Sep 2007 18:44
Berichten: 10
Woonplaats: --do not use--
Code:
$sql="SELECT * FROM leden WHERE ltak='".$functie."' ORDER BY 'ljaar'";
 SELECT * FROM leden WHERE ltak='kawelpen' ORDER BY 'ljaar';


query direct invoeren in mysql geeft percies niet het gewenste resultaat?
Code:
mysql> SELECT * FROM leden WHERE ltak='kawelpen' ORDER BY 'ljaar';
+--------+-----------+----------+----------+-------+----------------------+--------------+----------------+---------------------------+
| lindex | lvoornaam | lnaam    | ltak     | ljaar | lemail               | ltelefoon    | lstraat        | lgemeente                 |
+--------+-----------+----------+----------+-------+----------------------+--------------+----------------+---------------------------+
|      2 | dqfqsdf   | qsdfsqdf | kawelpen |     2 | qsdfqsdf             | sqdf         | qdsfqsdf qdsf  | qsdfqdsf qdsfqdsf         |
|      3 | qdsfsqdf  | qsdfqdsf | kawelpen |     2 | qdsfqsdf             | qdsfqsdf     | qdsfqdsfq qdsf | qsdfqdsfqsdf qdsfqdsfqdsf |
|      4 | qsdfqsdf  | qsdfqdsf | kawelpen |     3 | qsdf                 | qsdfqsdf     | dsqfqs dfqsdf  | fds sfdqs                 |
|      5 | gfdsg     | dfsgsdfg | kawelpen |     1 | gfgazaz              | aza          | z az           | azaz azaz                 |
|      6 | gfdsg     | dfsgsdfg | kawelpen |     1 | gfgazaz              | aza          | z az           | azaz azaz                 |
|      7 | kevin     | Deckx    | kawelpen |     3 | xxxxx@xxxxxxxxxxx.be | 03/288.91.58 | beeksevelden 6 | 2550 Kontich              |
+--------+-----------+----------+----------+-------+----------------------+--------------+----------------+---------------------------+
6 rows in set (0.00 sec)


Omhoog
 Profiel  
 
BerichtGeplaatst: 31 Aug 2008 20:22 
Offline
 
 

Geregistreerd: 17 Sep 2007 18:44
Berichten: 10
Woonplaats: --do not use--
Miljaar zeg...
mysql is niet echt vergevend als het over '' gaat :roll:
Ik het dus zelf kunnen oplossen.


Omhoog
 Profiel  
 
BerichtGeplaatst: 01 Sep 2008 7:22 
Offline
 
 
Gebruikers-avatar

Geregistreerd: 22 Mrt 2005 0:00
Berichten: 353
Anon5710 schreef:
Miljaar zeg...
mysql is niet echt vergevend als het over '' gaat :roll:
Ik het dus zelf kunnen oplossen.

de quotes in uw ORDER BY lijken mij er te veel aan. Klopt dat?


Omhoog
 Profiel  
 
Berichten weergeven van de afgelopen:  Sorteer op  
Plaats een nieuw onderwerp Reageren op dit onderwerp  [ 10 berichten ] 

Alle tijden zijn UTC + 1 uur


Wie is er online?

Gebruikers in dit forum: Bing [Bot] en 11 gasten


U mag geen nieuwe onderwerpen plaatsen in dit forum
U mag geen reacties plaatsen op onderwerpen in dit forum
U mag uw berichten niet wijzigen in dit forum
U mag uw berichten niet verwijderen in dit forum
U mag geen bijlagen plaatsen in dit forum

Zoeken naar:
Ga naar:  
cron
Powered by phpBB® Forum Software © phpBB Group
Vertaald door phpBBservice.nl.