login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Forum (beginpagina forum.php)

Offline larssy1 - 22/02/2010 15:22
Avatar van larssy1MySQL beginner Hey mensen,

Om even terug te komen op dit topic:
http://www.site...ums,_welke

Zit ik nu hier met deze code. Hij functioneerd zover naar behoren, maar hebben jullie toevallig nog ideetjes om deze code op te schonen en te verbeteren??

Let nog even niet op de opmaak van het forum zelf, en hoe de code erin staat,, heb niet alles goed gecentreerd zodat het duidelijker af te lezen is.

http://plaatscode.be/138727/

Mvg
Lars

22 antwoorden

Gesponsorde links
Offline vinTage - 22/02/2010 15:47
Avatar van vinTage Nieuw lid al die html echoen is stom, het is onleesbaar, gedonder met escapen etc en er wordt onnodige serverload gebruikt (al is dat niet veel) maar waarom zou je php eerst laten echoen om daarna clientside nog een keer te laten renderen, dat gaat makkelijker in een keer.
Offline larssy1 - 22/02/2010 15:56
Avatar van larssy1 MySQL beginner 't is niet echt een eind product, snap je.. Het ging eigenlijk meer om die functies die hij kreeg/zou moeten hebben.
Offline vinTage - 22/02/2010 16:00
Avatar van vinTage Nieuw lid Als je "nutteloze" vragen gaat stellen, zorg dan op zn minst dat je bron materiaal degelijk is, dan krijg je daar geen commentaar op ook.
Offline larssy1 - 22/02/2010 16:02
Avatar van larssy1 MySQL beginner Ik heb 't ook over de functies.. maargoed..

Iemand die een mogelijkere kleinere oplossing heeft voor de 3whiles die ik gebruik??
Offline vinTage - 22/02/2010 16:05 (laatste wijziging 22/02/2010 16:10)
Avatar van vinTage Nieuw lid
larssy1 schreef:
Zit ik nu hier met deze code. Hij functioneerd zover naar behoren, maar hebben jullie toevallig nog ideetjes om deze code op te schonen en te verbeteren??


En een tip heb je nu al gekregen, er staat niets in over functies checken, maargoed..


tip 2, weet je zeker dat je echt ALLE velden nodig hebt in je selects?
waarom eigenlijk niet alles in een while ? <= never mind, door die brake code zag ik niet dat je daar meer querys deed 
Offline larssy1 - 22/02/2010 16:14 (laatste wijziging 22/02/2010 17:21)
Avatar van larssy1 MySQL beginner
vinTage schreef:
[..quote..]

En een tip heb je nu al gekregen, er staat niets in over functies checken, maargoed..


tip 2, weet je zeker dat je echt ALLE velden nodig hebt in je selects?
waarom eigenlijk niet alles in een while ? <= never mind, door die brake code zag ik niet dat je daar meer querys deed 

hehe ;) Ik zal eerst die echo's weghalen zoals je zei, =)

--------------
Is deze code overzichtelijker?? 
http://plaatscode.be/138728/

Plaatscode, verpest uitleining beetje,, maar goed..
Offline Milo - 22/02/2010 20:56
Avatar van Milo Nieuw lid Hey,

Die laatste code ziet er inderdaad al beter uit, je vergeet alleen nog wat checks...

Zo kijk je niet of:
- De query wel goed gegaan is
- Er wel items zijn
en is hij nog sql injection gevoelig.

en als ik dan toch bezig ben zou ik gelijk van de tabel afstappen en overgaan op div's en css  

Gr, Milo
Offline larssy1 - 23/02/2010 00:06
Avatar van larssy1 MySQL beginner Ja klopt, ging even om netheid maar is er een manier om die 3whiles korter te doen?? iets zegt mij dat dit mogelijk is,, maar ik zou geen idee hebben hoe..

En is een goed geordende forum wel geschikt om gebruik te maken van div??
Offline Milo - 23/02/2010 09:07 (laatste wijziging 23/02/2010 09:09)
Avatar van Milo Nieuw lid Die whiles korter doen geen idee, ik zie wel dat je 2x dezelfde uitvoert dit zou niet nodig hoeven zijn als je niet met tabellen werkt , al denk ik dat als je het nu goed opbouwt het ook niet hoeft maar goed.

Een forum netjes maken met div's waarom niet? een div tag is namelijk voor de lay-out welke lay-out het ook is hij is daarvoor, tabellen zijn uitsluiten en alleen voor gegevens die je moet weergeven in een tabel als afstand snelheid verhoudingen e.d.

Dus wat ik zeg is dit;
Trek al die tabel code ertussen uit zorg dan dat je php perfect is dus met:
- Query check
- Items check
- Sql injecten beveiliging

Dan je daarna eens verder kijken...

En hoe heb jij je database opgebouwd misschien dat we die ook nog even kunnen nakijken ;)

Edit:.
Ik zie trouwens ook dat je steeds dit doet:
$fnaam = $finfo['naam'];
$fid = $finfo['fid'];

