Autor Zpráva
Estak
Profil *
ahoj,dělám si komentáře k článku,mám u článku vytvořený id,že když se klikne na nadpis tak se otevře nová stránka clanek.php?id=echo id
no,a tak potřebuju udělat,aby při uložení komentáře se ukládal do databáze komentare do sloupce idC jako id clanku,
a pak ho vyvolat ale jen pouze ty ID clanku...
dám příklad:
tenhle script vyvolává komentáře:
$vysledek = mysql_query("SELECT *, UNIX_TIMESTAMP(datum) as datumcas FROM komentare ORDER BY id DESC LIMIT ".intval($stranka).",$po");

jak udělat aby mě to vypsalo jen ten článek pro určitý článek?
řekl bych asi nějak upravit SELECT,ale nejsem si jisty...


pak bych potřeboval aby se komentáře s idC oběvily v článek.php?id=echo id
vím jak to má bejt,ale nějak mě to nejde,udělal jsem to přes WHERE idC='id(např 51'
a v tom článku se oběví všechny komentáře s id 51,ale když tam chci dát proměnou aby si to zjistilo samo to ID,tak mě to nic nenaběhne...script vypadá takto
$vysledek = mysql_query("SELECT *, UNIX_TIMESTAMP(datum) as datumcas
FROM komentare WHERE idC='$zaznam["id_clanku"]'
ORDER BY id DESC LIMIT ".intval($stranka).",$po
");

nevíte kde mám chybu?
zatomik
Profil
Tu první otázku jsem asi nepochopil, ale přece by stačilo udělat toto:
$vysledek = mysql_query("SELECT *, UNIX_TIMESTAMP(datum) as datumcas FROM komentare WHERE komentare.idC = '".$idClanku."' ORDER BY id DESC LIMIT ".intval($stranka).",$po");


A u toho druhého máš syntaktickou chybu. Máš celé query v dvojtých úvozovkách, ale máš je přerušené indexem pole, udělej to takto:

$vysledek = mysql_query("SELECT *, UNIX_TIMESTAMP(datum) as datumcas
FROM komentare WHERE idC='$zaznam['id_clanku']'
ORDER BY id DESC LIMIT ".intval($stranka).",$po
");
Estak
Profil *
u toho načtení to píše tohle...
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/users/alan/l2antis.funsite.cz/web/antis/select.php on line 10


jinač k tomu prvnímu...
mám dvě tabulky,jednu články a druhou komentáře,já potřebuju aby prostě id_clanku který je v db články se uložily do komentářů do sloupce idC
dám příklad...
mám článek s ID 1
na hlavní stránce bude ten článek,když ho otevřu bude v url clanek.php?id=1 a tu jedničku chci aby se při vložení nového komentářů vložila do db komentáře a sloupce idC
Snad si mě už pochopil:D
Estak
Profil *
jo,jinač u toho prvního,našel jsem tuhle chybu na internetu,a tam psali že ty uvozovky v závorce nemaj bejt,tak jsem je odstranil,ale je tu problém,to id_článku nenačte,a nezobrazí se komentář,když tam dám místo proměnný číslo toho určitýho článku,např 51,tak to ukáže všechny komentáře k tomu článku 51....takže už nevím kde je chyba
zatomik
Profil
Estak:
na hlavní stránce bude ten článek,když ho otevřu bude v url clanek.php?id=1 a tu jedničku chci aby se při vložení nového komentářů vložila do db komentáře a sloupce idC

tak si ji vztáhni pomocí $_GET['id'], ošetři to funkcí htmlspecialchars() a do databáze ukládej ten komentář i s tím ID pomocí INSERT INTO komentare .... atd

a u toho druhého dej tedy intval($zaznam['id']) a pokud porovnáváš int tak skutečně ty uvozovky nepotřebuješ, ale mělo by to chodit i s nima.
Estak
Profil *
už jsem na vše přišel,jen mám problém s ukládání...nevíte jak by se to dalo upravit aby ten script fungoval?
  @$vysledek = mysql_query
  ("INSERT INTO komentare (datum, jmeno, email, web, zprava)"."
VALUES (CURRENT_TIMESTAMP(),
'". $jmeno ."', 
'". $mail ."', 
'". $web ."', 
'". $zprava ."'
)"."
WHERE idC='{$_REQUEST['id']}'
");
zatomik
Profil
Doporučuju ti, aby jsi při ladění složitějších dotazů v MySQL používal funkci mysql_error(), vrátí ti chybovou hlášku z posledního dotazu a ty tak zjistíš, kde je problém.

Pokud se nepletu, tak příkaz INSERT nemá žádnou část WHERE, ta se používá při UPDATE.
Estak
Profil *
ajo,to mě nějak nedošlo....a nevíš jak bych to tam nějak dal do toho insert?ted jsem zkoušel to tam zařadit pomocí proměnné,ale stejně to id neuloží...
index.php
 @$dbc = mysql_query("SELECT *, UNIX_TIMESTAMP(datum) as datumcas FROM clanky WHERE id_clanku='{$_REQUEST['id']}'");
$ID = $_REQUEST['id'];

komentar.php

  @$vysledek = mysql_query
  ("INSERT INTO komentare (datum, jmeno, email, web, zprava, idC)"."
VALUES (CURRENT_TIMESTAMP(),
'". $jmeno ."', 
'". $mail ."', 
'". $web ."', 
'". $zprava ."',
'". $ID ."'
)");

takhle jsem to zkusil a nejde to,nejspíš si to nepamatuje tu proměnnou :d nebo já už nevím
skrepyKOKO
Profil *
skus to přes session,ale nejsem si jistý
skrepyKOKO
Profil *
ne...máš to správně,ale chyba je jinde,skus odstranit zavináč
Estak
Profil *
skusil jsem to a nic...zkusil jsem tam dát echo mysql_error();
a napsalo mě to
Parse error: syntax error, unexpected T_ECHO in /home/users/alan/.../web/.../gb.php on line 42

a přitom na 42 mám právě to echo na mysql error
kod:
 <?php
$jmeno = trim ( $_POST['jmeno'] );
$mail = $_POST['mail'];
$web = trim ( $_POST['web'] );
$zprava = trim ( $_POST['zprava'] );
$ID = $_REQUEST['id'];

$ok = true; 

if ( empty( $jmeno )) {
echo "<b>nenapsal si jméno.</b><br />";
$ok = false; 
}


function isnt_email($adresa){
    if (preg_match( '/^[A-Z0-9._-]+@[A-Z0-9][A-Z0-9.-]{0,61}[A-Z0-9]\.[A-Z.]{2,6}$/i' , $adresa)==1)  return false;
    else return true;
}


if ( empty( $zprava )) {
echo "<b>nenapsal si text</b><br />";
$ok = false; 
}

if($ok) {



  require_once('db.php');
  if (!db()) $error = "Error database";

  $sql = mysql_query("SELECT COUNT( jmeno ) FROM uzivatele WHERE jmeno = '". $_POST['jmeno'] ."'") or die("chyba");
  if(mysql_result($sql,0) == 0){



  $vysledek = mysql_query
	echo mysql_error();	
  ("INSERT INTO komentare (datum, jmeno, email, web, zprava, idC)"."VALUES (CURRENT_TIMESTAMP()
  ,'". $jmeno ."' 
  , '". $mail ."' 
  , '". $web ."' 
  , '". $zprava ."'
  ,'". $ID ."'
");



}else echo "<b>tohle jméno je zaregistrovane</b>";
  
  mysql_close();
} while (false);


header('Location: index.php');
?>

tak už nevím:-(
Estak
Profil *
no,tak chyba byla v proměnné:D takže už mě to jde:) díky všem co poradily(aspon trochu) :)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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

0