Avatar billede Morten Professor
23. marts 2017 - 21:15 Der er 11 kommentarer og
1 løsning

Mysqli select

Hej Eksperter

Jeg har lige et problem med at få noget frem kan godt få to id frem men de sidste kommer ikke.
Her er koden:
<?php
$con->set_charset("utf8");
function alsiske_fluefiskere_menu($con, $AlsF_undermenu){
   
    /* Se Info */
    if ($stmt = $con->prepare('SELECT `id`, `banner`, `baggrund`, `mailform`, `menu`, `undermenu`, `overskrift`, `tekst`, `subtext`, `billede`, `hoejde`, `bredde`, `skrevetaf`, `datotid`, `boxid`, `bioid`, `muid`, `artid`, `artu`, `linkid`, `url` FROM `opstilling` WHERE mid = ?' )) {
        /* Bind parametre */
        $stmt->bind_param('i', $mid);

        /* Sæt værdier på parametrene */
        $mid = 4;

        /* Eksekver forespørgslen */
        $stmt->execute();

        /* Bind resultatet */
        $stmt->bind_result($id, $banner, $baggrund, $mailform, $menu, $undermenu, $overskrift, $tekst, $subtext, $billede, $hoejde, $bredde, $skrevetaf, $datotid, $boxid, $mid, $muid, $info_artid, $artu, $linkid, $url);
        while ($stmt->fetch()) {
            ?>
            <li><a href=""><?php echo $undermenu; ?></a>
        <ul>
        <?php
        $con = mysqli_connect("localhost","root","","syddanske");
// Check connection
if (mysqli_connect_errno())
{
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
// mysqli_select_db($mysqli, $database_mysqli ); // gøres i mysqli_connect
/* Se Info */
    if ($stmt1 = $con->prepare('SELECT `id`, `banner`, `baggrund`, `mailform`, `menu`, `undermenu`, `overskrift`, `tekst`, `subtext`, `billede`, `hoejde`, `bredde`, `skrevetaf`, `datotid`, `boxid`, `bioid`, `mid`, `artid`, `artu`, `linkid`, `url` FROM `opstilling` WHERE muid = ?' )) {
        /* Bind parametre */
        $stmt1->bind_param('i', $MU_muid);

        /* Sæt værdier på parametrene */
        $MU_muid = $id;

        /* Eksekver forespørgslen */
        $stmt1->execute();

        /* Bind resultatet */
        $stmt1->bind_result($MU_id, $MU_banner, $MU_baggrund, $MU_mailform, $MU_menu, $MU_undermenu, $MU_overskrift, $MU_tekst, $MU_subtext, $MU_billede, $MU_hoejde, $MU_bredde, $MU_skrevetaf, $MU_datotid, $MU_boxid, $MU_bioid, $MU_mid, $MU_artid, $MU_artu, $MU_linkid, $MU_url);
       
        while ($stmt1->fetch()) {
            ?>
    <li><a href=""><?php echo $MU_undermenu; ?></a></li>
            <?php }
    }
    ?>
            </ul></li>
<?php ;}}} ?>

Med venlig hilsen
Morten
Avatar billede arne_v Ekspert
23. marts 2017 - 22:59 #1
Maaske er det fordi at du bruger $con for begge connections?

$con1 og $con2 vil holde dem adskilt.
Avatar billede arne_v Ekspert
23. marts 2017 - 22:59 #2
Men kunne problemet ikke loeses med en enkelt SELECT via en JOIN?
Avatar billede Morten Professor
24. marts 2017 - 07:21 #3
Jeg prøvede at adskille de to con med en med con1 og con virkede desværre ikke.
Jeg prøvede på det join men kan ikke rigtig få det til at fungere.
Jeg ved ikke hvordan jeg sætter det op når jeg nu har select.
Avatar billede Morten Professor
24. marts 2017 - 08:31 #4
Join har jeg ikke brug har jeg?
Jeg har ikke to forskellige tabeller.
Avatar billede acore Ekspert
24. marts 2017 - 09:11 #5
Hvis det er samme tabel, du skal hente fra i de to SELECT, så bør du slette den anden connection, som arne er inde på.

Kan du komme med lidt mere info om hvad der kommer ud og hvad du har i din tabel. Uden flere oplysninger er det svært at hjælpe.
Avatar billede Morten Professor
24. marts 2017 - 09:31 #6
Det jeg forsøger på er at få alle id'er ud der kommer kun to id ud af 6.
Hvis jeg skriver id under  $MU_muid = $id; feks. 82 i stedet for "$id;" kommer dem alle frem.
Dem som skal være der.
Det er en menu jeg er ved at lave.
Avatar billede Morten Professor
24. marts 2017 - 09:51 #7
Hov der er slet ikke noget galt det hele er rigtig lavet.
Jeg er ved at forbedre en hjemmeside "Opgradere" Men havde taget fejl af to menuer. Der skulle slet ikke ære flere end de to.

Undskyld min fejl.

Tak for jeres input :o)

Med venlig hilsen
Morten
Avatar billede arne_v Ekspert
24. marts 2017 - 17:09 #8
Jeg undrer mig meget over at koden virker.

Hvis jeg laeser koden korrekt saa er det fundamentalt:


<?php
function alsiske_fluefiskere_menu($con, $AlsF_undermenu){
    if ($stmt = $con->prepare(...)) {
        ...
        $stmt->execute();
        ...
        while ($stmt->fetch()) {
            ...
            $con = mysqli_connect(...); // overskriver $con
            if ($stmt1 = $con->prepare(...)) {
                ...
                $stmt1->execute();
                ...
                while ($stmt1->fetch()) {
                    ...
                }
            }
        }
    }
}
?>
Avatar billede acore Ekspert
24. marts 2017 - 18:39 #9
Enig, men...

hvis der kun er en række med mid=4 og dermed kun et gennemløb af den første while, så går det måske?
Avatar billede arne_v Ekspert
24. marts 2017 - 18:55 #10
Med kun en raekke fra foerste SELECT saa skal det virke.

Maaske virker det ogsaa i andre tilfaelde. Jeg ved ikke nok om PHP til at vide hvad PHP/mysqli goer under motorhjelmen.

Men det er ihvertfald ikke god kode at overskrive $con paa den maade.
Avatar billede acore Ekspert
24. marts 2017 - 19:57 #11
Som altid har du fuldstændig ret!
Avatar billede Morten Professor
24. marts 2017 - 22:46 #12
Det med con har jeg rettet så der er to en med con og en med con1, så de ikke roder med hinanden.
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