Toon posts:

[PHP/MySQL] Dubbele query?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb de volgende code wanneer ik readGalleryPhotoCount remark met // dan laat ie item 0/25 zien van de 478 maar wanneer ik // er voor weg haal krijg ik maar 1 item te zien met het aantal plaatjes dat in de db staat (1)
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
<?
function readGalleryPhotoCount($id) {
    global $db;
    $tmp = 0;

    $sqlx        = "SELECT * FROM galleryphoto WHERE gid='$id'";
    $resultx     = mysql_query($sqlx);
    $tmp        = mysql_num_rows($resultx) or die(mysql_error());

    return $tmp;
}

if ($from < 1) { $from = 0; }

$gal[items] = 25;
$gal[from] = $from;
$gal[to] = $gal[from] + $gal[items];

$sql        = "SELECT * FROM galleryid LIMIT ". $gal[from] . "," .  $gal[to];
$result     = mysql_query($sql);

if ($result > 0) {
    $gal[total] = mysql_num_rows($result) or die(mysql_error());
    for ($i = $gal[from]; $i <= $gal[to]; $i++) {

        $list = mysql_fetch_array($result);
        // $count = readGalleryPhotoCount($list[id]);
        echo "<a href=\"gallery.php?id=$list[id]\">$list[gallery]</a> - $count - items <br>";
    }
}else{
}
?>

Ik heb onnuttige html codes/routines er ff uitgehaald zodat het wat overzichtelijker is

ik wil

1 alle gallery id's uitlezen van $gal[from] naar $gal[to] (LIMIT) maar wil per gallery uitlezen hoeveel foto's er in zitten..

:)

  • sorted.bits
  • Registratie: Januari 2000
  • Laatst online: 15:00
Probeer eens te kijken in MySQL Manual naar Inner Join, Left Join en Right Join, dat is volgens mij wat je zoekt

  • chris
  • Registratie: September 2001
  • Laatst online: 11-03-2022
Wat wli je dan precies? Je hebt een aantal gallery's, en daarin een aantal foto's? En je wil uitlezen hoeveel foto's er in een gallery aanwezig zijn? Of begrijp ik het nou weer helemaal verkeerd? :?

  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025

kvdveer

Z.O.Z.

als dit je tabellen zijn:

galleryphoto(id,gid,...)
galleryid(id,galery,...)

Dan doet deze query wat jij wil:

SELECT galleryid.*,count(galleryphoto.id)
FROM galleryphoto, galleryphoto
WHERE galleryphoto.gid = galleryid.id
ORDER BY galeryid.galery
LIMIT 10,20

Pak een boek over sql en ga eens lekker lezen over joins... Dit was een inner join.

Localhost, sweet localhost


Verwijderd

Topicstarter
Ik ga zoeken over joins tnx alvast, ik kom hier vast op terug :)

ok ik ben terug ;) :+

en heb het volgende gelezen over JOIN maar snap der nu echt helemaal de balle van sorry :{ http://www.mysql.com/doc/J/O/JOIN.html

verder is het volgende dat ik wil.

ik lees het aantal gallery's uit..
do een for next loopje en lees per loop de galleryid, naam etc uit, daarna wil ik uitlezen d.m.v een functie hoeveel id's die gallery bevat... (foto's) en dan next...

:)

Verwijderd

Topicstarter
Op dinsdag 08 januari 2002 11:53 schreef dev-null het volgende:
Wat wli je dan precies? Je hebt een aantal gallery's, en daarin een aantal foto's? En je wil uitlezen hoeveel foto's er in een gallery aanwezig zijn? Of begrijp ik het nou weer helemaal verkeerd? :?
B-) juist :)
Op dinsdag 08 januari 2002 13:01 schreef kvdveer het volgende:
....snip.....
Pak een boek over sql en ga eens lekker lezen over joins... Dit was een inner join.
Het MySQL boek heb ik eens bekeken dies goedkoper :+

Verwijderd

Op woensdag 09 januari 2002 08:24 schreef Xtentic het volgende:
verder is het volgende dat ik wil.

ik lees het aantal gallery's uit..
do een for next loopje en lees per loop de galleryid, naam etc uit, daarna wil ik uitlezen d.m.v een functie hoeveel id's die gallery bevat... (foto's) en dan next...

:)
Pak het anders aan. Lees eerst met 1 query het aantal foto's per category in:
code:
1
SELECT gid, count(*) AS count FROM galleryphoto GROUP BY gid

Loop de resultset voor en gooi de counts in een array:
$countarray[$gid] = $count; (niet letterlijk ;) )

Vervolgens werk je je door de categoriën heen:
code:
1
SELECT * FROM galleryid LIMIT x, aantal

Nu loop je met een for lus door deze resultaten set heen en echoed de naam etc. + de waarde die bij deze categorie hoort qua aantal foto's (uit $countarray).

edit:
GROUP BY vergeten :o

Verwijderd

Topicstarter
Op woensdag 09 januari 2002 15:15 schreef Zef het volgende:

[..]

Pak het anders aan. Lees eerst met 1 query het aantal foto's per category in:
code:
1
SELECT gid, count(*) AS count FROM galleryphoto

Loop de resultset voor en gooi de counts in een array:
$countarray[$gid] = $count; (niet letterlijk ;) )

Vervolgens werk je je door de categoriën heen:
code:
1
SELECT * FROM galleryid LIMIT x, aantal

Nu loop je met een for lus door deze resultaten set heen en echoed de naam etc. + de waarde die bij deze categorie hoort qua aantal foto's (uit $countarray).
zo bedacht ik me dat ook, ik lees bv eerst uit hoeveel id's er zijn, dan de loop waar ik de gallery's ga uitlezen en daarna nog een loop waarin in check hoeveel foto's er gekoppeld zijn aan dat id(ee) :)

Dat kan ik zelf fixen B-) maar ik hoorde van een bekende dat je meerdere query's tegelijk kon doen...mja op een of andere manier werkte dat toch niet... :)

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Zef raadde een imo brakke manier aan
zo zou ik het doen:
code:
1
2
3
4
5
6
SELECT gallery.id
     gallery.name,
     COUNT(photos.galleryID) as cnt
     FROM gallery
     LEFT JOIN  photos ON (gallery.id=photos.galleryID)
     GROUP BY   gallery.id

waar
gallery een tabel is met categorien:
id :sleutel
name: naam van categorie

photos een tabel is met fotos, met daarin een galleryid die als Foreign Key verwijst naar id uit gallery

snappie?

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Op woensdag 09 januari 2002 15:23 schreef drm efficientere manier
Kan ook natuurlijk |:(

Edit: Als in, dat is inderdaad beter (even voor de duidelijkheid ;) )

Verwijderd

Topicstarter
Op woensdag 09 januari 2002 15:23 schreef drm het volgende:
.... iets heel moois .....
Moet ik heel eerlijk zijn (jah). nee :'( ik heb zelf al aardig wat over die join geprobeerd te begrijpen maar vat ut niet.. sorry :{

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Zef:
Kan ook natuurlijk |:(

Edit: Als in, dat is inderdaad beter (even voor de duidelijkheid ;) )
woei! :)
Xtentic:
Moet ik heel eerlijk zijn (jah). nee :'( ik heb zelf al aardig wat over die join geprobeerd te begrijpen maar vat ut niet.. sorry :{
JOINS zijn ook best rottig...
zal een poging wagen:
code:
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
SELECT gallery.id
     gallery.name,

# tot hier snap je het wel neem ik aan

     COUNT(photos.galleryID) as cnt

# tel het aantal galleryID's in photos. 
# Waarom de ID? Omdat counten op index-velden
# sneller is dan op non-index velden

     FROM gallery

# Dat snap je ook wel, neem ik aan

     LEFT JOIN  photos ON (gallery.id=photos.galleryID)

