[php] select query

Pagina: 1
Acties:

  • Mior
  • Registratie: Maart 2000
  • Laatst online: 20:58
hallo..

ik heb een vraagje over php, ik heb een database(forum), met een tabel(forum) een een row(reply) die bijhoud welke positie die data heeft binnen het forum.

zo ziet mijn table er dus uit:
code:
1
2
3
4
5
6
id     nick     msg      replyto        date
1      bla      bla      0              3-1-01
2      ble      ble      1              3-1-01
3      ble      ble      2              3-1-01
4      ble      ble      1              3-1-01
5      ble      ble      0              3-1-01

0 zijn dus hoofd threads (topics) en 1, 2, etc zijn replys (1 = reply, 2 = reply op de 1ste reply, etc)

nu wil ik dus het aantal replys tellen, wordt dus een select query, maar hoe zorg ik ervoor dat alleen van de 1ste 0 tot de volgende wordt geteld ? (de 0 posts zelf dus niet); dus bij dit voorbeeld id 2, 3 en 4.

als er meer info nodig is zeg het maar.

edit:
owja, de script taal waar alles in moet gebeuren = php

[edit2] en, de query moet elke keer bij een hoofdthread herhaald worden, dus bij elk topic het aantal replys op dat topic vissen.[/edit2]

  • bartvb
  • Registratie: Oktober 1999
  • Laatst online: 05-01 14:41
Eeeeh, en waar ga je bijhouden wat de subject is en of je topic gelocked is?

  • TheMrH
  • Registratie: April 2000
  • Laatst online: 17-02 18:24
Wat je doet is zowieso onlogisch: je kan uit jouw tabel nooit de replies halen die op een post hebben gereageerd; dit houd je niet bij!
Als er bv iemand een aantal dagen na de start van een thread post, en er zijn al meerdere andere threads gestart, kan je niet meer achterhalen wat bij welke thread hoort (iig niet als je meerdere threads tegelijk wilt hebben lopen natuurlijk).
De volgorde in de database is dus niet sequentieel, dus de id's zijn ook niet perse opvolgend. Je moet dus tevens de threadid opslaan in het record. Dan is de query ook easy:
code:
1
2
3
4
5
select count(*)
from forum
where forumID=$forumid
and threadID=$threadid
and not replyto=0

The box said 'requires Windows 95 or better', so I installed Linux...


  • Mior
  • Registratie: Maart 2000
  • Laatst online: 20:58
uh, dat kan wel..

ik heb n.l. 2 id's 1 replyid en een 'normaal' id..

maar het is al opgelost, hier is de 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
43
44
45
46
47
48
49
<?
&amp;lt;?
function PrintChildren($parent, $imgs_code = 0) {
global $db;
$CODE_LINE = 1;
$CODE_EMPTY = 2;
$CODE_ROOT_SPLIT = 3;
$CODE_ROOT_END = 4;

$sql = "SELECT id, naam, titel, datum FROM forum WHERE 
replyto='$parent' ORDER BY id ASC";
$result = mysql_query($sql) or die(mysql_error());
$childcount = mysql_num_rows($result);
if ($childcount) {
$count = 1;
$imgs_code_kopie = $imgs_code;

while ($row = mysql_fetch_object($result)) {
$imgs_code = $imgs_code_kopie;
if ($childcount == $count)
$imgs_code .= $CODE_ROOT_END;
else
$imgs_code .= $CODE_ROOT_SPLIT;
$plaatjes = TranslateCode($imgs_code);
$imgs_code = $imgs_code_kopie;
if ($childcount == $count)
$imgs_code .= $CODE_EMPTY;
else // anders een lijntje
$bla = $bla + 1;
$imgs_code .= $CODE_LINE;
PrintChildren($row-&amp;gt;id);
$bla = $bla + 1;
$count++;
}
return $bla;
}
}

&amp;lt;?php
$bla = 0;
$replys = PrintChildren($row-&amp;gt;id);
if ($replys == 0) {
echo "&amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;\n";
}
else {
echo "&amp;lt;td&amp;gt;$replys&amp;lt;/td&amp;gt;\n";
}
?&amp;gt;
?>

1.) niet zeiken dat het sneller/beter kan, dit is n.l. mijn eerste script in php (ik = newbie)
2.) ja, de functie is voor het grootste gedeelte gekopieerd van phpfreakz.com

uitleg (imo): de functie wordt aangeroepen wanneer het script in een while loop hangt, vervolgens wordt de $row->id (sql output) meegestuurd naar de functie, deze selecteerd (en returned) daar op zijn beurt de children mee (maakt niet uit hoe diep je gaat, en of er al andere threads gestart zijn).

de rest van die zooi met img is om bij elke zo'n tekentje te tekenen zie: http://www.nbh.2y.net/tmp/index.php

edit:
uiteraard toch bedankt voor de hulp. ik wil eerst meer van php zelf leren voordat ik me bezig ga houden met de optimalisatie ervan.

  • bartvb
  • Registratie: Oktober 1999
  • Laatst online: 05-01 14:41
Eeeeeeeeeeeeh???
je gaat recursief SELECTS doen????? hallo?

Eeh, als ik jou was zou ik ff beginnen met het lezen van een willekeurige SQL tutorial :(

Doe me ff een groot plezier en:

- maak een table met info over alle topics
- als je daar geen zin in hebt voeg dan een field to wat _altijd_ naar de id van het start topic verwijst..

Maar als je me echt een groot plezier wil doen pak dan een bestaand forum, pas dat aan en deel je hack met het development team van het forum..

Ik snap tweakend nederland niet, waarom maakt iedereen na <?print "Hello, world!\n"?> een forum????

  • Mior
  • Registratie: Maart 2000
  • Laatst online: 20:58
omdat ook wij ergens moeten beginnen

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 17-02 15:48

chem

Reist de wereld rond

pcies bartvb, wat een onzin...

>1 SQL regel nodig om het aantal records in een tabel te tellen toont aan dat je 't niet gesnapt hebt.

Straks ga je ook nog ... ach laat maar...

Ik kan nix anders doen dan meewarig meekijken hoe half GoT denkt ff een forum in elkaar denkt te brallen, liefst in z'n uppie en geheel niet gehinderd door enige programmeer ervaring. En "php en mysql zijn kewl" opmerkingEn.

:'(

Misschien een leuke subject drift hoor, maar vindt men niet dat het nivo hier bij /14 een beetje begint te dalen? Als mensen al vragen hoe ze php in een html pagina moeten zetten (ja, dat is ECHT gevraagd), hoe ze een forum moeten bouwen (en dan 't liefst hoe ze smileys moeten 'maken') en weet ik wat voor ***

Het is dat ik geen ander groot drukbezocht forum ken waar het nivo eens wat hoger lag, anders was ik al weg.

zo. dat moest er ff uit.

edit:
spelfoutjes

Klaar voor een nieuwe uitdaging.


  • Mior
  • Registratie: Maart 2000
  • Laatst online: 20:58
ik ben welgeteld sinds vandaag 3 dagen met php bezig, ik heb de beginners tutorial doorgelezen, heb phpfreakz.com bezocht en daar de tutorial gelezen over sql voor beginners.

Toen wou ik gaan proberen, script gekopieerd en gaan rotzooien.. eerst om de datum erbij te zetten en nu dus het aantal replys per topic. Nee dit is niet snel/verstandig als je een echt forum wilt gaan beginnen. Maar dit is om te leren.

Hebben jullie de complete php/sql manual doorgelezen voordat jullie aan het rotzooien gingen? Nee !

Het is stom om jou kennis die je de afgelopen jaren (?) hebt opgebouwd te vergelijken met die van een newbie.

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 17-02 15:48

chem

Reist de wereld rond

ik begrijp ook wel dat je ergens moet beginnen. Ik ben ook begonnen met stumperige cgi scriptjes om m'n computer aan te sturen af school, en dat soort crap.
Maar waarom moet iedereen (en niet alleen jij, fantoom) toch het idee hebben dat ze bij bijna elke vraag een topic moeten openen op /14.

Dit terwijl de meeste vragen zo'n onbenullige newbie factor hebben, dat je je wel moet afvragen of ze überhaupt hebben nagedacht - laat staan de manual gelezen hebben.

voorbeeld: had je niet het idee toen je je afvroeg "goh, ik wil weten hoeveel records er uit een bepaalde query komen", dat je niet de 1e was? En dat daar niet iets voor verzonnen was, 20 jaar geleden? En dat dat niet onwijs in de manual staat ofzo? |:(

Ik wil echter niet zeggen dat ik de alpha en omega ben :) ofzo, maar soms...

Zijn er nog andere (wat meer ervaren) GoT-ers het hier mee eens of...?

edit:
nog meer spelvauten

Klaar voor een nieuwe uitdaging.


  • Mior
  • Registratie: Maart 2000
  • Laatst online: 20:58
tuurlijk had ik dat bedacht.. misschien is het gewoon gemakszucht om hier een topic te openen en andere voor je laten denken. Maar ik heb (wel niet op zo'n heldere manier maar goed) wel zelf opgelost, en het werkt. Ik weet best dat het ook kan als je een parent id opslaat in de database, maar dit forum die ik van het internet heb gehaald werkte nou eenmaal niet op die manier.

Als ik hier rondkijk in dit gedeelte van GoT, denk ik ook van "ag man RTFM!!" en ik ben er pas 3 dagen mee bezig, maar daar hebben hun nou zo weinig aan.. ze doen het toch niet. (meestal dan)

  • Hans
  • Registratie: Juni 1999
  • Niet online
Ja maar het gaat meer om het feit dat we met z'n allen smakelijk kunnen lachen om je uiterst professioneel in elkaar gezette database, hihihihih :D

Check eens wat theorie over relationele databases, normalizeren, en dat soort zaken. scheelt je een hoop werk...

  • bartvb
  • Registratie: Oktober 1999
  • Laatst online: 05-01 14:41
Mee eens, Chem >:)

BTW Phantom, dit is allemaal niet persoonlijk bedoeld.. Het was meer een kwestie van druppel en emmer ofzo :) Jij was op zich nog met redelijk intelligente dingen bezig en had er nog een beetje over nagedacht, je had zelfs een oplossing bedacht. Ok, je had 1 ding tegen en dat is dat je in Helmond woond, haha >:)
Maar ik neem aan dat je het toch met me eens bent dat dit soort topics: http://gathering.tweakers.net/forum/list_messages/98677 werkelijk om te :r :r :r zijn :(

Natuurlijk hebben wij niet de hele handleiding gelezen maar wel de relevante dingen. Als iets niet werkt ga je eens zitten zoeken of bladeren in de manual en FAQ en voor je begint lees je op z'n minst de hele faq 1x door..

Verder abbonneer je je op dingen als mailinlists en lees je die dingen (net als /14) eerst een tijd door voor je vragen gaat stellen. Allemaal nogal basic nettiquette spul lijkt me.

Grootste probleem (IMHO) is dat er inderdaad ongeloofelijk veel mensen zijn die zoiets hebben van "auw, m'n hersenen doen iets.. Laten we eens een topic openen op GoT" :'(

Tuurlijk in 9 van de 10 gevallen heb je dan in 30 minuten een antwoord, leuk voor jou, kut voor de rest van het forum. Nivo gaat omlaag, jij gaat dat soort dingen nog vaker doen en ondertussen leer je zo goed als niks.

Dus keep ff in mind dat dit allemaal niet tegen jou bedoeld is.. Misschien wel een beetje maar lang niet helemaal >:)

|:( |:( |:(

BTW als er iemand tips heeft voor forums met een gelijkwaardige of hogere signal/noise ratio houd ik me aanbevolen >:)

edit:
Eerste zin was out of context door snelle replies van Phanom en fartman

  • Mior
  • Registratie: Maart 2000
  • Laatst online: 20:58
Op woensdag 03 januari 2001 22:47 schreef Hans het volgende:
Ja maar het gaat meer om het feit dat we met z'n allen smakelijk kunnen lachen om je uiterst professioneel in elkaar gezette database, hihihihih :D
lol :)
Check eens wat theorie over relationele databases, normalizeren, en dat soort zaken. scheelt je een hoop werk...
Zoals ik al zei, dat ga ik pas doen als ik (imho) genoeg over php zelf weet (syntax, commando's, etc). Maar dat ik het ga doen is zeker.

  • Hans
  • Registratie: Juni 1999
  • Niet online
aargh 'je woonD' met een D?? Huuuuuuuuuuuuuu

  • Mior
  • Registratie: Maart 2000
  • Laatst online: 20:58
Op woensdag 03 januari 2001 22:48 schreef bartvb het volgende:
Ok, je had 1 ding tegen en dat is dat je in Helmond woond, haha >:)
:D
Maar ik neem aan dat je het toch met me eens bent dat dit soort topics: http://gathering.tweakers.net/forum/list_messages/98677 werkelijk om te :r :r :r zijn :(
idd
Verder abbonneer je je op dingen als mailinlists en lees je die dingen (net als /14) eerst een tijd door voor je vragen gaat stellen. Allemaal nogal basic nettiquette spul lijkt me.
goed idee, tnx

  • Jasper
  • Registratie: Juni 1999
  • Laatst online: 21:00
Er zijn zo ontzettend veel 'kleine' dingen in php waar je mee kan beginnen wanneer je zoiets hebt van 'goh, laat ik eens iets nuttigs met mijn tijd doen en laat ik 'es php gaan leren'. Om gelijk met een forum te beginnen.. Mmhz, ik zou er niet aan moeten denken. Zeker niet als ik het forum van chem zie! :P

Ik ben het voor de rest met chem eens. Toch is het redelijk jammer dat er al redelijk snel een topic gepost wordt, omdat dat veel makkelijker is dan zelf zoeken. Terwijl ik sowieso ook van mening ben dat je op je zoektocht, langs de vele php script sites die er zijn, veel interessante dingen kan vinden waar je later nog iets aan kan hebben.

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 17-02 15:48

chem

Reist de wereld rond

okay, laten we hier dan IETS nuttigs uit laten komen.

in off-topic of 1 van de andere forums staat een apart bericht, altijd bovenaan. En /14 JANKT er gewoon om.
Gewoon, URL's naar een paar sites mbv uitleg over mysql, sql algemeen (joins, unions), php maar ook normalizeren databases, projectmanagement enzo... iets waar je wat aan hebt, dus directe url's. En wat linkjes die naar pre-formatted search opties leiden (bv. "hoe jat ik een forum bijelkaar", of "wat is beter, php of mysql")

affijn, ik ga Oprah kijken. Tot morgen ofzo.

Klaar voor een nieuwe uitdaging.


  • bartvb
  • Registratie: Oktober 1999
  • Laatst online: 05-01 14:41
Here, here!!

Was ik nog vergeten ja.. Op die manier kom je sites tegen met een hoop FAQ's, voorbeelden, tutorials, scripts, noem maar op.. Onmisbaar om later snel en fatsoenlijk iets in elkaar te kunnen bouwen..

(BTW sorry van de woond :'( Errug stom van me, m'n PHP is beter dan m'n NL :) (maw m'n NL zuigt }>)

  • Jasper
  • Registratie: Juni 1999
  • Laatst online: 21:00
