Avatar billede tobrukDk Novice
28. maj 2012 - 19:22 Der er 25 kommentarer og
2 løsninger

opbyggen af eget forum - mysqli - php

hej

det er sådan at jeg skal have bygget mit eget forum og har en lille ide sådan hvordan jeg skal bygge det , men jeg er kommet frem til min første fejl og det er sådan at f.eks hvis der intet er ind i databasen skal den komme frem og sige "Der er intet indholde. Du er velkommen til at opret indhold".

jeg har prøve at bygge det sådan her op i mysqli . men det virker overhovedet ikke..

jeg håber du kan hjælp mig frem til det rigtigt sådan at problem bliver løset..  ;)

spørger hvis du gerne vil vide mere?


<?php
                    if ($stmt = $mysqli->prepare('SELECT id_forum, title, tekst, dato, id_brugere FROM `forum` ORDER BY `forum`.`id` DESC')) {
                    $stmt->execute();
                    $stmt->bind_result($id, $djnavn, $profilbillede);
                    while ($stmt->fetch()) {
                    ?>
                    <td class="titleforum"></td>
                    <td>Dato:</td>
                    <?php
                    }
                    $stmt->close();
                    }
                    elseif
                        ($result = $mysqli->query("SELECT id_forum, title, tekst, dato, id_brugere FROM `forum` ORDER BY `forum`.`id` DESC")) {
                        $row_cnt = $result->num_rows;
                        printf("<p>Der er intet indholde. Du er velkommen til at opret indhold</p>");
                        $result->close();
                    }
                    ?>
Avatar billede keysersoze Guru
28. maj 2012 - 19:28 #1
Nu fortæller du intet om hvad der sker - men umiddelbart ser det helt skævt ud at du har en elseif med præcis samme forespørgsel som i din if for så vil ingen af dem vel gå i opfyldelse og hvis så kun den første. Din elseif skal vel bare laves om til en else og altså uden din forespørgsel.
Avatar billede tobrukDk Novice
28. maj 2012 - 19:41 #2
Sorry, det var en fejl det er fordi jeg havde komme til at skrive for hurtigt så var den gået over på elseif.

kan det passe at jeg skulle gøre sådan her


}
                    $stmt->close();
                    }
                    else
                        $row_cnt = $result->num_rows;
                        printf("<p>Der er intet indholde. Du er velkommen til at opret indhold</p>");
                    ?>
Avatar billede tobrukDk Novice
28. maj 2012 - 20:01 #3
Det hjælp ikke fordi den siger det stadig om der er bruger eller ej. det som jeg lige har skrevet i #2
hmm skal have gjort så den kun skriver det hvis der ingen bruger er på siden..
Avatar billede keysersoze Guru
28. maj 2012 - 20:14 #4
Din SQL går forhåbentlig også godt så din else er kun til for hvis der opstår fejl - men går din SQL godt skal du nok kigge på antallet af rækker der returneres og hvis det er 0 skal du udskrive din tekst og ellers dine rækker. Kig på $count_res = $stmt->num_rows;
Avatar billede tobrukDk Novice
28. maj 2012 - 20:21 #5
nu har jeg prøve at gøre sådan her


else
                        $row_cnt = $result->num_rows;
                        print_r($row_cnt);


det skal sige at der er en brugere som har opret et. men vil intet sige selv om jeg slette den eller tilføje den eller hvad man skal sige :)
Avatar billede keysersoze Guru
28. maj 2012 - 21:22 #6
det forstod jeg desværre ikke meget af. Mit forslag gik på følgende;

if (DINSQL)
{
  if (ANTALRÆKKER == 0)
  {
    //ingen rækker
  }
  else
  {
    //gennemløb rækker
  }
}
else
{
//fejl
}
Avatar billede tobrukDk Novice
28. maj 2012 - 21:33 #7
Det hjælper ikke overhovedet på nogle måde.. hmm den siger stadig intet omkring det.. hmm
Avatar billede keysersoze Guru
28. maj 2012 - 21:53 #8
men hvad gør den i det hele taget?
Avatar billede tobrukDk Novice
28. maj 2012 - 22:18 #9
jeg har prøve at skrive f.eks title ud og der siger den title., og der efter har jeg slette den og den viser bare en tom box hmm
Avatar billede keysersoze Guru
28. maj 2012 - 22:23 #10
hvordan ser din kode ud
Avatar billede tobrukDk Novice
28. maj 2012 - 22:25 #11
der ske noget nu!


<?php
                    if ($stmt = $mysqli -> prepare('SELECT id_forum, title, tekst, dato, id_brugere FROM `forum`'))
                    {
                          mysqli_stmt_execute($stmt);
                        mysqli_stmt_store_result($stmt);

                        printf("Number of rows: %d.\n", mysqli_stmt_num_rows($stmt));

                          while ($stmt -> fetch())
                          {
                            echo "hej";
                          }
                          $stmt->close();
                    }
                    ?>
Avatar billede tobrukDk Novice
28. maj 2012 - 22:33 #12
sådan her ser den ud 100%

<?php
                    if ($stmt = $mysqli -> prepare('SELECT id_forum, title, tekst, dato, id_brugere FROM `forum`'))
                    {
                        $stmt->execute();
                        $stmt->store_result();
                        $stmt->bind_result($id_forum, $title, $tekst, $dato, $id_brugere);
                        $stmt->store_result();
                        $stmt->num_rows;
                        if($stmt == 0)
                        {
                            echo "hej 2";
                        }                       
                        else
                        {
                           
                            while($stmt->fetch())
                            {
                            ?>
                            <td class="titleforum"></td>
                              <td>Dato:</td>
                            <?php
                            }
                        }
                          $stmt->close();
                    }
                    ?>
Avatar billede tobrukDk Novice
28. maj 2012 - 22:35 #13

<?php
                    if ($stmt = $mysqli -> prepare('SELECT id_forum, title, tekst, dato, id_brugere FROM `forum`'))
                    {
                        $stmt->execute();
                        $stmt->num_rows;
                        if($stmt == 0)
                        {
                            echo "hej 2";
                        }                       
                        else
                        {
                            $stmt->store_result();
                            $stmt->bind_result($id_forum, $title, $tekst, $dato, $id_brugere);
                            while($stmt->fetch())
                            {
                            ?>
                            <td class="titleforum"></td>
                              <td>Dato:</td>
                            <?php
                            }
                        }
                          $stmt->close();
                    }
                    ?>

men nu vil den ikke sige om der om der et eller ligne, det vil den heller ikke med #13 men #11 der vil den gerne sige hvor mange der var ind i? altså hvor mange der var?
Avatar billede tobrukDk Novice
28. maj 2012 - 22:48 #14
intet af det hjælper overhovedet.. hmmm
Avatar billede keysersoze Guru
28. maj 2012 - 23:02 #15
nu er jeg ikke PHP-mand, men mon ikke du får blandet en masse ting sammen i og med at du hele tiden overskriver den samme variabel, stmt, og også kun skriver halvdelen af hvad jeg foreslår.

$stmt->execute();
$row_cnt = $result->num_rows;
if($row_cnt == 0)
{
  echo "hej 2";
}                       
else
{
  echo "hej 1";
  //do your stuff
}
Avatar billede tobrukDk Novice
28. maj 2012 - 23:05 #16
Nej fordi ved ikke om du har læse / kigge på den guid olebole har lavet der gøre han det samme som jeg også gøre ,

men jeg er kommet frem til det næsten virker nu


<?php
            if ($stmt = $mysqli->prepare('SELECT id_forum, title, tekst, dato, id_brugere FROM `forum`')) {    {
            $stmt->execute();
            $stmt->store_result();
            $stmt->bind_result($id_forum, $title, $tekst, $dato, $id_brugere);
            $stmt->fetch();
            $count_res = $stmt->num_rows;
            $stmt->close();
                if($count_res == 1)
                {
               
            ?>
            <td class="titleforum"><?php echo $title;?></td>
            <td>Dato:</td>
            <?php
                }
            else
                {
                    echo "der er ingen overhovedet!.. hmm";
                }
            }
            }
            ?>


dog der i mode skal jeg bare have sæt

while($stmt->fetch())

Sådan at når brugere opret et forum indlæg så kommer det frem så det ikke kun er sådan der.. eller hvad man skal sige :D

Men det er f**king godt at det næsten virker nu, men nu skal jeg bare have sæt den der på.. :)
Avatar billede tobrukDk Novice
28. maj 2012 - 23:05 #17
Du kan læse det her http://www.eksperten.dk/guide/1480
Avatar billede keysersoze Guru
28. maj 2012 - 23:25 #18
så vidt jeg kan se arbejder han med forskellige variabelnavne hver gang der er behov for det og derfor opstår der ingen problemer.
Avatar billede tobrukDk Novice
28. maj 2012 - 23:35 #19
ja okay, men #16 den virker nu 100% men dog skal jeg bare have fundt ud af bygge sådan at der kommer while($stmt->fetch()) på . :)
Avatar billede keysersoze Guru
29. maj 2012 - 00:26 #20
Hvis der kan være mere end én - og det kunne din SQL tyde på - så skal du nok ikke skrive if($count_res == 1) og du skal nok heller ikke close før du laver din løkke - så prøv at følge hans guide lidt mere minutiøst.
Avatar billede tobrukDk Novice
29. maj 2012 - 14:02 #21
Ja okay. Jeg vil lige prøve at kigge på det når jeg kommer hjem
Avatar billede tobrukDk Novice
29. maj 2012 - 23:04 #22
jamen hvad mener du sådan helt? jeg forstår det ikke lige helt?
Avatar billede tobrukDk Novice
29. maj 2012 - 23:11 #23
prøve vise hvad du mener eller ligne jeg forstår den ikke lige helt.. hmm
Avatar billede tobrukDk Novice
30. maj 2012 - 15:37 #24

<?php
            if ($stmt = $mysqli->prepare('SELECT id_forum, title, tekst, dato, id_brugere FROM `forum`'))
            {
            $stmt->execute();
            $stmt->store_result();
            $stmt->bind_result($id_forum, $title, $tekst, $dato, $id_brugere);
            $count_res = $stmt->num_rows;
           
            if($count_res > 0)
            {
            ?>
            <h3 class="toptitlecontent">Forum Indhold</h3>
            <?php
            while ($stmt->fetch()) {   
            ?>
            <tr class="forumtoppen">
            <td class="titleforum"><?php echo $title;?></td>
            <td>Dato:<?php echo $dato;?></td>
            </tr>
            <?php
                }
                }
            else
                {
                ?>
                    <h3 class="toptitlecontent">Intet Forum indlæg på siden.</h3>
                    <p>der er ingen overhovedet!.. hmm</p>
                <?php
                }
            }
            ?>

det virker nu som jeg gerne vil have det :D lækkert man!..

lige et svar så del vi det ! :D
Avatar billede keysersoze Guru
30. maj 2012 - 18:13 #25
det ser også rimelig rigtigt ud! Jeg vil dog stadig foreslå at du tager et sidste kig på den artikel du henviser til - så vidt jeg kan se mangler du stadig et lukke forbindelsen til databasen som i artiklen, og det kan have nogle performancemæssige udfordringer.
Avatar billede tobrukDk Novice
30. maj 2012 - 19:15 #26
det har jeg gjordt og det så jeg også lige efter jeg har sendt den :) men den er lukket nu :)
Avatar billede tobrukDk Novice
30. maj 2012 - 19:16 #27
Du fik 20 og jeg tog 10 for at jeg selv klare den og du fik 20 for at have hjælp mig utrolig godt :D
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
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

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