Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: PHP Distinct, option value

mercier [20.10.2019 20:30:46]

#

$query = "SELECT * FROM parts ORDER BY nr";
$result3 = mysqli_query($con, $query);
<?php while($row2 = mysqli_fetch_array($result3)):;?>
<option value="<?php echo utf8_encode($row2[4]);?>"><?php echo utf8_encode($row2[4])." ".utf8_encode($row2[5]);?></option>
<?php endwhile;?>

eo koodi toimii, mutta olisi tarve muuttaa sitä niin, että saman nimien 'part' olisi valintalistalla vain kerran. Siis jotenkin näin? Mutta miten? Koodia ei tarvi kommentoida, tekijä levätköön rauhassa.

$query = "SELECT DISTINCT part FROM parts ORDER BY nr";
<?php while
...
<?php endwhile;?>

Metabolix [20.10.2019 20:43:25]

#

Jos ei ole merkitystä, mikä niistä samannimisistä näytetään, helpoin ratkaisu on GROUP BY.

SELECT * FROM parts GROUP BY nimi ORDER BY nr

Kannattaisi muuten laittaa se UTF-8 kuntoon esimerkiksi PHP-oppaassa neuvotulla tavalla. Kaikenlainen merkistöjen muuntelu käsin (kuten tuossa utf8_encode) viittaa siihen, että jokin on pielessä.

mercier [20.10.2019 20:52:33]

#

Kiitos nopeasta vastauksesta.
'GROUP BY part' lisääminen antaa virheen:
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in...
kohdistettuna riviin '<?php while(...'

UTF-8 sekoilu johtunee siitä, että koodi on alunperin vain englanninkielelle tarkoitettu ja sitten väkerretty toimimaan joten kuten Suomessa.

Metabolix [20.10.2019 21:15:04]

#

Ilmeisesti kyselyssäsi on nyt jokin virhe. Olisi tosi fiksua tarkastaa ne MySQL-virheet aina kyselyn (query-rivin) jälkeen.

mercier [20.10.2019 21:41:47]

#

Kiitos kyllä. Virhe oli. Taulun sarake oli nimetty eri tavalla kuin muualla.
Case closed.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta