Selecteren met PHP

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Machiel K

Machiel K

06/01/2015 18:20:11
Quote Anchor link
Hallo.

Ik ben bezig met een pagina waar nieuwsberichten op komen te staan. Het gaat er ongeveer zo uit zien (mooier dan dit natuurlijk):

Afbeelding

De grijze vakjes zijn plaatje. Zoals je ziet zijn de eerste 3 nieuwsberichten die worden weergeven headlines. Daarna volgen 3 (meerdere) andere nieuwsberichten.

Nu kan er bij het plaatsen van een nieuwsbericht aangegeven worden of het een headline is of niet. Dus of hij als een groot plaatje weergeven mag worden.

De headlines zijn dus gewoon nieuwsberichten (die ook in de nieuws-tabel staan in de database) maar dan aangevinkt als headliner.

Ik wil nu dus het volgende:

1. Selecteer de eerste beste 3 headlines die er te vinden zijn in de nieuws-tabel.

2. Kijk welke headlines er gebruikt zijn uit de nieuws-tabel. Weergeef alle nieuwsberichten, behalve de 3 gebruikte headlines.

Ik zou niet weten hoe ik dit aan kan pakken.

Iemand die mij hiermee verder op weg kan helpen?
 
PHP hulp

PHP hulp

21/11/2024 21:10:17
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

06/01/2015 19:11:33
Quote Anchor link
Twee query's

Eerst
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
SELECT
    title,
    ectetcetc
FROM
    new_items
WHERE
    is_headline = 1
ORDER BY news_id DESC LIMIT 3


Query 2
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
SELECT
    title,
    ectetcetc
FROM
    new_items n
LEFT JOIN
    (
    SELECT
        news_id
    FROM
        new_items
    WHERE
        is_headline = 1
    ORDER BY news_id DESC LIMIT 3
    ) suppie
    USING (news_id)
WHERE
    suppie.news_id IS NULL
ORDER BY news_id DESC LIMIT 3
 
Machiel K

Machiel K

06/01/2015 20:57:40
Quote Anchor link
Helemaal top! Bedankt!

Nu heb ik bij de volgende headlines de volgende code:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
                <div id="plaatjes">
                    <div class="links">
                        <div class="helft">
                            <a href="#">
                                <b>Categorie</b>
                                <p>
                                    Titel
                                    <span><i class="fa fa-calendar"></i> 4 jan 2015 <span></span> <i class="fa fa-thumbs-o-up"></i> 0</span>
                                </p>
                                <img src="image" />
                            </a>
                        </div>
                        <div class="helft">
                                <b>Categorie</b>
                            <a href="#">
                                <p>
                                    Titel
                                    <span><i class="fa fa-calendar"></i> 4 jan 2015 <span></span> <i class="fa fa-thumbs-o-up"></i> 0</span>
                                </p>
                                <img src="image" />
                            </a>
                        </div>
                    </div>
                    <div class="rechts">
                        <b>Categorie</b>
                        <a href="#">
                            <p>
                                Titel
                                <span><i class="fa fa-calendar"></i> 6 jan 2015 <span></span> <i class="fa fa-thumbs-o-up"></i> 0</span>
                            </p>
                            <img src="images" />
                        </a>
                    </div>
                </div>


Ik kan hier dus lastig een while loop overheen gooien toch? Omdat de "omgeving" steeds anders en niet hetzelfde is.

Hoe kan ik dan het eerste, tweede en derde resultaat appart van elkaar selecteren?

Ik heb geloof ik ergens iets als $items_row['titel'][1] gezien, maar ik kom er niet meer op..
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

06/01/2015 21:12:20
Quote Anchor link
Je zou dan een fetch_all kunnen doen, je krijgt dan de 3 rijen in een numerieke array (beginnend bij 0)
Gewijzigd op 06/01/2015 21:13:24 door Ger van Steenderen
 
Machiel K

Machiel K

07/01/2015 09:42:21
Quote Anchor link
Ik kom er iet uit. Ik blijf hangen bij sqlsrv_num_rows, maar dit werkt niet omdat dit niet voor mysqli is neem ik aan. Welke functie moet ik hier precies voor gebruiken? Dan kan ik daar verder in gaan zoeken.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

07/01/2015 09:48:53
 
Machiel K

Machiel K

07/01/2015 17:46:01
Quote Anchor link
Zit echt flink te klooien..

Maar lijkt heeeelemal nergens op dit. Kan ook echt totaal niks vinden van iemand die hetzelfde probleem heeft.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
    $headl_query = mysqli_query($db, $headl_query);

    $rij = array ();
    
    while($row = mysql_fetch_array($headl_query)){
        $rij[] = $row;
    }

print_r($rij[1]);

    }
 
Bas M

Bas M

07/01/2015 17:49:27
Quote Anchor link
Met die limit 3, zou je in principe maar resultaten moeten krijgen. Je kan dan toch gewoon een while loop maken?


Waarom werk je niet met:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
$i = 0;

while( $i < 3 ){
  // Hier je code?
$i++;
}
Gewijzigd op 07/01/2015 17:50:02 door Bas M
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

07/01/2015 17:52:45
Quote Anchor link
Je gebruikt mysqli en mysql door elkaar
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$res
= mysqli_query($db, $headl_query);
$rijen = mysqli_fetch_all($res, MYSQLI_ASSOC);
mysqli_free_result();
print_r($rijen);
?>
 
Machiel K

Machiel K

08/01/2015 15:53:27
Quote Anchor link
Top, bedankt!
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.