Autor Zpráva
Microfox
Profil *
Zdravim, mam takovej problem...delal jsem neco podobneho jako je zed na facebooku a mam problem s vypisem komentaru...

<meta charset="windows-1250">
<title>Automatická výška <textarea></title>
<style>
  textarea { border: 1px solid #AAA; font-family:tahoma; font-size:12px;}
</style>
<span class="hl_strana_nadpis"><b>Vítej na mojí stránce</b></span>



<br><br>

<form name="jménoFormuláře" method="post" action="index.php?page=imbook&subpage=imbook/zpracuj_wall">

<input type="hidden" name="sent" value="">
<textarea onFocus="this.value=''; this.onfocus=null;" name="prispevek" rows=2 cols=135>Vložit příspěvek na zeď...</textarea>


<input type="image" name="save" style="margin-left:615px; margin-top:5px;" src="index_soubory/images/get_button.png">

</form>
<script>
function autoHeight(ta)
{
  ta.style.overflowY = "hidden";   // vypnu vertikální posuvník, aby nerušil
  ta.onkeyup = ta.onkeydown = ta.onkeypress = ta.onchange = function()
  {
    this.style.height = 0;   // donutím <textareu>, aby si spočítala správně scrollHeight
    this.style.height = this.scrollHeight + 4 + "px";   // čtyřka je součet okrajů + paddingu
  };
  ta.onchange();
}

autoHeight(document.jménoFormuláře.prispevek);
autoHeight(document.formular.komentar);
</script>  

<script>
function toggle(obj) 
{
     var el = document.getElementById(obj);
     if ( el.style.display != 'none' ) {
          el.style.display = 'none';
     }
     else {
          el.style.display = '';
     }
}
</script>
  
  <?php
  require "db.php"; // pripojeni k databazi 

 
 
   $prispevek1_html='<div style="width:706px;">';
$vycuc_tabulky1=mysql_query("select * from TK_Wall WHERE typ='komentar'   ORDER BY id DESC LIMIT 50");
while($data1=mysql_fetch_assoc($vycuc_tabulky1) )
{     
$prispevek1_html.='

  <div style="width:56px; height:48px; float:left;"><img style="width:48px; height:48px;" border="0" src="index_soubory/users/'.$data1['email'].'/photo_profil.jpg"></div> 
 <div style="width:650px; background-color:white; float:left;">
 
 <div style="background-color:white;"><font style="color:#3B59AA; font-size:12px; font-family:Tahoma;"><b>'.$data1['jmeno'].' '.$data1['prijmeni'].'</b></font></div>
 <div style="background-color:white;"><font style="font-size:11px; font-family:Tahoma; ">'.$data1['prispevek'].'</font> </div>
 <div style="background-color:white;">
 
 <img src="index_soubory/page/imbook_images/prispevek_obr.jpg"><font style="font-size:11px; color:#9394BC; font-family:Tahoma; position:relative; left:3px; top:-2px;">Přidáno: 
 
 '.$data1['datum'].' |</font><font style="color:#3B59AA; font-size:10px; font-family:Tahoma; position:relative; left:3px; top:-2px;"><b>
 
                       
 
 <a href="javascript:toggle(\'registrace'.$data1['id'].'\');"> Přidat komentář</a></b> | '.$data1['id'].'</font> </div>
 
 
   
        <div id="registrace'.$data1['id'].'" style="display:none;">

       <form name="formular" method="post" action="index.php?page=imbook&subpage=imbook/zpracuj_komentar">
         <input type="hidden" name="sent" value="">
          <input type="hidden" name="id_prispevku" value="'.$data1['id'].'">
          <textarea onFocus="this.value=\'\'; this.onfocus=null;" name="komentar" rows=2 cols=123>Vložit komentář...</textarea>

<input type="image" name="save" style="margin-left:555px; margin-top:5px;" src="index_soubory/images/comment_button.png">

</form>            
      </div>
 <div style="height:1px; background-color:#E9E9E9;"></div>
 <div style="height:10px; background-color:white;"></div> 
 </div>
';   
}
$prispevek1_html.='</div>';
  
  
  
  

                                       
  
                  
     
     
     $prispevek_html='<div style="width:706px;">';
$vycuc_tabulky=mysql_query("select * from TK_Wall WHERE typ='prispevek' ORDER BY id DESC LIMIT 50");
while($data=mysql_fetch_assoc($vycuc_tabulky) )
{     
$prispevek_html.='

  <div style="width:56px; height:48px; float:left;"><img style="width:48px; height:48px;" border="0" src="index_soubory/users/'.$data['email'].'/photo_profil.jpg"></div> 
 <div style="width:650px; background-color:white; float:left;">
 
 <div style="background-color:white;"><font style="color:#3B59AA; font-size:12px; font-family:Tahoma;"><b>'.$data['jmeno'].' '.$data['prijmeni'].'</b></font></div>
 <div style="background-color:white;"><font style="font-size:11px; font-family:Tahoma; ">'.$data['prispevek'].'</font> </div>
 <div style="background-color:white;">
 
 <img src="index_soubory/page/imbook_images/prispevek_obr.jpg"><font style="font-size:11px; color:#9394BC; font-family:Tahoma; position:relative; left:3px; top:-2px;">Přidáno: 
 
 '.$data['datum'].' |</font><font style="color:#3B59AA; font-size:10px; font-family:Tahoma; position:relative; left:3px; top:-2px;"><b>
 
                       
 
 <a href="javascript:toggle(\'registrace'.$data['id'].'\');"> Přidat komentář</a></b> | '.$data['id'].'</font> </div>
 
 
 
 
 
 
 
 
'.$prispevek1_html.'
              
   
             
      
             
        <div id="registrace'.$data['id'].'" style="display:none;">

       <form name="formular" method="post" action="index.php?page=imbook&subpage=imbook/zpracuj_komentar">
         <input type="hidden" name="sent" value="">
          <input type="hidden" name="id_prispevku" value="'.$data['id'].'">
          <textarea onFocus="this.value=\'\'; this.onfocus=null;" name="komentar" rows=2 cols=123>Vložit komentář...</textarea>

<input type="image" name="save" style="margin-left:555px; margin-top:5px;" src="index_soubory/images/comment_button.png">

</form>            
      </div>
 <div style="height:1px; background-color:#E9E9E9;"></div>
 <div style="height:10px; background-color:white;"></div> 
 </div>
';   
}
$prispevek_html.='</div>';







     
?> 


 <div align="left">
    <table  width="500" >
   <tr><td align="left">
  
   
   <?php echo $prispevek_html; ?></td></tr>
</table>  
</div>

  


aktuálně me to vypise vsechny komentare ke vsem prispevkum coz je spatne...
v databazi kazdej prispevek ma svoje ID
kdyz clovek napise komentar tak se v databazi do sloupecku cislo_prispevku vepise to ID toho clanku ke kteremu ten prispevek ma patrit...Bohuzel se mi to ale nedari vypsat tak jak bych potreboval...myslel jsem ze to udelam nak pres podminku ale neuspesne...Musi tam bejt nekde porovnani ze pokud id prispevku je rovno cislo_prispevku tak vypis komentare k tomu prispevku s tim cislem na kterem se shoduji...Slo by to nak udelat? Docela jsem se v tom zamotal a kolega mi vcera rikal ze to nejde...Proto pokladam dotaz zde...Prosil bych spis nake reseni protoze uz mam docela v tom zmatek a chybuju i v uvozovkach a apostrofech... :/

Diky moc
Tori
Profil
Místo dvou cyklů stačí jeden: načtete si zároveň příspěvky i komentáře, pak procházíte výsledky. Pokud ID příspěvku je jiné než v předchozí iteraci tak vypíšete nový příspěvek. Když k němu je (v tom samém řádku výsledků) i komentář, vypíšete komentář. Pokud je ID příspěvku stejné jako v předchozí iteraci, jen vypíšete další komentář. (doufám, že to je srozumitelné, kdyžtak se ptejte)
SQL dotaz by vypadal takhle (dala jsem všem sloupcům z tabulky komentářů aliasy, aby nepřepisovaly data příspěvků, když mají stejné názvy):
select k.id 'k_id', k.jmeno 'k_jmeno', k.prijmeni 'k_prijmeni', k.email 'k_email', k.datum 'k_datum', p.* 
from 
  (select * from TK_Wall WHERE typ='prispevek' ORDER BY id DESC LIMIT 50) p
  left join TK_Wall k ON k.cislo_prispevku = p.id AND k.typ='komentar'
order by p.id, k_datum
Microfox
Profil *
no kdyz to vezmu po textove strance tak tomu rozumim... kdyz kouknu na kod tak jsem trochu vedle...vubec nevim jak to zapracovat do toho kodu a to je presne ten duvod proc jsem to resil pres dva cykly protoze tohle bych dohromady nedal a moc si to neumim predstavit :(

Jestli jsem to pochopil tak vypadne $prispevek a $prispevek1 a nahradi se to tim co je vyse uvedene...ale nevim co vsechno mam upravit a co ponechat...hlavne me trapi syntaxe :/
Tori
Profil
Od řádku 54:
echo '<div align="left"><table  width="500"><tr><td align="left">';
$sql = "select k.id 'k_id', k.jmeno 'k_jmeno', k.prijmeni 'k_prijmeni', k.email 'k_email', k.datum 'k_datum', p.* 
  from 
    (select * from TK_Wall WHERE typ='prispevek' ORDER BY id DESC LIMIT 50) p
    left join TK_Wall k ON k.cislo_prispevku = p.id AND k.typ='komentar'
  order by p.id, k_datum";
$vysledek = mysql_query($sql) or die(mysql_error());

$idPrispevku = null;
$konec = '';
while ($radek = mysql_fetch_assoc($vysledek))  {
  
  // nový příspěvek
  if ($radek['id'] !== $idPrispevku)  {
    // pokud to není první příspěvek, ukončíme ten předchozí
    if ($idPrispevku !== null)  {
      echo $konec;
      $konec = '';
    }

    // vypis prispevku (1.část)
    echo '<div style="width:706px;">'; // + řádky 111 - 124
    
    // první komentář k příspěvku (pokud existuje)  - pokud ne, tak ve všech sloupcích k_* je NULL (viz LEFT JOIN)
    if ($radek['k_id'] !== null)  {
      // echo řádky 61 - 91
    }

    // a uložíme si konec výpisu příspěvku (dokud jsou k dispozici údaje o něm)
    $konec = '<div id="registrace'.$radek['id'].'" style="display:none;">'; // = řádky 139 - 152
    
    $idPrispevku = $radek['id'];
  } 

  // stejný příspěvek, ale další komentář
  else {
    // echo řádky 61 - 91
  }
}

// a ukončíme poslední příspěvek
echo $konec;
echo '</td></tr></table></div>';
Jinak při tak dlouhých kusech HTML bych použila heredoc zápis řetězců - funguje stejně jako řetězec v uvozovkách, ale přitom nemusíte uvozovky uvnitř escapovat.

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