Avatar billede dmy Nybegynder
27. februar 2009 - 08:02 Der er 13 kommentarer og
1 løsning

hjælp! form til kommentar med vertifikation

Det her er et kæmpe råb om hjælp

jeg har denne her side

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

Nederst på siden kan mit problem ses.

Jeg har en formular som skal være den, man skal kunne skrive kommentarer i. Problemer er at den skal figurere under hver nyhed, efter de kommentarer der allerede er skrevet ind.

Samtidig skal jeg have at formen selvfølgelig gemmer sig knyttet til den bestemte nyhed, hvor gør jeg mon det?

Ja en tredje ting er også at jeg skal have den til at virke sammen med vertifikationskoden.


Det her er min kode sammen med formen, den er noget meget mangelfuld.

<?php
                //Indsætter indholdet af formularfelterne i databasen når man submitter
if(isset($_POST["Submit_mee"]))
{
               
$komnavn=$_POST["komnavn"];
$komemail=$_POST["komemail"];
$besked=$_POST["besked"];
$fk_indhold_id=$_POST["fk_indhold_id"];


mysql_query("INSERT INTO news_kommentar (komnavn, komemail, besked, fk_indhold_id)VALUES('".secure($komnavn)."', '".secure($komemail)."', '".secure($besked)."', '".secure($fk_indhold_id)."')") or die(mysql_error());

echo "Kommentaren er gemt";
}
?>


<form method='post' action=''>
<table width="424" border="0">
  <tr>
    <td width="97">Navn:</td>
    <td width="311"><input type='text' rows='2' name='komnavn' id='komnavn' /><br /></td>
  </tr>
  <tr>
    <td>Email:</td>
    <td><input type='text' rows='2' name='komemail' id='komemail' />
      <br /></td>
  </tr>
  <tr>
    <td>Kommentar:</td>
    <td><textarea name="besked" rows="8" cols="20" style="width:300px; margin-top:0px;margin-bottom:5px;"></textarea></td>
    <td width="10">&nbsp;</td>
  </tr>
  <tr>
      <td></td>
    <td><img src="veri/CaptchaSecurityImages.php" style="margin-top: 0.5em;"  /><br /><br /></td>
  </tr>
  <tr>
    <td>Indtast kode:</td>
    <td><input id="security_code" name="security_code" type="password" /><br /><br /></td>
  </tr>
  <tr>
    <td>&nbsp</td>
    <td><input type='submit' name='Submit_mee' value='Gem' /></td>
  </tr>
</table>
</form>


Her er min kode på resten af siden.
_________________________________________________________________


  <?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>';
}?>
 

<?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 ") 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>
           
    ';                             $comments = mysql_query("SELECT * FROM news_kommentar WHERE fk_indhold_id = $row[indID]") 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
27. februar 2009 - 08:23 #1
du skal indsætte formen i slutningen af den while der løber nyhederne igennem.

men du skal nok have delt filen med formen lidt op, så du ikke har scriptet hvor den smider i db, mere end én gang.

du kan smide db-delen i toppen af siden med nyheder og så formdelen ind i wile-løkken som skrevet ovenfor.
Avatar billede Vezul Nybegynder
27. februar 2009 - 08:28 #2
For at knytte en kommentar til en bestemt nyhed, vil jeg foreslå at lave en <input type="hidden" value="ID PÅ NYHED"> til kommentar, på den måde kan du når du får flere forms, med en while (som splazz foreslog) bruge den hidden værdi i din MySQL til at knytte til den rigtige nyhed :) Håber det giver mening.
Avatar billede majbom Novice
27. februar 2009 - 08:37 #3
-> #2 - ja, den havde jeg lige glemt :)

du kan gøre som #2 foreslår her:

<td>&nbsp</td>
<td><input type='submit' name='Submit_mee' value='Gem' /></td>

og skrive:

<td>&nbsp</td>
<td><input type="hidden" value="$row[indID]" name="fk_indhold_id"><input type='submit' name='Submit_mee' value='Gem' /></td>
Avatar billede dmy Nybegynder
27. februar 2009 - 09:04 #4
Tusind tak indtil videre ;-) jeg tror jeg lige vil prøve mig lidt frem efter jeres gode råd..
Avatar billede majbom Novice
27. februar 2009 - 09:50 #5
selv tak, du vender bare tilbage når det driller ;)
Avatar billede dmy Nybegynder
27. februar 2009 - 10:28 #6
Skal have udskrevet så den skriver fejl når ingen felter er udfyldt, så den fx skriver kommentar er ikke udfyldt

min kode er her

  <?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"];



// 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';


            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');
            }

        }


    }

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


}


?>
Avatar billede majbom Novice
27. februar 2009 - 10:38 #7
ret:

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');
            }


til:

  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{
header('location:'.$_SERVER['SCRIPT_NAME'].'?error=FEJL');
Avatar billede dmy Nybegynder
27. februar 2009 - 10:45 #8
Det gjorde ikke rigtig noget forskel hmm

Nu prøvede jeg det her. Men synes måske det er irriterende at det kommer oppe i toppen af siden, kan det mon ændres?

<?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['komname']))
            $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 "<p><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>";
           
            }

        }


    }

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


}


?>
Avatar billede dmy Nybegynder
27. februar 2009 - 10:57 #9
Nåh hehe nu har jeg selv fundet ud af det ;-)

Jamen så er problemet løst

smid et svar
Avatar billede dmy Nybegynder
27. februar 2009 - 11:05 #10
hmm okey vent lige har et problem igen

Nu når jeg skriver ind så laver den 4 ens kommentarer, hvad er der lige sket???

http://www.dianadesign.dk/nyhedssystemet/medkommentar.php
Avatar billede dmy Nybegynder
27. februar 2009 - 11:25 #11
hehe jeg fandr ud af det igen.


NU skal jeg nok stoppe ;-)
Avatar billede majbom Novice
27. februar 2009 - 11:34 #12
ja, den skulle lige en tuborg længere ned den else...

smid lige selv et svar og behold nogle af pointene :)
Avatar billede Vezul Nybegynder
27. februar 2009 - 12:12 #13
Igen til mig :(? :p
Avatar billede majbom Novice
27. februar 2009 - 12:46 #14
-> #13 - du smider bare et svar, hvis du mener at du har fortjent point, så er det op til spørger at vurdere... :)
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