Sql meerdere results verweven

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

N K

N K

13/08/2013 20:49:42
Quote Anchor link
Ik haal een reeks events op uit een database en tussen deze resultaten wil ik om en om advertenties laten zien. Deze komen ook uit een database.

Ik heb nu een query waarmee ik dmv een foreach de resultaten ophaal. De query voor de advertenties is daarentegen nogal anders t.o.v. de eerste. Anders kon ik deze misschien samenvoegen.

Hoe verweef ik nu de query voor de advertenties met de foreach loop?
 
PHP hulp

PHP hulp

09/11/2024 02:29:29
 
John D

John D

13/08/2013 21:17:23
Quote Anchor link
De beide query's samenvoegen in een union. Even smart het aantal velden gelijk maken.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

13/08/2013 21:24:29
Quote Anchor link
Wellicht kan je ook je query's laten zien?
Nu vraag je ik wil van A naar B, zonder te laten weten wat A en B inhouden!!!
 
N K

N K

13/08/2013 21:31:25
Quote Anchor link
okee, bij deze de queries.

Event query:
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
$sql_get_events = "SELECT  v.name,v.venue_id, v.city,v.street, v.number,v.zipcode,u.username,u.org_name,u.user_id,
                    e.startdate,e.title,e.description,e.starttime, e.endtime,e.event_id, GROUP_CONCAT(cat.category_descr SEPARATOR ', ')as cat_descr, GROUP_CONCAT(ec.category_id) as cat_id,
                    GetDistance(('" . mysqli_real_escape_string($con,$_POST['lat']) . "'), ('" . mysqli_real_escape_string($con,$_POST['lon']) . "'), zc.lat, zc.lon) AS dist
                FROM venue AS v
                JOIN event AS e USING (venue_id)
                JOIN zipcode AS zc ON v.zipcode = zc.zipcode
                JOIN users AS u ON e.user_id = u.user_id
                JOIN event_cat AS ec USING (event_id)
                JOIN category as cat USING (category_id)
                WHERE
                    ec.category_id IN ('".implode("','",$_POST['category']) . "')
                AND
                    e.startdate >= ('" . mysqli_real_escape_string($con,date("Y-m-d", strtotime($_POST['start_submit']))) . "')
                AND
                        v.city <> ('" . mysqli_real_escape_string($con,$_SESSION['city']) . "')
                GROUP BY
                    e.event_id
                ORDER BY
                    dist,e.startdate,e.starttime LIMIT $from,$num";


Advertentie query:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
$sql_get_ads = "
        SELECT
        l.image,l.zipcode,
        GetDistance(('" . mysqli_real_escape_string($con,$_POST['lat']) . "'), ('" . mysqli_real_escape_string($con,$_POST['lon']) . "'), zc.lat, zc.lon) AS dist
        FROM local_ads AS l
        JOIN zipcode AS zc ON l.zipcode = zc.zipcode
        WHERE
            GetDistance(('" . mysqli_real_escape_string($con,$_POST['lat']) . "'), ('" . mysqli_real_escape_string($con,$_POST['lon']) . "'), zc.lat, zc.lon) <= ('30')
        AND CURDATE() > l.local_ad_start_date
        AND CURDATE() < l.local_ad_end_date
        ORDER BY l.local_ad_start_date";


Toevoeging op 14/08/2013 09:58:01:

Voordat sommige mensen moeite gaan doen.
Heb wellicht een oplossing d.m.v. javascript gevonden.
Ik ga dit eerst maar eens uitproberen.

http://jsfiddle.net/mattball/9M868/
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

14/08/2013 15:50:49
Quote Anchor link
Als je nu eens een array genereert uit de tweede query, en dan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
$ad_max_id
= count($ads_array) - 1;
$pointer = 0;
while ($event = mysqli_fetch_assoc($sql_get_events)) {
    //waar je de advertentie wilt tonen:
    echo $ads_array[0];
    $pointer++;
    if ($pointer > $ad_max_id) $pointer=0;
}

?>

Heb het je gelijk in PHP opgelost;
 
N K

N K

14/08/2013 23:52:04
Quote Anchor link
thanx Ger, die ga ik ook even bekijken
 



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.