Autor Zpráva
Dawe97
Profil
Dělám do školy projekt a nefunguje mi část s komentáři. Nefunguje výpis ani zápis do databáze

 <?php
 session_start();
include 'db_spojeni.php';
require_once ("nbbc/nbbc.php");
 ?>
<!DOCTYPE html>

<html>
    <head>
        <script src="jsn/jquery.js" type="text/javascript"></script>
        <script src="jsn/main.js" type="text/javascript"></script>
        <link rel="shortcut icon" href="/obrazky/favicon.ico" type="image/x-icon" />
        <link href="styl.css" rel="stylesheet" type="text/css"/>
        <title>Blogger</title>
        <meta charset="UTF-8">
        
        
    </head>
    <body>
        
        <div id="obal">
            
            <img class="logo" src="obrazky/logo.png" alt=""/>
            
            
            <img class="citat" src="obrazky/citat.png" alt=""/>
      
      
      
      
           
      <?php

    
  
        
        
        
     $con=mysqli_connect("###", "###", "###", "###");
     
      
      $bbcode = new BBCode;
      
      $sql = "SELECT * FROM prispevek ORDER BY id DESC";
      
      
      $res = mysqli_query($db_spojeni, $sql) or die(mysqli_error($db_spojeni));
      
      
      
      
      
      $posts = "";
      
      
      
      
      
      if(mysqli_num_rows($res) > 0) 
      {
          while($row = mysqli_fetch_assoc($res)) 
          {
              $id = $row['id'];
              $prispevek_nadpis = $row['prispevek_nadpis'];
              $autor = $row['autor'];
              $text = $row['text'];
              
               
              
              
              $output = $bbcode->Parse($text);
              
              
              $posts .= "<div class='prispevky'><h2>$prispevek_nadpis</h2><p class='autor2'><span class='autor'>Autor:</span>$autor</p><p class='clanek'>$text</p>
              
               
              <form class='formular_kom' action=index.php method='post' enctype='multipart/form-data'>
            <textarea placeholder='komentář' name='text_kom' rows='10' cols='50'></textarea><br />
            <input class='tlac_kom' name='submit' type='submit' value='okomentovat'>
           
            </form>     
              
              
             </div>";
              }
              
              echo $posts;
            
              
                 }else {
          echo "nejsou prispevky";
      }
      
      
      
      
// komentáře     
      
      if(isset($_POST['submit']))
{
    
    
    $text_kom = strip_tags($_POST['text_kom']);
    
    
    
    
    $text_kom = mysqli_real_escape_string($db_spojeni, $_POST['text_kom']);
    
   
    
   
    
    
    $kom = "INSERT INTO komentar (id_kom,cislo_prispevek,text_kom) VALUES('','',$text_kom')";
    
    
    
    
    if($text_kom == "")
    {
        echo "<span class='chyba_kom'> prosím vyplňte textové pole </span>";
        
    }  else {
        
   
    
    mysqli_query($db_spojeni, $kom);
    
    
 }    
}

$kom = "SELECT * FROM komentar ORDER BY id_kom DESC";
$vys = mysqli_query($db_spojeni, $kom) or die(mysqli_error($db_spojeni));
$coments = "";
       
              
              if(mysqli_num_rows($vys) > 0) 
              {
          while($row = mysqli_fetch_assoc($vys))
          {
              $id_kom = $row['id_kom'];
              $cislo_prispevek = $row['cislo_prispevek'];
              $text_kom = $row['text_kom'];
             
             
             $coments .= "<div class='komenty'><p> $text_kom </p></div>"; 
              
              
              
              
             
              echo $coments;
                 
    
        }
           
       
       
       
       }   
          
   
      
      
      
      
     
          
          
         $query = mysqli_query($con, "SELECT COUNT(id) FROM prispevek");
         $row = mysqli_fetch_array($query,MYSQLI_NUM);
           ?>
          
           <div class="pocet">
             
           
           <?php 
           printf("Celkem příspěvků: %s",$row[0]); 
           ?>
           </div>
     
        
        <a class="pridat" href ='post.php' target='_blank' >Přidat příspěvek</a>
        
        <img class="scroll-to-top-link" src="obrazky/scroll-to-top-link.png" alt="obrazek" title="scroll-to-top-link" >
         
        </div>
    </body>
</html>

