Value met de zelfde waarde laten zien

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Erwin Zenden

Erwin Zenden

28/12/2014 00:06:00
Quote Anchor link
Ik ben al een tijdje bezig met 2 dezelfde waardes samen te voegen maar heb niet echt veel succes hiermee.

Wat ik wil is dat x aantal waardes met dezelfde waarde samen worden gevoegd.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
test   1
asdf   1
qwerty 2
abc    3
zzz    1
poiuyt 2


Deze wil ik samen voegen als ze dezelfde waardes hebben dus moet zijn

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
test , asdf, zzz hebben dezelfde waarde.
qwerty, poiuyt hebben dezelfde waarde.


En omdat de andere geen zelfde waardes hebben hoeven ze niet ge-echoed worden.
De waardes komen vanuit

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
$s= "SELECT naam, waarde FROM show";
$test = $db->prepare($s);
$test->execute();
 
PHP hulp

PHP hulp

02/05/2024 20:39:53
 
Jan de Laet

Jan de Laet

28/12/2014 09:15:23
Quote Anchor link
Met de volgende SQL krijg je de 5 namen die meer dan 1 x voorkomen, met hun waarde.
Met PHP kan je ze dan samenvoegen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
SELECT
  s.naam, s.waarde
FROM
  show AS s,
  (SELECT waarde, COUNT(*) FROM show GROUP BY waarde HAVING COUNT(*) > 1) AS c
WHERE
  s.waarde = c.waarde
ORDER BY
  s.waarde, s.naam
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

28/12/2014 10:10:10
Quote Anchor link
Afgezien van de niet ANSI SQL kan dit eenvoudiger:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
SELECT
    waarde,
    GROUP_CONCAT(DISTINCT naam ORDER BY naam) namen
FROM
    show
GROUP BY waarde
HAVING COUNT(*) > 1

Ook niet ANSI SQL btw ;-)
Gewijzigd op 28/12/2014 10:12:14 door Ger van Steenderen
 
Erwin Zenden

Erwin Zenden

28/12/2014 12:55:34
Quote Anchor link
Weer iets nieuws geleerd, beide hartstikke bedankt! Zo simpel kan het dus zijn.

Toevoeging op 28/12/2014 14:46:41:

Ik gebruik nu de suggestie van Ger werkt zoals ik wil.
Kan ik de waardes ook apart aanroepen want ik wil per waarde een a href eromheen zetten.
Nu krijg ik direct de waardes in 1 array zoals
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
array(
    [waarde] => nick1,nick2
)

Als ik dan $i['waarde'] aanroep dan krijg ik gelijk nick1,nick2 terug.
Want dan kan ik het niet naar de specifieke pagina linken.
 
Eddy E

Eddy E

28/12/2014 15:16:45
Quote Anchor link
Wil je nick1,nick2 in 1 rij krijgen?
Of wil je juist twee rijen met daarin de losse 'nicken'?

Want de GROUP CONCAT() maakt er juist 1 veld van. Wil je dat niet, dan moet je gewoon de query aanpassen.




Uiteraard kan je nick1,nick2 ook wel met de php-functie explode() weer uit elkaar halen, maar dat lijkt mij niet logisch.
 
Erwin Zenden

Erwin Zenden

28/12/2014 15:39:36
Quote Anchor link
Ja ik wil ze uit elkaar, in ieder geval moeten ze beide een apart a href krijgen.
Als ik nu een a href geef is het geen valid url meer want dan krijg je
phphulp.php?id=nick1,nick1
Dit moet zijn,
phphulp.php?id=nick1
phphulp.php?id=nick2
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<a href=phphulp.php?id=$test['waarde']>$test['waarde']</a>

Maar dan wel in één zin, nu krijg ik

nick1,nick2 hebben dezelfde waardes, beide zijn dan 1 url.
Gewijzigd op 28/12/2014 15:40:14 door Erwin Zenden
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

28/12/2014 17:26:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$nicks
= explode(',', $test['namen']);
foreach($nicks as $nick) {
    echo '<a href="http://example.com/test.php?id=' . $nick . '">' . $nick . '</a><br>';
}

?>
 
Erwin Zenden

Erwin Zenden

28/12/2014 19:20:34
Quote Anchor link
Als ik deze gebruik krijg ik ze nu appart, wel met de juiste links.
Nick1 hebben dezelfde waardes...
Nick2 hebben dezelfde waardes...

Ik wil dit echter als
Nick1, Nick2 hebben dezelfde waardes...

Ik probeer dit deze op te slaan in arrays maar lukt me niet echt.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

28/12/2014 20:01:30
Quote Anchor link
Vooruit dan:
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
<?php
// het is zinloos om prepared statements te gebruiken zonder parameters
if($s = $db->query('SELECT
            waarde,
        GROUP_CONCAT(DISTINCT naam ORDER BY naam) namen
        FROM
                show
        GROUP BY waarde
        HAVING COUNT(*) > 1'
) {
    while ($row = $s->fetch(PDO::FETCH_ASSOC) { //voor mysqli: $row = $s->fetch_assoc()
        $c = '';
        $nicks = explode(',', $row['namen']);
        foreach($nicks as $nick) {
            echo $c . '<a href="http://example.com/test.php?id=' .
                 $nick . '">' . $nick . '</a>';
            $c = ', ';
        }

        echo ' hebben dezelfde waarde(' . $row['waarde'] . ')<br>';
    }
}

?>
Gewijzigd op 28/12/2014 20:10:04 door Ger van Steenderen
 
Erwin Zenden

Erwin Zenden

28/12/2014 21:17:47
Quote Anchor link
@Ger, heeeeeeel er bedankt voor je moeite! Heb het nu zoals ik uit eindelijk wilde thanks to you!!!
 



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.