Paginare la Script comentarii 3

Aici prezentati probleme, intrebari, sau orice subiecte legate de scripturi si tutoriale de pe site.
dim
Mesaje: 61

Paginare la Script comentarii 3

Salut
Se poate adauga la script-ul tau fara baza de date o calasa de paginare ?
Multumesc.

MarPlo Mesaje: 4343
Salut
Se poate asa:
1. Copie fisierul "class.pagination.php" cu clasa de paginare de la adresa Clasa Paginare in acelasi loc unde e "coment.php".
2. Inlocuieste continutul din "coment.php" cu acest cod:

Cod: Selectaţi tot

<?php
// Script comentarii de la https://marplo.net/php-mysql
$dir = 'coment/';        // Directorul unde sunt stocate fisierele cu comentariile
$file0 = strip_tags(basename($_SERVER['REQUEST_URI']));        // Preia adresa /numele paginii curente
$file = str_replace(array('/','\\',':','*','|',"'",'"','@','?','='), '', preg_replace('/pg=[0-9]*/', '', $file0));    // Sterge caracterele speciale din adresa

// Defineste calea si numele fisierelor .txt de stocare a comentariilor
$fisier = $dir. $file. '.txt';            // Defineste cale spre fisierul care va contine comentariile

// Daca sun primite date din formular
if (isset($_POST['nume']) && isset($_POST['comentariu']) && isset($_POST['hideanti_spam']) && isset($_POST['anti_spam'])) {
  // Daca e corect codul anti-spamm
 if($_POST['hideanti_spam']==$_POST['anti_spam']) {
  // Creaza directorul din $dir, daca nu exista
  if (!is_dir("coment")) { mkdir("coment", 0777); }

  // Creaza fisierul pt. pastrarea comentariilor (daca acesta nu exista)
  if (!file_exists($fisier)) {
    touch($fisier);   // Creaza fisierul
    chmod($fisier, 0777);   // Atribue fisierului permisiuni totale
  }

  // Preia datele din form
  $name = strip_tags($_POST['nume']); 
  $data = date(" j-F-Y, g:i a ");
  $coment0 = strip_tags($_POST['comentariu']);    // Elimina tag-urile HTML din comentariu

  // 'wordwrap' scurteaza cuvintele la maxim 35 caractere
  // 'nl2br' adauga <br /> la linie noua
  $coment = '<p class="comm">'. nl2br(wordwrap($coment0, 35, " ", true)). '</p>';


  // Aranjeaza datele preluate din form
  $daten = '<p class="num_e"><span class="clasn"> &#9679; '. $name. "</span>". '(<i>'. $data. "</i>)</p>";
  
  // Daca adresa de e-mail e primita si este diferita de '@ptional'
  if (isset($_POST['email']) && $_POST['email']!="@ptional") {
    $datem = '<span class="clasem">&nbsp; &nbsp; &nbsp; &nbsp; e-mail : '. strip_tags($_POST['email']). "</span>";
  }
  else { $datem = ""; }

  $datec = '<div class="bloc_com">'. $coment. "</div><br />". PHP_EOL; 
  $ad = $daten. $datem. $datec; 
  if ($name == "") { $ad = ""; }    // Pt. siguranta in caz de refresh gol


  // Sterge datele din fisier, adauga comentariul nou si cel din fisierul de rezerva
  if(!file_put_contents($fisier, $ad, FILE_APPEND | LOCK_EX)) echo "</h4<Fisierul pt. adaugare comentarii nu a putut fi deschis</h4>";



  // Scriptul JS pt. fereastra Alert care apare dupa adaugarea datelor
  // Si face redirect la aceeasi pagina, pt. a evita re-adaugarea mesajului in caz de Refresh
  echo '<script type="text/javascript">
   window.alert("Mesajul a fost adaugat cu succes");
   window.location = "http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']. '";
  </script>';
  exit;
 }
 else { echo '<h4>Caractere anti-spamm incorecte</h4>'; }
}

// Preia intr-o variabila comenrariile ce vor fi afisate
if(file_exists($fisier)) {
  $coment = str_ireplace(PHP_EOL, '', file_get_contents($fisier));
  preg_match_all('/\<p class="num_e"\>(.*?)\<\/div\>\<br \/\>/i', $coment, $cm);

  include('class.pagination.php');
  $objPg = new Pagination();
  $coment = $objPg->getArrRows($cm[0]);
}
else { $coment = '<span class="clasn"><i> - Nu exista nici un comentariu. Fii tu primul care adauga!</i></span>'; }

$anti_spam = substr(md5(time()), 3, 5);    // Se definesc caracterele antispam
?>

<!-- Incepe locul comentariilor -->
<div id="cm" align="left">
 <h2>Comentarii :</h2><hr />

<?php
echo $coment .'<hr />';        // Afiseaza comentariile (continutul variabilei $coment)
if(isset($objPg)) echo $objPg->getLinks();    // linkuri paginare
?>

<script type="text/javascript" src="check.js"></script> 
<div id="fcom" align="center">
 <h3>Adauga comentariu</h3>

 <form name="formc" onsubmit="return Validate()" method="post" action="<?php echo $file0; ?>">
 <!-- https://marplo.net -->
  <input type="hidden" name="hideanti_spam" value="<?php echo $anti_spam; ?>" />
  <label for="nume">Nume : </label>
  <input type="text" name="nume" id="nume" size="18" maxlength="40" /><br />
  <label for="email">E-mail : </label> 
  <input type="text" name="email" id="email" size="18" maxlength="40" value="@ptional" onclick="if(this.value=='@ptional')this.value='';" onblur="if(this.value.length<2)this.value='@ptional';" /><br />
<label for="comentariu">Scrie comentariu (<i> Maxim 500 caractere </i>) : </label><br />
  <textarea name="comentariu" id="comentariu" cols="35" rows="6"></textarea>
  <br /><a href="https://marplo.net" style="font-size:8px; color:#dadafe;">cursuri jocuri anime</a><br />
  Adaugati urmatorul cod: &nbsp; <b><?php echo $anti_spam; ?></b><br />
  <label for="anti_spam"> Verificare </label> <input type="text" name="anti_spam" id="anti_spam" size="5" maxlength="6" /><br />
  <input type="submit" value="Trimite" id="submit" />
 </form>
</div>
</div>

dim Mesaje: 61
Multumesc pt ajutor
dar poti sa imi explicit si mie urmatoarea line pe care nu o inteleg??

Cod: Selectaţi tot

if(file_exists($fisier)) {
  $coment = str_ireplace(PHP_EOL, '', file_get_contents($fisier));
  preg_match_all('/\<p class="num_e"\>(.*?)\<\/div\>\<br \/\>/i', $coment, $cm);
daca ii elimin class nu imi mai afiseaza nimic

multumesc inca o data pt raspunsurile date

MarPlo Mesaje: 4343
Daca fisierul din $fisier exista, functia str_ireplace() sterge caracterele de randuri noi (PHP_EOL inlocuit cu nimic '') in continutul preluat cu file_get_contents(); ca sa fie tot continutul intr-o singura linie (sa nu incurce expresia regulata din : preg_match_all() ).
Functia preg_match_all() e folosita sa preia ce e intre tagurile: "<p class="num_e">" si primul "</div><br />" (notatia exact asa cum e la adaugarea comentariilor in $fisier). Asta ca sa adauge comentariile intr-un array ca sa poata fi paginate cu clasa Pagination.

- Daca mai sunt ate coduri /functii care nu stii ce fac, gasesti in manualul php (php.net) explicatii si exemple.

Subiecte similare