Avatar billede dmy Nybegynder
02. marts 2009 - 12:58 Der er 27 kommentarer og
1 løsning

Hjælp... min form virker ikke på bestemt indhold

Hmm ja nu er jeg her igen..

http://www.dianadesign.dk/nyhedssystemet/

Jeg skal have lavet det sådan at man skal kunne trykke på et link eks. "kommentar virker ikke", og så skal den kun vise den valgte nyhed, lige nu kan man trykke på linket og se kommentarer men koden til at lave en ny "kommentar virker ikke".. det er lige så snart jeg sætter den ind sammen med koden hvor siden kun viser den valgte nyhed at den ikke virker?

Linket "kommentar virker" er nemlig alle nyheder samt kommentar og mulighed for nye kommentar. Men jeg skal kun have det sådan at man skal kunne vælge en nyhed og se den ene valgte nyhed samt kommentar og selvfølgelig kunne skrive en ny kommentar til den.

min formkode
________________________________________________________________

  <?php
                //Indsætter indholdet af formularfelterne i databasen når man submitter
if(isset($_POST["Submit_mee"]))
{
                //skaber forbindelse til databasen

                //henter indholdet af formularens felter
$komnavn=$_POST["komnavn"];
$komemail=$_POST["komemail"];
$besked=$_POST["besked"];
$fk_indhold_id=$_POST["fk_indhold_id"];

        // Hvis formen er submitted/POST'et
        if ($_SERVER['REQUEST_METHOD'] == 'POST')
   
    {
        // Error checking
        $errors = array();

        // Sikkerheds kode
          if (($_SESSION['security_code'] != $_POST['security_code']) || empty($_SESSION['security_code']))
              $errors[] = 'Sikkerheds kode';
        // if email is given, it should be valid
        if (trim($_POST['komemail']))
            if (!preg_match("/^([\w|\.|\-|_]+)@([\w||\-|_]+)\.([\w|\.|\-|_]+)$/i", trim($_POST['komemail'])))
                $errors[] = 'E-Mail';
               
                // resten
        if (!trim($_POST['besked']))
            $errors[] = 'Besked';
        if (!trim($_POST['komnavn']))
            $errors[] = 'Navn';
       
        foreach ($_POST as $key => $value)
            $_POST[$key] = stripslashes($value);

            if (!count($errors))
           
        {
            if (@mysql_query("INSERT INTO news_kommentar (komnavn, komemail, besked, fk_indhold_id) VALUES ('" . mysql_real_escape_string($_POST['komnavn']) . "', '" . mysql_real_escape_string($_POST['komemail']) . "', '" . mysql_real_escape_string($_POST['besked']) . "','" . mysql_real_escape_string($_POST['fk_indhold_id']) . "')")) {
                header('Location: ' . $_SERVER['SCRIPT_NAME'] . '?saved=ok');
           
            }
        } else {
            print "<br /><br /><p><hr /><b>F&oslash;lgende felter er ikke udfyldt korrekt:</b><br /><ul>";
            foreach ($errors as $err) {
                printf("<li>%s</li>\n", $err);
            }
            print "</ul></p><hr /><br /><br />";
           
            }

        }


    }

    if ($_GET['saved'] == 'ok') {


}


?>

min kode på den side hvor den vælge en bestemt nyhed
_________________________________________________________________

<?php
$ID=$_GET['indID'];
       
        $news = mysql_query ("SELECT * FROM news_indhold
       
        INNER JOIN news_kategori ON news_indhold.fk_kategori_id = katID
        INNER JOIN news_bruger ON news_indhold.fk_bruger_id = bruID
       
        WHERE news_indhold.indID = $ID ") or die (mysql_error());            //ALLE NYHEDERNE


        while($row = mysql_fetch_assoc($news))
            {
$t=strtotime($row['dato']);
$dato=date("j/n-Y H:i",$t);                           
    echo 
                                                   
            '
           
                <div id="post_main">
                        <div id="news_kategori">Kategori '.$row['katnavn'].'</div><br /><br />
                        <div id="news_overskrift">'.$row['overskrift'].'</div><br /><br />
                        <div id="news_tekst">'.$row['artikel'].'</div><br />
                        <div id="dato_skribent">
                        <span class="news_dato">'.$dato.'</span>  <span class="news_skribent">'.$row['skribentnavn'].'</span> 
                        <a href="medkommentar.php">Kommentar</a>
                      </div><br />
                </div>
            ';
            include ("form.php");
               
           
           
        $comments = mysql_query("SELECT * FROM news_kommentar WHERE fk_indhold_id = $row[indID] ORDER BY komID DESC") or die(mysql_error());
               
                while($comm = mysql_fetch_assoc($comments))
                {
$t=strtotime($comm['komdato']);
$komdato=date("j/n-Y H:i",$t);   

                  echo '   
                         
                            <div id="kommentar">
                            <h1>Kommentar</h1><br />
                           
                            <div>'.$comm['besked'].'</div><br />
                            <div id="kom_pers_dato"><span class="komnavn">'.$comm['komnavn'].'</span> <span class="komdato">'.$komdato.'</span></div>
                            <div id="kom_email"><span class="komemail">'.$comm['komemail'].'</span></div>
                       
                       
                    </div>


   
                        ';
                }


       
   
} ?>
Avatar billede majbom Novice
02. marts 2009 - 13:22 #1
kan du ikke poste helekoden i nyhed.php?
Avatar billede dmy Nybegynder
02. marts 2009 - 13:25 #2
Nu har jeg smækket koden sammen, du finder den under linket tester.
Avatar billede dmy Nybegynder
02. marts 2009 - 13:27 #3
Jeg kan se at den virker for den gemmer kommentaren men den kommen med denne

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 6
Avatar billede majbom Novice
02. marts 2009 - 13:45 #4
jeg kan ikke se kildekoden via browseren...

du skal have ' rundt om $ID i din sql-sætning
Avatar billede majbom Novice
02. marts 2009 - 13:45 #5
ellers står der:

... WHERE id =

når indID er tomt. der skal stå:

... WHERE id = ''

før det virker
Avatar billede dmy Nybegynder
02. marts 2009 - 13:53 #6
okey jeg prøver lige
Avatar billede dmy Nybegynder
02. marts 2009 - 13:58 #7
den virker da men forstår ikke hvorfor den ikke så går tilbage til at vise kommentaren hmm det kan den måske ikke?
Avatar billede majbom Novice
02. marts 2009 - 14:04 #8
det er den query hvor du henter kommentarer der er fejl i, så kan den naturligvis ikke hente kommentarene...
Avatar billede dmy Nybegynder
02. marts 2009 - 14:11 #9
nåh hmm det er da sært, den er helt ens med den som virker
Avatar billede majbom Novice
02. marts 2009 - 14:29 #10
henter den alle nyheder? (den der virker)
Avatar billede dmy Nybegynder
02. marts 2009 - 14:39 #11
ja den henter alle nyheder samt kommentarer og mulighed for nye kommentarer.

du kan selv se siden under linket kommentar virker
Avatar billede majbom Novice
02. marts 2009 - 14:42 #12
ja, jeg kan godt se den virker, men jeg kan jo ikke se din kode :)
Avatar billede dmy Nybegynder
02. marts 2009 - 14:43 #13
<?php
                //Indsætter indholdet af formularfelterne i databasen når man submitter
if(isset($_POST["Submit_mee"]))
{
                //skaber forbindelse til databasen

                //henter indholdet af formularens felter
$komnavn=$_POST["komnavn"];
$komemail=$_POST["komemail"];
$besked=$_POST["besked"];
$fk_indhold_id=$_POST["fk_indhold_id"];

        // Hvis formen er submitted/POST'et
        if ($_SERVER['REQUEST_METHOD'] == 'POST')
   
    {
        // Error checking
        $errors = array();

        // Sikkerheds kode
          if (($_SESSION['security_code'] != $_POST['security_code']) || empty($_SESSION['security_code']))
              $errors[] = 'Sikkerheds kode';
        // if email is given, it should be valid
        if (trim($_POST['komemail']))
            if (!preg_match("/^([\w|\.|\-|_]+)@([\w||\-|_]+)\.([\w|\.|\-|_]+)$/i", trim($_POST['komemail'])))
                $errors[] = 'E-Mail';
               
                // resten
        if (!trim($_POST['besked']))
            $errors[] = 'Besked';
        if (!trim($_POST['komnavn']))
            $errors[] = 'Navn';
       
        foreach ($_POST as $key => $value)
            $_POST[$key] = stripslashes($value);

            if (!count($errors))
           
        {
            if (@mysql_query("INSERT INTO news_kommentar (komnavn, komemail, besked, fk_indhold_id) VALUES ('" . mysql_real_escape_string($_POST['komnavn']) . "', '" . mysql_real_escape_string($_POST['komemail']) . "', '" . mysql_real_escape_string($_POST['besked']) . "','" . mysql_real_escape_string($_POST['fk_indhold_id']) . "')")) {
                header('Location: ' . $_SERVER['SCRIPT_NAME'] . '?saved=ok');
           
            }
        } else {
            print "<br /><br /><p><hr /><b>F&oslash;lgende felter er ikke udfyldt korrekt:</b><br /><ul>";
            foreach ($errors as $err) {
                printf("<li>%s</li>\n", $err);
            }
            print "</ul></p><hr /><br /><br />";
           
            }

        }


    }

    if ($_GET['saved'] == 'ok') {


}


