[PHP & MYSQL] select 5 waarden met een gewenst $_GET['ID']

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Beste Tweakers...

Ik krijg uit de URL een PHOTO_ID waarde.
Nu is mijn 1ste query :

$sQuery = "SELECT photos_id.id, photos_id.gal_id, photos_id.photofile, gal_id.gal_name FROM photos_id, gal_id WHERE photos_id.id = '$photo_id' AND gal_id.id = photos_id.gal_id LIMIT 0,1";

Hier krijg ik de photo filename en de gallery name waar het staat.

Nu wil ik niet alleen deze ene foto maar ook 2 fotos die hierboven staan in de photos_id db en 2 daarna.

Hoe doe ik dat? Mijn eigen methode is alle waarden in een array zetten en daar de opgeven photo_id vinden. Dan heb krijg ik de fotos ook... maar dit is een lap code.

Kan dit makkelijker met minder code?

Acties:
  • 0 Henk 'm!

Verwijderd

Uhm, ik heb ook zoiets gemaakt. maar dan met pagina nummering bovenin

Inderdaad een heel stuk code :p

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
              // nou nu de code voor het uitpoepen van navigatie regel -  $eachpage is 1. (begin),
              for($eachpage=1; $eachpage <= $newpage; $eachpage++)
                        {
                     
    
                        // Bij SQL-query moet het limit ietsje eerder beginnen :-), dus min 1
        $limsql = $eachpage-1;
                            
         // ff een query om aan de hand van het limit, de $ref uit de dbase te halen
        $sqlzoek = "SELECT * FROM huizen ORDER BY $sort $vol LIMIT $limsql,1";
        $resultaatzoek = mysql_query($sqlzoek);
        $rowzoek = mysql_fetch_array($resultaatzoek);
                        
        // De link naar de vorige, als $eachpage gelijk is aan het $lim-1, weet je het $ref van de 'vorige'
          IF ($eachpage == $lim-1)
                                            {
            $refvorige = $rowzoek['ref'];
            }
         // De link naar de volgende, als $eachpage gelijk is aan $lim+1, weet je het $ref van de 'volgende'
             IF ($eachpage == $lim+1)
                                                    {
                $refvolgende = $rowzoek['ref'];
                }
                                
         // Wanneer $eachpage is de laatste pagina, geen streepje erachter
            IF ($eachpage == $eind)
                                                   {
                         $pagehtml .= "<A HREF=\"huis.php?ref=".$rowzoek['ref']."\">".$eachpage."</A>";
                               }
             // Anders natuurlijk wel. dat streepje zit tussen elk linkje
                  ELSE
                                                   {
                          $pagehtml .= "<A HREF=\"huis.php?ref=".$rowzoek['ref']."\">".$eachpage."</A> - ";
                 }
                                }

ps. let niet op de netheid, moet hetn og ff cleanen etc.

Lees het ff door, moet wel iets helpen dit denk, gtx, Tim

[ Voor 45% gewijzigd door Verwijderd op 26-09-2004 14:05 . Reden: Heb even het nutteloze voor jou weggehaald ]


Acties:
  • 0 Henk 'm!

  • JaFFoG
  • Registratie: Januari 2003
  • Laatst online: 22-11-2024
Probeer het volgende eens (in deze code ga ik er wel van uit dat je een extra column hebt met de volgorde van de foto's, aangezien het nog best eens handig kan zijn die volgorde te wijzigen):

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
// eerste foto uitlezen:

$result1 = mysql_query("SELECT photos_id.gal_id, photos_id.photofile, photos_id.volgorde_id, gal_id.gal_name
                        FROM photos_id, gal_id
                        WHERE photos_id = " . $photo_id . " AND
                              gal_id.id = photos_id.gal_id
                        LIMIT 0,1");

list($gal_id, $photofile, $volgorde_id, $gal_name) = mysql_fetch_row($result1);

// nu weet je dus het ID van de GALLERY, de PHOTOFILE, het VOLGORDENUMMER van de betreffende foto en de NAAM van de GALLERY


// met deze gegevens kun je de vier omringende foto's (voor zover aanwezig) uitlezen:

$result2 = mysql_query("SELECT id FROM photos_id
                        WHERE gal_id = " . $gal_id . " AND
                              volgorde_id < (" . $volgorde_id . " + 3) AND
                              volgorde_id > (" . $volgorde_id . " - 3) AND
                              volgorde_id <> " . $volgorde_id . "
                        ORDER BY volgorde_id ASC
                        LIMIT 0,4");

// selecteer de ID's van de fotos die in volgorde twee onder liggen en twee boven, maar NIET gelijk zijn aan de al geselecteerde foto in de vorige query
// deze uitlezen in een while-lus en je hebt je foto's
// je kunt ze natuurlijk ook in een array zetten, of hoe je het wilt toepassen...


Succes :9 :7

Bla


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
$s_Thanks ="DancingTim";

maar dan is mijn methode door met 1 query alles in een 2Darray te zetten en hierin de gewenste waardes te vinden makkelijker en korter... Ik ben benieuwd of het met een subselect kan.

Ik kijk ff hoe jaffog het doet... Neeffog, ik had wel een order waarmee ik selecteer maar dit er niet bij gezet!

[ Voor 44% gewijzigd door Verwijderd op 26-09-2004 15:30 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
<?
IF ( $Jaffog['antwoord'] == TRUE )
{
echo "THANKS<BR>\n";
}
?>

Na enkele aanpassingen werkt het uitstekend! GOOD WORK...!
Ik was erzelf niet opgekomen... zie wel mogelijkheden tot 1 query.
Wordt wel een hele lange query :D

TOP!

[ Voor 10% gewijzigd door Verwijderd op 27-09-2004 12:10 ]