In jou code zie ik hier niet echt het nut er van in, je gebruikt die var's immers 1 maal en het neemt nu dus alleen maar onnodige ruimte in. Gebruik ze gewoon rechtstreeks.
Offline larssy1 - 23/02/2010 10:05 (laatste wijziging 23/02/2010 12:23)
Avatar van larssy1 MySQL beginner
Milo schreef:
Die whiles korter doen geen idee, ik zie wel dat je 2x dezelfde uitvoert dit zou niet nodig hoeven zijn als je niet met tabellen werkt , al denk ik dat als je het nu goed opbouwt het ook niet hoeft maar goed.

Een forum netjes maken met div's waarom niet? een div tag is namelijk voor de lay-out welke lay-out het ook is hij is daarvoor, tabellen zijn uitsluiten en alleen voor gegevens die je moet weergeven in een tabel als afstand snelheid verhoudingen e.d.

Dus wat ik zeg is dit;
Trek al die tabel code ertussen uit zorg dan dat je php perfect is dus met:
- Query check
- Items check
- Sql injecten beveiliging

Dan je daarna eens verder kijken...

En hoe heb jij je database opgebouwd misschien dat we die ook nog even kunnen nakijken ;)

Edit:.
Ik zie trouwens ook dat je steeds dit doet:
$fnaam = $finfo['naam'];
$fid = $finfo['fid'];

In jou code zie ik hier niet echt het nut er van in, je gebruikt die var's immers 1 maal en het neemt nu dus alleen maar onnodige ruimte in. Gebruik ze gewoon rechtstreeks.

OK, ik zal eerst dit alles even toepassen. Dan kom ik hier later op terug mochten er weer problemen op doen.. Alvast bedankt =)

------------
Lol, ik zit met een lullig probleempje.. XD ik weet alleen niet of ik 't zal vrage >_>

't is namelijk t probleem met die subcategorien die op de landingspagina te zien zijn.
Hij drukt ze af, met als er meerdere zijn, daartussen een komma(,) maar op 't eind geen 1.

Nu was ik heir even meebezig.. maar nu is 't probleem.. Of hij laat alleen de laatste zien. Of allemaal met een komma dus ook de laatste..
Offline Milo - 25/02/2010 10:11
Avatar van Milo Nieuw lid Sorry maar ik denk nu echt dat jij een hele vreemde database hebt, zou je a.u.b even je database model kunnen laten zien...
Offline cyberninjah - 25/02/2010 10:43
Avatar van cyberninjah Lid uhmm nooit dat html echo is echt de grootste onzin in dit geval 
maar jah zal er niet verder op in gaan dat heeft Vintage al gedaan voor me.


en die 3 whiles kan niet korter aangezien je 3 verschillende lagen gebruikt

Ik neem aan dat je Database er zo ongeveer beetje uit ziet.

Forum
id | Name
1 | Forum 1

Cats
id | name | forumid
1 | Cat 1 | 1

Sub Cats

id | name | catid
1 | Sub cat | 1


Om all deze informatie op de pagina te zetten zie ik niet zo snel een andere manier dan 3 whiles te gebruiken.

en voor je probleem dat je de laatste ook met , krijgt

een simpele oplossing ( vast niet de beste )

Count alle items
Gooi ze in een loopje en tel een waarde op na elke item die je loopt en als de teller 1 lager is als het max getal zeg je gewoon geen , meer plaatsen.


Mischien dat je er wat aan heb
Offline Milo - 25/02/2010 10:49
Avatar van Milo Nieuw lid Ja dat dacht ik in 1e instantie ook maar omdat hij het nu over komma´s heeft e.d. met subcategorieën twijfel ik hieraan snap je?

Verder heb je echt wel wat meer nodig dan alleen die 3 

Gr,
Offline larssy1 - 25/02/2010 11:43 (laatste wijziging 25/02/2010 14:45)
Avatar van larssy1 MySQL beginner Database overzicht:
http://plaatscode.be/138742/

Om een iets duidelijker overzicht te geven, heb ik de DATA erin gelaten.

Over die kommas(,) betreft, ik had dit geprobeerd met een for loop.
Echter werd bij manier 1 de 1e niet weergegeven.
en bij manier 2 hadden ze gewoon allemaal een komma op 't eind.

Hierbij maakte ik gebruik van een mysql_num_rows variabel, en zolang het getal kleiner was dan dit getal dan kwam er een komma achter, en anders niks. Helaas ging dit dus fout, of ik gebruikte een verkeerde code.

Iemand die me hiermee een zetje in de goede richting kan geven? =)

-----------

EDIT; Komma(,) probleem opgelost

-----------
Iemand een idee hoe ik het beste kan kijken wat het laatste active topic was qua tijd in de database??

Volgorde is als volgt
-Forum
--Categorie
---Topic
----Reply