# Doe een join met een andere tabel, en doe dat door de
# relatie (gallery.id=photos.galleryID) te gebruiken.
# DUS: selecteer uit de tabel photos de COUNT waar de relatie
# overeenkomt.

     GROUP BY   gallery.id

# GROUP BY omdat er aangegeven moet worden welk veld gegroepeerd moet
# worden als noemer. euhhh hoe leg je dat uit. Iemand ...?

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Topicstarter
:D Whow nice man!, die moet in de NL MySQL faq ;) ik denk dat ik het snap maar zal het eens toepassen en uitvogelen alleen de query string die ik dus moet geven is de gene die je me hebt gegeven en dat levert de uiteindelijke counter, maar ook id en naam van de gallery's! :) ... :D

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Op woensdag 09 januari 2002 16:55 schreef Xtentic het volgende:
:D Whow nice man!, die moet in de NL MySQL faq ;) ik denk dat ik het snap maar zal het eens toepassen en uitvogelen alleen de query string die ik dus moet geven is de gene die je me hebt gegeven en dat levert de uiteindelijke counter, maar ook id en naam van de gallery's! :) ... :D
pcies

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Topicstarter
Op woensdag 09 januari 2002 17:03 schreef drm het volgende:

[..]

pcies
't werkt niet :{ mja ik check ff bij je op icq, en anders straks na nog meer spelen hier in dit topic :)

Verwijderd

Topicstarter
Goede morgen B-) (moet zo werken...)

Ik heb gisteren weer een avondje zitten spaycen maar kwam niet uit het volgende
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?
$sql        = "SELECT gallery.id
               gallery.name,
               COUNT(photos.galleryid) as cnt
               FROM gallery
               LEFT JOIN  photos ON (gallery.id=photos.galleryid)
               GROUP BY   gallery.id LIMIT ". $gal[from] . "," .  $gal[to];
$result     = mysql_query($sql) or die(mysql_error());
echo $result;
echo "<center>";
if ($result > 0) {
    $gal[total] = mysql_num_rows($result) or die(mysql_error());
    for ($i = $gal[from]; $i <= $gal[to]; $i++) {

        // $count = readGalleryPhotoCount($i);
        $list = mysql_fetch_array($result);
        echo "<a href=\"gallery.php?id=$list[id]\">$list[gallery]</a> - $count - items <br>";
    }
}else{
    echo "nothing found......";
}
?>


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
CREATE TABLE galleryid (
   id int(4) NOT NULL auto_increment,
   adddate timestamp(14),
   level tinyint(4) DEFAULT '0' NOT NULL,
   gallery varchar(75),
   country varchar(75) NOT NULL,
   path varchar(75) NOT NULL,
   sex char(1) NOT NULL,
   comment varchar(250) NOT NULL,
   views int(4) DEFAULT '0' NOT NULL,
   UNIQUE id (id)
);

CREATE TABLE galleryphoto (
   id int(4) NOT NULL auto_increment,
   gid int(4) DEFAULT '0' NOT NULL,
   photo varchar(75),
   photoSize varchar(75),
   photoX int(4) DEFAULT '0' NOT NULL,
   photoY int(4) DEFAULT '0' NOT NULL,
   comment varchar(250) NOT NULL,
   views int(4) DEFAULT '0' NOT NULL,
   UNIQUE id (id)
);

/me is working today so is checking this after 18.00 hourz.

:)

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Op donderdag 10 januari 2002 06:37 schreef Xtentic het volgende:
Goede morgen B-) (moet zo werken...)

Ik heb gisteren weer een avondje zitten spaycen maar kwam niet uit het volgende
PHP:
1
2
3
<?
php meuk
?>


code:
1
SQL meuk

/me is working today so is checking this after 18.00 hourz.
Maar dat is ook logisch. Kijk, je tabellen heten resp. galleryid en galleryphoto
wat ik overigens vreemde namen vind, maar dat is een 2e

In de query, echter, vraag je om velden van tabellen gallery en photos (beetje 1:1 overgenomen ;)), terwijl die tabellen niet de 2 tabellen zijn die je hierboven noemt..

Ik had wel van je verwacht dat je zou zien dat dat niet klopt :?

Je zal mijn query toch nog even moeten "vertalen" naar een query die voor jou db van toepassing is.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • creative8500
  • Registratie: September 2001
  • Laatst online: 03-01 16:54

creative8500

freedom.

[offtopic]
Zijn in MySQL 4 nou subqueries mogelijk?
[/offtopic]

  • Nielsz
  • Registratie: Maart 2001
  • Niet online
Op donderdag 10 januari 2002 09:07 schreef cREATiVe8500 het volgende:
[offtopic]
Zijn in MySQL 4 nou subqueries mogelijk?
[/offtopic]
imo in 3 niet, en in 4 wel.
Maar 4 is nog niet uit :?

  • HGM
  • Registratie: April 2000
  • Niet online

HGM

Op donderdag 10 januari 2002 09:11 schreef Nielsz het volgende:

[..]
Maar 4 is nog niet uit :?
Define 'uit'. De alpha dus wel: http://tweakers.net/meuktracker.dsp/1423

Verwijderd

Zo moet ie goed wezen.
code:
1
2
3
SELECT COUNT(galleryphoto.gid) AS aantal, galleryid.* FROM (galleryid
LEFT JOIN galleryphoto ON galleryid.id = galleryphoto.gid)
GROUP BY galleryid.id ORDER BY galleryid.id LIMIT 0,25

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Op donderdag 10 januari 2002 15:15 verklapte MOPIE de oplossing!!
:X :X shhh! zo leertie toch niks ! ;)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Topicstarter
Op donderdag 10 januari 2002 15:21 schreef drm het volgende:

[..]

:X :X shhh! zo leertie toch niks ! ;)
Nou dat is niet helemaal waar, (ben net thuis dus geef ff korte omschrijving waarom nie ;)) je kan wel degelijk leren van code die goed geschreven is (sql-query) omdat je dat kan vergelijken met bv de database structuur :)

mja ik ga er strakkies naar kijken want zoals ik al melde ben ik net thuis heb steen koude tenen en heb hard gewerkt 8-)

Verwijderd

Op donderdag 10 januari 2002 15:21 schreef drm het volgende:

[..]

:X :X shhh! zo leertie toch niks ! ;)
Sorry zal ut niet weer doen :)

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 27-08 13:53

chem

Reist de wereld rond

Op donderdag 10 januari 2002 17:27 schreef MOPIE het volgende:

[..]

Sorry zal ut niet weer doen :)
dat kost je een note :P

(nee hoor, geintje ;))

Klaar voor een nieuwe uitdaging.


Verwijderd

Topicstarter
Op donderdag 10 januari 2002 17:32 schreef chem het volgende:

[..]

dat kost je een note :P

(nee hoor, geintje ;))
Euh ik zou der toch een 'note' van goed gedrag geven ;)

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Xtentic: je kan wel degelijk leren van code die goed geschreven is (sql-query) omdat je dat kan vergelijken met bv de database structuur :)
:? Als jij gewoon code gaat knippen-plakken dan leer je daar echt niets van... Ik had expres de namen anders gedaan om even je inzicht te checken >:) :P
MOPIE: Sorry zal ut niet weer doen :)
;) np

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Topicstarter
Op vrijdag 11 januari 2002 09:13 schreef drm het volgende:

[..]

:? Als jij gewoon code gaat knippen-plakken dan leer je daar echt niets van... Ik had expres de namen anders gedaan om even je inzicht te checken >:) :P
[..]

;) np
Welk inzicht :P... mja ut werkt en begrijp nu ele maal wat er bedoeld wordt of ik dat nu ook kan toepassen op vervolg projectjes zal de toekomst me leren :P
Pagina: 1