?>
 
    <h1>Se alle kategorier</h1>

 
  <?php $kats_res = mysql_query ("SELECT * FROM news_kategori");

while($kats_row=mysql_fetch_assoc($kats_res)){
          echo
        '
        <a href="kategori.php?katID='.$kats_row['katID'].'">
        <span class="kategorier">'.$kats_row['katnavn'].' </span></a>';
}?>
<br />
<br /><br /><h1>Sidste nye artikler</h1><br />
 
 
 
 
 
 
  <?php

        $news = mysql_query ("SELECT * FROM news_indhold
       
        INNER JOIN news_kategori ON news_indhold.fk_kategori_id = katID
        INNER JOIN news_bruger ON news_indhold.fk_bruger_id = bruID
       
        WHERE news_indhold.indID = indID ORDER BY indID DESC ") or die (mysql_error());            //ALLE NYHEDERNE


        while($row = mysql_fetch_assoc($news))
            {
$t=strtotime($row['dato']);
$dato=date("j/n-Y H:i",$t);   

                   
    echo 
                                                   
            '
           
               
                    <div id="post_main">
                        <div id="news_kategori">Kategori '.$row['katnavn'].'</div><br /><br />
                        <div id="news_overskrift">'.$row['overskrift'].'</div><br /><br />
                        <div id="news_tekst">'.$row['artikel'].'</div><br />
                        <div id="dato_skribent">
                            <span class="news_dato">'.$dato.'</span>  <span class="news_skribent">'.$row['skribentnavn'].'</span> 
                           
                      </div><br />
                </div>
            ';
            include ("form.php"); //'.$row['email'].' INDSÆT HVIS EMAIL SKAL VISES !!! HUSK STYLING CSS LINIE 107
                //<span class="comment"><a href="#">Kommentar</a></span>
           
           
           
           
           
           
            $comments = mysql_query("SELECT * FROM news_kommentar WHERE fk_indhold_id = $row[indID] ORDER BY komID DESC") or die(mysql_error());
               
                while($comm = mysql_fetch_assoc($comments))
                {
$t=strtotime($comm['komdato']);
$komdato=date("j/n-Y H:i",$t);   

                  echo '   
                         
                            <div id="kommentar">
                            <h1>Kommentar</h1><br />
                           
                            <div>'.$comm['besked'].'</div><br />
                            <div id="kom_pers_dato"><span class="komnavn">'.$comm['komnavn'].'</span> <span class="komdato">'.$komdato.'</span></div>
                            <div id="kom_email"><span class="komemail">'.$comm['komemail'].'</span></div>
                       
                       
                    </div>


   
                        ';
                }



   
}?>
Avatar billede majbom Novice
02. marts 2009 - 14:57 #14
der bruger du heller ikke en variabel i din WHERE-del...
Avatar billede dmy Nybegynder
02. marts 2009 - 14:59 #15
jeg forstår det ikke, for den virker jo.
Avatar billede majbom Novice
02. marts 2009 - 15:03 #16
ja, men de 2 queries er jo eller ikke 100% ens...

hvor du kun henter én nyhed (hvis $id er sat):

$news = mysql_query ("SELECT * FROM news_indhold
       
        INNER JOIN news_kategori ON news_indhold.fk_kategori_id = katID
        INNER JOIN news_bruger ON news_indhold.fk_bruger_id = bruID
       
        WHERE news_indhold.indID = $ID ") or die (mysql_error());            //ALLE NYHEDERNE


hvor du henter alle nyheder (det du siger virker):

$news = mysql_query ("SELECT * FROM news_indhold
       
        INNER JOIN news_kategori ON news_indhold.fk_kategori_id = katID
        INNER JOIN news_bruger ON news_indhold.fk_bruger_id = bruID
       
        WHERE news_indhold.indID = indID ORDER BY indID DESC ") or die (mysql_error());            //ALLE NYHEDERNE

i første eksempel skriver du:

WHERE news_indehold.indID = $ID

dvs at den leder efter nyheden som har det id du skriver i adresselinjen.

i andet eksempel skriver du:

WHERE news_indhold.indID = indID

indID er faktisk feltet selv, så det giver ikke nogen mening at have WHERE-delen på, når du alligevel skal have alle poster fra databasen ud...
Avatar billede dmy Nybegynder
03. marts 2009 - 08:08 #17
Jo det tror jeg nogenlunde jeg forstår, men hvordan hjælper det problemet.

Jeg skal jo have den til at gøre det ud fra kun et indhold, alle skal ikke trækkes ud, den siden som henter alle ud og hvor man også kan kommentere, den skal jeg slet ikke bruge.

Det skal kun være så man kan se kommentarer og kan kommenterer på kun et indhold, som når man trykker på linket der hedder tester.


Det er lige præcis når man trykker gem i kommentarfeltet at den bare er blank og skriver saved ok oppe i url'en. Den skal gemme som siden gør den hvor linker er kommentar virker
Avatar billede majbom Novice
03. marts 2009 - 09:25 #18
okay, i stedet for denne linje:

$ID=$_GET['indID'];

skriver du:

$ID=$_REQUEST['indID'];

og i din form sætter du fælgende linje ind:

<input type="hidden" value="<?php echo $ID;?>" name="indID">
Avatar billede dmy Nybegynder
03. marts 2009 - 10:12 #19
hmm det virker ikke, den bliver stadig blank efter man har skrevet kommentar.

http://www.dianadesign.dk/nyhedssystemet/nyhed2.php?indID=34
Avatar billede majbom Novice
03. marts 2009 - 10:23 #20
må jeg se koden som den ser ud nu?
Avatar billede dmy Nybegynder
03. marts 2009 - 11:49 #21
<?php
    if(isset($_POST["Submit_mee"]))
{
               
$komnavn=$_POST["komnavn"];
$komemail=$_POST["komemail"];
$besked=$_POST["besked"];
$fk_indhold_id=$_POST["fk_indhold_id"];

        // Hvis formen er submitted/POST'et
        if ($_SERVER['REQUEST_METHOD'] == 'POST')
   
    {
        // Error checking
        $errors = array();

        // Sikkerheds kode
          if (($_SESSION['security_code'] != $_POST['security_code']) || empty($_SESSION['security_code']))
              $errors[] = 'Sikkerheds kode';
        // if email is given, it should be valid
        if (trim($_POST['komemail']))
            if (!preg_match("/^([\w|\.|\-|_]+)@([\w||\-|_]+)\.([\w|\.|\-|_]+)$/i", trim($_POST['komemail'])))
                $errors[] = 'E-Mail';
               
                // resten
        if (!trim($_POST['besked']))
            $errors[] = 'Besked';
        if (!trim($_POST['komnavn']))
            $errors[] = 'Navn';
       
        foreach ($_POST as $key => $value)
            $_POST[$key] = stripslashes($value);

            if (!count($errors))
           
        {
            if (@mysql_query("INSERT INTO news_kommentar (komnavn, komemail, besked, fk_indhold_id) VALUES ('" . mysql_real_escape_string($_POST['komnavn']) . "', '" . mysql_real_escape_string($_POST['komemail']) . "', '" . mysql_real_escape_string($_POST['besked']) . "','" . mysql_real_escape_string($_POST['fk_indhold_id']) . "')")) {
                header('Location: ' . $_SERVER['SCRIPT_NAME'] . '?saved=ok');
           
            }
        } else {
            print "<br /><br /><p><hr /><b>F&oslash;lgende felter er ikke udfyldt korrekt:</b><br /><ul>";
            foreach ($errors as $err) {
                printf("<li>%s</li>\n", $err);
            }
            print "</ul></p><hr /><br /><br />";
           
            }

        }


    }

    if ($_GET['saved'] == 'ok') {


}


?>



    <h1>Se alle kategorier</h1>
   
  <?php $kats_res = mysql_query ("SELECT * FROM news_kategori");

while($kats_row=mysql_fetch_assoc($kats_res)){
          echo
        '
        <a href="kategori.php?katID='.$kats_row['katID'].'">
        <span class="kategorier">'.$kats_row['katnavn'].' </span></a>';
}?>
<br />
<br /><br /><h1>Sidste nye artikler</h1><br />
 
 
    <?php
$ID=$_REQUEST['indID'];
       
        $news = mysql_query ("SELECT * FROM news_indhold
       
        INNER JOIN news_kategori ON news_indhold.fk_kategori_id = katID
        INNER JOIN news_bruger ON news_indhold.fk_bruger_id = bruID
       
        WHERE news_indhold.indID = '$ID' ") or die (mysql_error());           

        while($row = mysql_fetch_assoc($news))
            {
$t=strtotime($row['dato']);
$dato=date("j/n-Y H:i",$t);                           
    echo 
                                                   
            '
           
                <div id="post_main">
                        <div id="news_kategori">Kategori '.$row['katnavn'].'</div><br /><br />
                        <div id="news_overskrift">'.$row['overskrift'].'</div><br /><br />
                        <div id="news_tekst">'.$row['artikel'].'</div><br />
                        <div id="dato_skribent">
                        <span class="news_dato">'.$dato.'</span>  <span class="news_skribent">'.$row['skribentnavn'].'</span> 
                       
                      </div><br />
                </div>
            ';
            include ("form.php");
               
           
           
        $comments = mysql_query("SELECT * FROM news_kommentar WHERE fk_indhold_id = $row[indID] ORDER BY komID DESC") or die(mysql_error());
               
                while($comm = mysql_fetch_assoc($comments))
                {
$t=strtotime($comm['komdato']);
$komdato=date("j/n-Y H:i",$t);   

                  echo '   
                         
                            <div id="kommentar">
                            <h1>Kommentar</h1><br />
                           
                            <div>'.$comm['besked'].'</div><br />
                            <div id="kom_pers_dato"><span class="komnavn">'.$comm['komnavn'].'</span> <span class="komdato">'.$komdato.'</span></div>
                            <div id="kom_email"><span class="komemail">'.$comm['komemail'].'</span></div>
                       
                       
                    </div>


   
                        ';
                }


       
   
} ?>
Avatar billede majbom Novice
03. marts 2009 - 11:55 #22
du har heller ikke sat den hidden input ind som jeg skrev...
Avatar billede dmy Nybegynder
03. marts 2009 - 12:02 #23
jo i min form jo, var det ikke i den den skulle være?
Avatar billede dmy Nybegynder
03. marts 2009 - 12:03 #24
<form method='post' action=''>
<table width="424" border="0">
  <tr>
    <td width="97">Navn:</td>
    <td width="311"><input type='text' name='komnavn' id='komnavn' /><br /></td>
  </tr>
  <tr>
    <td>Email:</td>
    <td><input type='text' name='komemail' id='komemail' /></td>
  </tr>
  <tr>
    <td>Kommentar:</td>
    <td><textarea name="besked" rows="4" cols="30"></textarea></td>
  </tr>
  <tr>
      <td></td>
    <td><img src="veri/CaptchaSecurityImages.php" style="margin-top: 0.5em;"  /><br /></td>
  </tr>
  <tr>
    <td>Indtast kode:</td>
    <td><input id="security_code" name="security_code" type="password" /><br /></td>
  </tr>
  <tr>
    <td></td>
    <td><input type="hidden" value="<?php echo $row['indID']?>" name="fk_indhold_id">
    <input type="hidden" value="<?php echo $ID;?>" name="indID">
    <input type='submit' name='Submit_mee' value='Gem' /></td>
  </tr>
</table>
</form>
Avatar billede majbom Novice
03. marts 2009 - 12:17 #25
nååh ja...

det ser ellers rigtigt ud...
Avatar billede majbom Novice
03. marts 2009 - 12:24 #26
prøv at ændre:

header('Location: ' . $_SERVER['SCRIPT_NAME'] . '?saved=ok');

til

header('Location: ' . $_SERVER['SCRIPT_NAME'] . '?saved=ok&indID='.$fk_indhold_id);
Avatar billede dmy Nybegynder
03. marts 2009 - 12:31 #27
Du er genial! I love U hahahahahahahaha

point er givet ;-)
Avatar billede majbom Novice
03. marts 2009 - 12:42 #28
well, synes nu det var lidt ringe. men jeg blevt forvirret af at du havde postet koden til 2 filer lige efter hinanden tror jeg.

så du kan godt fjerne det der hidden input felt igen der hedder "indID"

og tak for point :)
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