Moderátor juriad: Odmazány přihlašovací údaje.
Lonanek
Profil
Co nejrychleji ve vlastnímmm zájmu vymažte přihlašovací údaje k databázi.
Moderátor juriad: Provedeno.

Nevím co máte v souboru db_spojeni.php, ale v proměnné $db_spojení nemáte to co potřebujete. To se nachází v proměnné $con.

pak např. ř.47 bude vypadat:
     $res = mysqli_query($con, $sql) or die(mysqli_error($con));
Obdobně pak všechny ostatní dotazy.
Dawe97
Profil
Děkuji za upomínku ohledně hesla. Nějak mi to nedošlo.

Můj problém ohledně komentářů se ale nezměnil.Byl bych vděčný za jakékoli další nápady
Lonanek
Profil
A opravil jste v dotazech proměnnou podle [#2]?

Jak vypadá kód po úpravě?
Dawe97
Profil
Kod jsem upravil a teď vypadá takto:
 <?php
 session_start();
include 'db_spojeni.php';
require_once ("nbbc/nbbc.php");
 ?>
<!DOCTYPE html>

<html>
    <head>
        <script src="jsn/jquery.js" type="text/javascript"></script>
        <script src="jsn/main.js" type="text/javascript"></script>
        <link rel="shortcut icon" href="/obrazky/favicon.ico" type="image/x-icon" />
        <link href="styl.css" rel="stylesheet" type="text/css"/>
        <title>Blogger</title>
        <meta charset="UTF-8">
        
        
    </head>
    <body>
        
        <div id="obal">
            
            <img class="logo" src="obrazky/logo.png" alt=""/>
            
            
            <img class="citat" src="obrazky/citat.png" alt=""/>
      
      
      
      
           
      <?php

    
  
        
        
        
     $con=mysqli_connect("******","******","******","******");
     
      
      $bbcode = new BBCode;
      
      $sql = "SELECT * FROM prispevek ORDER BY id DESC";
      
      
      $res = mysqli_query($con, $sql) or die(mysqli_error($con));
      
      
      
      
      
      $posts = "";
      
      
      
      
      
      if(mysqli_num_rows($res) > 0) 
      {
          while($row = mysqli_fetch_assoc($res)) 
          {
              $id = $row['id'];
              $prispevek_nadpis = $row['prispevek_nadpis'];
              $autor = $row['autor'];
              $text = $row['text'];
              
               
              
              
              $output = $bbcode->Parse($text);
              
              
              $posts .= "<div class='prispevky'><h2>$prispevek_nadpis</h2><p class='autor2'><span class='autor'>Autor:</span>$autor</p><p class='clanek'>$text</p>
              
               
              <form class='formular_kom' action=index.php method='post' enctype='multipart/form-data'>
            <textarea placeholder='komentář' name='text_kom' rows='10' cols='50'></textarea><br />
            <input class='tlac_kom' name='submit' type='submit' value='okomentovat'>
           
            </form>     
              
              
             </div>";
              }
              
              echo $posts;
            
              
                 }else {
          echo "nejsou prispevky";
      }
      
      
      
      
// komentáře     
      
      if(isset($_POST['submit']))
{
    
    
    $text_kom = strip_tags($_POST['text_kom']);
    
    
    
    
    $text_kom = mysqli_real_escape_string($con, $_POST['text_kom']);
    
   
    
   
    
    
    $kom = "INSERT INTO komentar (id_kom,cislo_prispevek,text_kom) VALUES('','',$text_kom')";
    
    
    
    
    if($text_kom == "")
    {
        echo "<span class='chyba_kom'> prosím vyplňte textové pole </span>";
        
    }  else {
        
   
    
    mysqli_query($con, $kom);
    
    
 }    
}

$kom = "SELECT * FROM komentar ORDER BY id_kom DESC";
$vys = mysqli_query($con, $kom) or die(mysqli_error($con));
$coments = "";
       
              
              if(mysqli_num_rows($vys) > 0) 
              {
          while($row = mysqli_fetch_assoc($vys))
          {
              $id_kom = $row['id_kom'];
              $cislo_prispevek = $row['cislo_prispevek'];
              $text_kom = $row['text_kom'];
             
             
             $coments .= "<div class='komenty'><p> $text_kom </p></div>"; 
              
              
              
              
             
              echo $coments;
                 
    
        }
           
       
       
       
       }   
          
   
      
      
      
      
     
          
          
         $query = mysqli_query($con, "SELECT COUNT(id) FROM prispevek");
         $row = mysqli_fetch_array($query,MYSQLI_NUM);
           ?>
          
           <div class="pocet">
             
           
           <?php 
           printf("Celkem příspěvků: %s",$row[0]); 
           ?>
           </div>
     
        
        <a class="pridat" href ='post.php' target='_blank' >Přidat příspěvek</a>
        
        <img class="scroll-to-top-link" src="obrazky/scroll-to-top-link.png" alt="obrazek" title="scroll-to-top-link" >
         
        </div>
    </body>
</html>
Lonanek
Profil
Kde lze vidět?
Jen drobnost:
1) NIKDY bych do spouštěného souboru neuváděl přihlašovací údaje - to není drobnost, ale bezpečnost, proč includujete soubor db_spojeni.php a co v něm je?
2) určitě bych v cyklu (pokud to není nezbytné) nenačítal data do proměnné, kterou po skončení cyklu vypíši, ale přímo v cyklu bych tyto údaje vypisoval.
3) v cyklu pro komentáře neustále načítáte do proměnné a pak ji vypisujete, tedy pokud k článku budete mít 10 komentářů, pak se objeví 1, pak 1 a 2, 1+2+3, 1+2+3+4, ...
Dawe97
Profil
Nahradil jsem proměnou $db_spojeni proměnou $con.Můj problém s komentáři se nezměnil.
Lonanek
Profil
Chybové hlášky?
Kde lze vidět stránku?

Opravte si chybu:

    <form class='formular_kom' action='index.php' method='post' enctype='multipart/form-data'>
a další:
    $kom = "INSERT INTO komentar (id_kom,cislo_prispevek,text_kom) VALUES('','','$text_kom')";

$con=mysqli_connect("******","******","******","******");    // tohle urcite nepatri do spousteneho souboru

$con=mysqli_connect($server, $user, $pass, $database);    // takhle je to lepsi, promenne pak definovat v souboru db_spojeni.php
Dawe97
Profil
Chyby jsem opravil.Odkaz na stránku : blogger.czweb.org
Pořád nemůžu přijít na to, proč se údaje z formuláře: formular_kom ani nevloží do databáze.Problém je že mi to nepíše žádné chybové hlášky.
obsah souboru db_spojeni je čístě připojení k databázi
Lonanek
Profil
Dawe97:
obsah souboru db_spojeni je čístě připojení k databázi
Tak proč je ještě jedno ve spouštěném souboru?

Opravil jste ty chyby?


Dawe97:
Problém je že mi to nepíše žádné chybové hlášky.
Při pokusu o vložení příspěvku:
Notice: Undefined variable: db_spojeni in /3w/czweb.org/b/blogger/db_spojeni.php on line 7
Připojení se nepodařilo
Dawe97
Profil
Původně jsem myslel že řádek : "$con=mysqli_connect($server, $user, $pass, $database);" musí být i v souboru index.php(už tam není).
Chyby jsem si opravil.

"Notice: Undefined variable: db_spojeni in /3w/czweb.org/b/blogger/db_spojeni.php on line 7
Připojení se nepodařilo" - ted jsem to upravoval... přidání příspěvku už funguje.
Lonanek
Profil
Při pokusu o vložení prázdného příspěvku:
<b>Warning</b>: mysqli_connect(): (HY000/1045): Access denied for user 'blogger.czwe4896'@'venuse.srv.wz.cz' (using password: YES) in <b>/3w/czweb.org/b/blogger/post.php</b> on line <b>4</b><br />
<br />
<b>Warning</b>: mysqli_real_escape_string() expects parameter 1 to be mysqli, boolean given in <b>/3w/czweb.org/b/blogger/post.php</b> on line <b>14</b><br />
<br />
<b>Warning</b>: mysqli_real_escape_string() expects parameter 1 to be mysqli, boolean given in <b>/3w/czweb.org/b/blogger/post.php</b> on line <b>16</b><br />
<br />
<b>Warning</b>: mysqli_real_escape_string() expects parameter 1 to be mysqli, boolean given in <b>/3w/czweb.org/b/blogger/post.php</b> on line <b>18</b>



Takže komplet soubory db_spojeni.php a index.php, soubor post.php si upravíte později.
Dawe97
Profil
tohle je soubor post.php
Teď bych hlavně potřeboval vyřešit vkládání a vypisování těch komentářů.

<?php
session_start();
include 'db_spojeni.php';

if(isset($_POST['post']))
{
    $prispevek_nadpis = strip_tags($_POST['prispevek_nadpis']);
    
    $text = strip_tags($_POST['text']);
    
    $autor = strip_tags($_POST['autor']);
    
    
    $prispevek_nadpis = mysqli_real_escape_string($con, $_POST['prispevek_nadpis']);
    
    $text = mysqli_real_escape_string($con, $_POST['text']);
    
    $autor = mysqli_real_escape_string($con, $_POST['autor']);
    
    
    $sql = "INSERT INTO prispevek (prispevek_nadpis,autor,text) VALUES('$prispevek_nadpis','$autor','$text')";
    
    
    if($prispevek_nadpis == "" || $text == "")
    {
        echo "<span class='chyba'> prosím vyplňte všechna pole </span>";
        
    }  else {
        
   
    
    mysqli_query($con, $sql);
    
    
    header("Location: index.php");
 }    
}



?>

<!DOCTYPE html>

<html>
    <head>
        <link href="styl.css" rel="stylesheet" type="text/css"/>
        <link rel="shortcut icon" href="/obrazky/favicon.ico" type="image/x-icon" />
        <title>Blogger</title>
        <meta charset="UTF-8">
        
    </head>
    
   
    
    <body class="body_post">
        <div id="obal">   
        <h3>Napište nám svůj názor</h3>
        
        
        
        <form class="formular" action="post.php" method="post" enctype="multipart/form-data">
         <span class="popisek"> Vyplňte titulek článku </span> <input placeholder="titulek" name="prispevek_nadpis" type="text" autofocus size="48"><br /><br />
         <span class="popisek">  Zadejte vaše jméno </span> <input placeholder="autor" name="autor" value="anonym" type="text"><br /><br />
         <span class="popisek">  Vyplňte text příspěvku </span> <textarea placeholder="text" name="text" rows="20" cols="50"></textarea><br />
            <input class="tlac" name="post" type="submit" value="Zveřejnit">
           
        </form>
        
       </div> 
    </body>
</html>
Lonanek
Profil
post.php Vám již funguje, jen výpis chyby posíláte před hlavičkou souboru. Tu posíláte později...


viz:


<span class='chyba'> prosím vyplňte všechna pole </span>
<!DOCTYPE html>

<html>
    <head>



dejte sem řádek s insertem do tabulky komentar
Dawe97
Profil
Lonanek:
Můžu se zeptat jak by měl teda vypadat ten post.php ?


Myslel jste to takhle ?

 if($prispevek_nadpis == "" || $text == "")
    {
        echo "<span class='chyba'> prosím vyplňte všechna pole </span>";
        
    }  else {
        
   
    $sql = "INSERT INTO prispevek (prispevek_nadpis,autor,text) VALUES('$prispevek_nadpis','$autor','$text')";
    
    mysqli_query($con, $sql);
Lonanek
Profil
Způsobů je mnoho, např.:
<?php
...
    if(empty($prispevek_nadpis) OR empty($text))
    {
            $error = 1;
        }  else {
            mysqli_query($con, $sql);
            header("Location: index.php");
            exit;
        }    
}
?>
<!DOCTYPE html>
 
<html>
    <head>
        <link href="styl.css" rel="stylesheet" type="text/css"/>
        <link rel="shortcut icon" href="/obrazky/favicon.ico" type="image/x-icon" />
        <title>Blogger</title>
        <meta charset="UTF-8">
    </head>
    <body class="body_post">
        <div id="obal">   
        <h3>Napište nám svůj názor</h3>
        
<?php
if ($error) echo "<span class='chyba'> prosím vyplňte všechna pole </span>";
?>        
        
...



Jsou v tabulce komentar všechny sloupce, které uvádíte v INSERTU?
Předpokládám, že propojení příspěvku a komentáře budete řešit později.
Dawe97
Profil
V INSERTU jsou všechny sloupce z tabulky "komentar".
Propojení mám pomocí cizího klíče na sloupec "cislo_prispevek".
Mám přidat obrázek relace mezi tabulkami "prispevek" a "komentar"?
Lonanek
Profil
již vyřešeno?
Pokud funguje ukládání a výpis článků, pak musí také fungovat i komentáře k článkům.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: