Autor Zpráva
lamič
Profil
ahoj, po předchozíck kladných zkušenostech tu jsem zase :-) tentokráte kvůli vkládání kometářů do článků. Narazil jsem zde na 2 problémy.. napřed bych měl tedy začít tím, že napíšu rozložení. Jedná se o dva soubory první se jmenuje zprava.php a druhy vlozit_komentar.php.
Jenoduše řečeno na stránce článek se klikne na odkaz, poté se spustí stránka vlozit_komentar.php a v tomto scriptu se do databáze uloží tento komentář(později i reakce, ale to nyní řešit nemá cenu).

Nyní v čem se stal problém.. takže zatím už při vkládání do databáze se v souboru vlozit_komentare vlozi vše jak má kromě id_zpravy. (v databázi je sloupec id_zpravy je int(11).

Druhý problém souvisí s tím prvním a je logický, když se do databáze neuloži id_zpravy tím pádem se komentář nemůže zobrazit k danému článku(zprávě). děkuji za případnou pomoc.

Takže zde je php kod souboru vlozit_komentar.php (html znaky vynecham myslím si, že nejsou důležité)
<?php 
  include 'header.php';
        
  ?>
  <?php
  if (isset($_GET["id_zpravy"])) {
    $id_zpravy=$_GET['id_zpravy'];
  }
   
  $zprava="";

  if (isset($_POST['komentar_odeslat'])) {
    if (strlen($_POST['text']) == 0) {
      $zprava .="Nevyplnili jste text!<br>";
    }
    else {
      $titulek = $_POST['titulek'];
      $text = $_POST['text'];
    }
    
 if ($zprava == '') {
      $sql="INSERT INTO komentare (id_uzivatele, id_zpravy, titulek, text, datum) VALUES ($_SESSION[id_uzivatele], '$id_zpravy', '$titulek', '$text', NOW())";
        
      if ($vysledek = mysql_query("$sql")){      
        echo "Komentář byl přidán. <br>";
        echo "<a href=\"zprava.php?id_zpravy=$id_zpravy\" class='item'>Zpět</a>";  
      }
      else {
        echo mysql_error();   
      }
    }
    else {
      echo $zprava;
    }
  }
?>

<form action="<?php echo $_SERVER['REQUEST_URI'] ?>" method="post">

zde je soubor zprava.php

<?php

include("header.php");

 $zprava= $_POST['id_zpravy'];
 
mysql_query("UPDATE zpravy 
      SET precteno=precteno+1
      WHERE id_zpravy=$_GET[id]");
      
      $sql="SELECT *,DATE_FORMAT(datum,'%e.%c.%Y | %H:%i:%s') AS C_datum,e_uzivatele.nick
FROM zpravy
INNER JOIN e_uzivatele ON e_uzivatele.id_uzivatele = zpravy.id_uzivatele
WHERE id_zpravy=$_GET[id]
ORDER BY datum DESC";

if ($vysledek = mysql_query("$sql")) {
while ($radek = mysql_fetch_array($vysledek)) {

echo "<div class='titulek'>";
echo $radek['titulek'];
echo "</div>";
echo "<div class='uvod'>";
           
echo $radek['uvod'];
echo "</div>";
echo "<div class='text'>";
echo $radek['text'];
echo "</div>";
echo "<div class='zapati'>";
echo "Datum: ".$radek['C_datum']."&nbsp;&nbsp; Autor: ".$radek['nick']."&nbsp;&nbsp; Přečteno: ".$radek['precteno']."&nbsp;&nbsp; " ;

echo "<a href='index.php'>Zpět</a>";

echo "</div>";


   }
   }
        
 echo mysql_error(); 

  if(isset($_SESSION['id_uzivatele'])){
  

echo "<div style='width:250px; float:left; padding: 0px 20px 10px 27px; '><a href=\"vlozit_komentare.php?id_zpravy=$radek[id_zpravy]\" class='item'>Napsat komentář ke článku</a><br /> <br /></div>";
 
      }
    
 ?> 
 <?php

$sql2=("SELECT komentare. * ,e_uzivatele.nick, e_uzivatele.email, DATE_FORMAT (komentare.datum,'%e.%c.%Y | %H:%i:%s')AS c_datum FROM komentare 
INNER JOIN e_uzivatele ON e_uzivatele.id_uzivatele = komentare.id_uzivatele
INNER JOIN zpravy ON zpravy.id_zpravy = komentare.id_zpravy WHERE zpravy.id_zpravy = $_GET[id_zpravy] ORDER BY datum desc");      
 
if ($vysledek2 = mysql_query("$sql2")) {
while ($radek2 = mysql_fetch_array($vysledek2)){ 
     
echo "<br /><br /><div style='width:300px; float:left; padding: 0px 20px 5px 27px; '>
 
<table border='2'><tr><td>
<i>Napsal :</i><b>".$radek2['nick']."</b><br /><i>Datum komentáře </i>".$radek2['datum']."<br />
nadpis komentáře:<b>".$radek2['titulek']."</b>
".$radek2['text']."

</table>
</div>";

  }
  }
  
  
 ?>
<?php

include("footer.php");
?>

děkuji za případnou pomoc :-)
lamič
Profil
lamič:
nikdo? :-(
_es
Profil
lamič:
Pravidla diskuse JPW a doporučení » 9. Nežádejte příliš. Hotová řešení příliš specifických či nadměrně složitých dotazů zde nedostanete.
Pravidla diskuse JPW a doporučení » 8. Pokud vám nikdo neodpovídá, nesnažte se na dotaz upozorňovat přidáváním nekonstruktivních příspěvků.
Skús svoj problém nejako zjednodušiť alebo predefinovať, aby bol pre radcov zaujímavejší.
lamič
Profil
_es:
omlouvám se teda za porušení pravidel..
Zjednodušit? v daném kodu výše je problém s uložením komentáře na dané id_zpravy měl by to být dotaz na 22 řádku. druhá věc po úspěšném přidání do tabulky komentare sloupec id_zpravy se tyto komentáře zobrazí na stránce dané zpravy(článku). řádek 53-55. to je úplně vše.
Opravdu mi nikdo neporadí? :-(
okolojsoucí
Profil
lamič:
$vysledek = mysql_query("$sql")
Pokud máš čistou proměnnou bez okolního stringu, vkládej ji bez uvozovek.,


UPDATE zpravy 
      SET precteno=precteno+1
      WHERE id_zpravy=$_GET[id]
Dávat proměnnou přímo do databázového dotazu ještě k tomu z URL je dost velká sebevražda, pochopil bych kdyby to bylo ve vrstvě dibi která si sama ochrání proti hacku databáze, ale takto?

mysql_query
Čteš tu hlášku? „This extension is deprecated as of PHP 5.5.0, and will be removed in the future. Instead, the MySQLi or PDO_MySQL extension should be used.“ Do češtiny přeloženo jako „Toto rozšíření je zastaralé a bude odstraněno v budoucnosti. Použijte MySQLi nebo PDO_MySQL.
S oblibou ale doporučuji nadstavbu nad těmito rozšířeními od Davida Grudla s názvem Dibi. Je velmi jednoduché a podle českého manuálu a ukázek dokážeš si dotaz napsat sám, a nejlepší je na to že tě chrání před SQL Injection.
lamič
Profil
okolojsoucí:
děkuji za alespon nějakou odpoved. O hlášce co píšeš nic nevím, mně to takovou hlášku nehází (nenapíše mi to nic), ale to je ted detail, zkusím tedy prostudovat to dibi, snad mi to pomůže. Zatím díky

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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