Op woensdag 03 januari 2001 22:58 schreef chem het volgende:
in off-topic of 1 van de andere forums staat een apart bericht, altijd bovenaan. En /14 JANKT er gewoon om.
Sow, het duurde ff voordat ik je door had.. Maar ik heb hem! :) Je bedoeld bovenaan zo'n Afbeeldingslocatie: http://gathering.tweakers.net/i/6.gif dingeke als eerste draaad! Lijkt me een strak plan!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 17-02 09:33

Janoz

Moderator Devschuur®

!litemod

Op woensdag 03 januari 2001 22:50 schreef Phantom_ het volgende:

[..]
Zoals ik al zei, dat ga ik pas doen als ik (imho) genoeg over php zelf weet (syntax, commando's, etc). Maar dat ik het ga doen is zeker.
Ik denk dat je juist beter kunt BEGINNEN met databases. Je kunt beter een goed database ontwerp hebben waarbij je simpele querys kunt gebruiken, dan achteraf met allemaal noodoplossingen en ingewikkelde queries toch nog wat op te vragen.

Het belang van een goed database ontwerp wordt door flink wat mensen behoorlijk onderschat!!

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Mior
  • Registratie: Maart 2000
  • Laatst online: 20:58
Ik moet zeggen; ik weet idd geen ruk van database opbouw, ik 'dacht' dat het redelijk simpel was om een klein forumpje op te zetten ism mysql, deze thread bewijst mij het tegendeel.

Ik (en 50% van al het andere volk wat in /14 post) zou het dan ook op prijs stellen als er door de crew en/of door wat php/mysql/asp/etc experts een topic wordt geplaatst net als in otf.

  • stylee
  • Registratie: December 2000
  • Laatst online: 04-09-2021

stylee

blah zeg ik je

als het goed is is er hier een topic te vinden waarin dat soort 'beginners faq' gedoe links staan.. hij is gepost door TanglefuZZ, zal hem even opzoeken en omhoogduwen :)

  • stylee
  • Registratie: December 2000
  • Laatst online: 04-09-2021

stylee

blah zeg ik je


  • Mior
  • Registratie: Maart 2000
  • Laatst online: 20:58
bookmark :)

  • bartvb
  • Registratie: Oktober 1999
  • Laatst online: 05-01 14:41

Verwijderd

1. PHP en een relationele database zoals MySQL zijn 2 verschillende dingen. Ze hebben in eerste instantie nix met elkaar te maken. Je KAN met PHP een database querien als je dat nodig hebt. Dat betekent dus als je zoiets als een forum wilt maken, en je wilt daarbij gebruik maken van MySQL en PHP dan zal je verstand van zaken moeten hebben van beide.

2. Als je wilt beginnen met PHP of MySQL begin dan simpel, probeer zelf iets simpels en ga daar op verder. Ga geen voorgebakken scripjes installeren om dan vervolgens de hele zaak proberen om te gooien. Met code van anderen zie je al snel door de bomen het bos niet meer (hell, dat heb ik met mijn eigen code al, ik ben wat dat betreft niet een erg nette programmeur ;))

3. Je wilt gelijk alles, een compleet forum, dat verbouwen, vernieuwen, meer functies etc.etc. en je bent pas 3 dagen bezig. Bereik je nix mee. Begin vanaf de grond en bouw het dan op. Denk er zelf over na, probeer met eigen oplossingen te komen, leer je verreweg het meeste mee....

4. De search functie hier doet het prima (op wat kleine irritante dingetjes na dan)

Verwijderd

chem: Vindt men niet dat het nivo hier bij /14 een beetje begint te dalen?

Ach...

Het is dat ik geen ander groot drukbezocht forum ken waar het nivo eens wat hoger lag, anders was ik al weg.

Als je (goede) antwoorden geeft is je niveau (wat betreft de vraag) per definitie hoger dan dat van de vraagsteller. Dus vragen kunnen niet te makkelijk worden (hooguit RTFM of vervelend doordat het telkens dezelfde vragen zijn zoals in de voorbeelden die je geeft).
Als je voor de antwoorden komt: je kan vragen van een hoger niveau toch gewoon nog steeds stellen?

Verwijderd

bartvb: Here, here!!

Where? Where? :P

(BTW sorry van de woond :'( Errug stom van me, m'n PHP is beter dan m'n NL :) (maw m'n NL zuigt }>)

En je engels? :P

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 17-02 15:48

chem

Reist de wereld rond

arien > ik ben al blij om te zien dat er meerdere got-ers het met me eens zijn (iig gedeeltelijk).

Maar toch jammer dat er erg weinig reacties komen op m'n post van "php upload script te vroeg" (oid)...

Klaar voor een nieuwe uitdaging.


Verwijderd

chem: Toch jammer dat er erg weinig reacties komen op m'n post van "php upload script te vroeg" (oid)...

Die had ik echt niet gezien, mar ik denk dat het aan de tijdsduur ligt. Je zou lokaal hetzelfde kunnen proberen.

  • bartvb
  • Registratie: Oktober 1999
  • Laatst online: 05-01 14:41
Op donderdag 04 januari 2001 11:35 schreef Arien het volgende:
En je engels? :P
Eeh, zuigt ook :) Had inderdaad iets als 'hear, hear' moeten zijn |:(
Ben volgensmij gewoon nergens goed in. Misschien weer eens tijd voor een rondje RIAGG ofzo >:)

Verwijderd

Een forum is toch niet zo verdomde moeilijk... ik ben ook na de geweldige "Hello World" begonnen met een forum en tot nu toe gaat het goed, ben al ongeveer op de helft en ik ben nog maar 2 week bezig!

Ik denk dat veel mensen gewoon niet goed naar de manual kijken... als ik iets niet weet ga ik naar php.net of mysql.com en zoek daar wat op... of in een tutorial bij devshed of webmonkey...

Zouden meer mensen moeten doen misschien?

  • Apache
  • Registratie: Juli 2000
  • Laatst online: 18-02 13:56

Apache

amateur software devver

Op woensdag 03 januari 2001 22:28 schreef Phantom_ het volgende:
...
Hebben jullie de complete php/sql manual doorgelezen voordat jullie aan het rotzooien gingen? Nee !

...
hebben ze manuals gezegd?
lees een TUTORIAL, rtfm is voor later ;)

Mijn eerste php/mysql tut op www.webmonkey.com heb ik 4x overlopen, herlezen, enz tot ik alle echt helemaal door had. En mijn eerste scriptje was
PHP:
1
2
3
4
5
6
7
8
9
<?
if ($image){

echo "&amp;lt;div align=\"center\"&amp;gt;&amp;lt;img src=\"$imageurl\" width=\"640\" height=\"480\"&amp;gt;";

} else {
echo "no image specified, if you followed a link from our site plz report it";
}
?>

als je dat al een script kunt noemen ;)

Maar begin niet met een forum, begin met een newscript, leer sql, normalization, probeer andere code enz, maar begin niet met een forum :)

If it ain't broken it doesn't have enough features

Pagina: 1