Hierbij is dan ook de uitleg, elke categorie heeft meerdere topics, en elk topic bestaat uit meerdere replies.
Nu moet ik dus van elk topic de laatste reply tijd weten, zodat ik ze hierop kan catagorieseren, en uiteindelijk in de eerste pagina zetten.

Hierbij maak ik gebruik van de volgende database structuur:
http://plaatscode.be/138743/
Offline cyberninjah - 25/02/2010 15:45
Avatar van cyberninjah Lid Je database stuctuur kan echt stuke beter waarom aparte id's mee geven als je al een id heb die auto nummering is etc ? als voorbeeld

Maar wat je gewoon moet doen is

Je loopt Alle forum's

while($forums = mysql_fetch_........

Je maakt hier een Tabel voor of een div met informatie over dat forum wat jij pretig vind werken.

Vervolgens in die Tabel ga je dan alle Categorien listen.

Dus maken we nog maals een while loop aan.

Dan hebben we een iets wat op het volgende lijkt.

Forum 1
- Categorie 1
- Categorie 2

Forum 2
- Categorie 3
- Categorie 4

Ik neem aan dat je zo iets wil berijken ???
Offline larssy1 - 25/02/2010 15:52 (laatste wijziging 26/02/2010 09:03)
Avatar van larssy1 MySQL beginner Zoiets heb ik al, ik heb zelfs al het volgende

Forum1
- Categorie
-- Subcategorie (Zoals bij vBulletin, PHPBB etc.)

voorbeeld:
http://img691.i...loosle.png

--------------------
Iemand al enig idee hoe ik dat zou kunnen oplossen met het laatste nieuws van alles, en van categorien??
Offline Milo - 26/02/2010 09:53 (laatste wijziging 26/02/2010 09:54)
Avatar van Milo Nieuw lid Dan zou je om het simpel te houden zo iets kunnen doen:

Forum
- id
- titel

Categorieën
- id
- frm_id
- titel
- last_topic_date

Topics
- id
- cat_id
- poster_id
- titel
- datum
- bericht
- last_reply_date

Replies
- id
- top_id
- poster_id
- datum
- bericht

Als je zo'n database structuur zou opbouwen zou wel een heel lekker forumpje kunnen maken, dit is dan denk ik nog niet op de beste manier dit zou volgens mij zijn met een heleboel gejoin tussen id's voor bijvoorbeeld de datum.
Het enige wat je nu moet doen is joinen naar de gebruikers tabel en bij iedere invoer een update query uitvoeren om je last_topic_date en last_reply_date even te updaten...

Hoop dat je hier iets mee kan

Gr, Milo
Offline larssy1 - 26/02/2010 10:08 (laatste wijziging 26/02/2010 10:09)
Avatar van larssy1 MySQL beginner Hmm, lijkt me te doen.. Ik heb trouwens hierover zitten denken afgelopen uurtjes, en ik zat ermee in mijn hoofd..

Wat als ik enkel een query doe hiervoor.

bijv:
  1. $qry_time_top = mysql_query("SELECT * FROM uxsf_topics WHERE id='1' ORDER BY top_id DESC LIMIT 0, 1")or die("*Error: ". mysql_error());
  2. $time_top = mysql_fetch_assoc($qry_time_top);
  3.  
  4. $latestnews = $time_top['top_name'];


Dit heb ik gedaan om 't laatste topic van het forum (Algemeen waarin nieuws etc staat) te kopieren op het beeldscherm.

Is dit mogelijk om hetzelfde te doen voor de andere maar dan per categorie?
Offline Milo - 26/02/2010 10:26
Avatar van Milo Nieuw lid Ja das mogelijk, maar bedenk je wel even dat je eigenlijk een nette foutafhandeling er op moet doen en niet or die(); en je script dan behoorlijk groeit, verder kosten query's tijd en als je veel forums zou hebben vertraagd dit behoorlijk volgens mij...
Offline larssy1 - 26/02/2010 10:35
Avatar van larssy1 MySQL beginner dus je raad het aan op een database interichten zoals joun tabel overzicht voor minder sql gebruik?

@offtopic:
Vacatures (vrijwillig) staan open: http://www.site...;item=1208
Offline Milo - 26/02/2010 11:43
Avatar van Milo Nieuw lid Ja dat raad ik aan zodat je minder moeilijk hoeft te doen... , tenzij je nog een behoorlijke tijd po sql joins wilt blokken?

Offtopic
Ik doe nog maar VMBO-T hoor, en ik ken enkel; html, php, mysql, css dus helaas ...
Offline larssy1 - 26/02/2010 12:52
Avatar van larssy1 MySQL beginner zolang je er genoeg van af weet 
Leeftijd of opleiding maakt me niks uit ;) Denkniveau wilt niet zeggen dat je dat niveau van school moet hebben >.< XD

Maja, als je wilt, kun je misschien wel bij 't team (alleen ik) Als je interesse hebt, laat 't me even weten via PB ;)
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.189s