Avatar billede riefart Seniormester
01. marts 2020 - 16:21 Der er 3 kommentarer og
2 løsninger

Indlæsning af værdier fra array

Med følgende script hentes titler fra en tabel, som sorteres alfabetisk og adskilles med store bogstaver refererende til titlerne, således:
<?php
if ($stmt = $mysqli->prepare("select `id`, `titel`, `forfatter`, `pris` from `annoncer` where `id`=? order by `titel` asc ")) {
    $stmt->bind_param('i', $id);
    $stmt->execute();
    $stmt->bind_result($link, $titel, $author);
        while ($stmt->fetch())
    {
        $letter = substr($titel, 0, 1);
        $res[$letter][] = $titel;
    }
    foreach ($res as $key => $val) {
?>
        <div class="<?php $letter; ?>"></div>
<?php
        echo $key; //shows capital letter
        foreach ($val as $reqvals) {
            echo $reqvals; //shows 'titel'
            echo "<br>";
        }
    }
    $stmt->close();
}
    ?>

Resultat:
A
Altid klar
Astrids hemmelighed

B
Bravo Klaus

D
Den hemmelige klumme

Imidlertid kan jeg ikke få andre værdier fra tabellen (eks. forfatter, pris osv) indlæst sammen med titlen. Hvordan kan jeg gøre dette?
Jeg vil også gerne have denne html-del
<a href="#se_annonce<?php echo $id; ?>" class="popup-with-zoom-anim">
    <div class="box">
        <div class="forfatter">Af <?php $forfatter; ?></div>
        <div class="pris">Kr. <?php $pris; ?></div>
    </div>
</a>
Indbygget omkring hver titel. Men uanset hvad jeg prøver, fungerer det ikke. Hvad laver jeg forkert?
Avatar billede arne_v Ekspert
01. marts 2020 - 17:41 #1
$res[$letter][] = $titel;

->

$res[$letter][] = array('titel' => $titel, 'author' => $author);

og

$reqvals

->

$reqvals['titel']
$reqvals['author']
Avatar billede riefart Seniormester
01. marts 2020 - 18:52 #2
Tak for hjælpen Arne_V. Det virker perfekt nu.
Avatar billede arne_v Ekspert
02. marts 2020 - 21:15 #3
I.s.f. et associativt array kunne du også gå OO og bruge en klasse.
Avatar billede riefart Seniormester
04. marts 2020 - 12:24 #4
Så var jeg alligevel ikke helt i mål. Jeg kæmper med at få en sidste variabel ($reqvals['id']), til at styre magnific popup. Den hentes når jeg kører print_r($res); og vises derfor også når jeg hover posten på siden, men den aktiverer ikke magnific popup ved klik.

Det ser således ud:
if($stmt=$mysqli->prepare("select `id`, `titel`, `forfatter`,..... `billede` from `annoncer` where $_SESSION[kolonne] order by `titel`asc "))
{
    $stmt->bind_param('s', $_SESSION['soegning']);
    $stmt->execute();
    $stmt->bind_result($id, $titel, $forfatter,..... $billede);
    while($stmt->fetch())
        {
        $forbogstav=substr($titel,0,1);
        $res[$forbogstav][] = array('titel' => $titel, 'forfatter' => $forfatter, 'pris' => $pris,
        'stand' => $stand, 'id' => $id, 'billede' => $billede);
        }       
        foreach($res as $key=>$val)
            {
            ?>
            <div class="<?php $forbogstav;?>"></div>
            <?php

            echo "<div class='oversigtsbogstav'>$key</div>";
            foreach($val as $reqvals)
                {
?>
<a href="#se_annonce<?php echo $reqvals['id'];?>" class="popup-with-zoom-anim"> //link til popup-vindu
    <div class="boks">
      indhold af boks
    </div>
</a>           
           
<?php
                }
            }
//popup-vinduet:
<div id="se_annonce<?php echo $reqvals['id'];?>" class="zoom-anim-dialog mfp-hide">
  //en masse indhold
        <div class="titel_pop"><?php echo $reqvals['titel']; ?></div>
</div>
------------------
Jeg får kun magnific til at virke på sidste post.
Hvad er det jeg ikke ser?
Avatar billede arne_v Ekspert
05. marts 2020 - 19:39 #5
Det kan jeg slet ikke overskue.

Jeg tror at du må debugge koden og se hvor det går galt.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester