Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: zmiana stringa na tablice
Forum PHP.pl > Forum > Przedszkole
Apo
Witam
Mam takie coś zapisane w pliku tekstowym:
id<>autor<>news<>newsdlugi<>data<>nick:komentarz1||nick2:komentarz2<>ip

I teraz mam problem
Wczytuje normalnie dane z newsa na strone i wyświetlam.
  1. <?php
  2.  
  3. $read = @file($newsy_db);
  4. $long = htmlspecialchars($_GET['long']);
  5.  
  6.     foreach($read as $wpis) {
  7.     list($numer, $autor, $title, $licznik, $news, $newslong, $komentarze, $date) = explode('<>', $read[$long]);
  8. }
  9. echo '
  10. <div id="mainnews">
  11.    <div id="news"><b>'.$title.'</b> - '.$date.'</div>
  12.    <div id="widenews">'.$news.'<br /><br />'.$newslong.'</div>
  13.    <div id="news">dodał: '.$autor.' | czytań: '.$licznik.
  14.    </div>
  15. </div><p></p>';
  16.  
  17. ?>


Ale mam problem
Jak moge podzielić zmienna $komentarze według znaku oddzielającego poszczególne komentarze || a następnie jeszcze raz to podzielić przez :: i wyświetlić wszystkie.
Próbowałem to z pętlą foreach ale nie chyba o to chodzi.
Z góry thx
dr_bonzo
Zrob skrypt do wprowadzania danych a potem zapisuj je jako zserializowana (serialize()) tablice do pliku. Przy odczycie deserializujesz i masz wszystko jak przed zapisaniem: prosto i przyjemnie.
Apo
no wiem. Tylko ze jak zaczełem pisać system newsów jeszcze tego nie umiałem i teraz został mi ostatni problem aby go skończyć i właśnie nie wiem jak to zrobić sad.gif
ActivePlayer
  1. <?php
  2.  
  3. $read = @file($newsy_db);
  4. $long = htmlspecialchars($_GET['long']);
  5.  
  6. foreach($read as $wpis) {
  7. list($numer, $autor, $title, $licznik, $news, $newslong, $komentarze, $date) = explode('<>', $read[$long]);
  8. $komentarze = explode(||, $komentarze);
  9. foreach($komentarze as $id=>$val){
  10. $komentarze[$id] = explode(':', $val);
  11. }
  12. }
  13. echo '
  14. <div id="mainnews">
  15.  <div id="news"><b>'.$title.'</b> - '.$date.'</div>
  16.  <div id="widenews">'.$news.'<br /><br />'.$newslong.'</div>
  17.  <div id="news">dodał: '.$autor.' | czytań: '.$licznik.
  18.  </div>
  19. </div><p></p>';
  20. print_r($komentarze);
  21.  
  22. ?>


zmien print_r komentarze na foreach i powinno dzialac
Gość_Apo
hmm zrobiłem to tak:

  1. <?php
  2.  
  3. $read = @file($newsy_db);
  4. $long = htmlspecialchars($_GET['long']);
  5.  
  6. foreach($read as $wpis) {
  7. list($numer, $autor, $title, $licznik, $news, $newslong, $komentarze, $date) = explode('<>', $read[$long]);
  8. $komentarze1 = explode('||', $komentarze);
  9.  
  10. foreach($komentarze1 as $id) {
  11. $komentarze2 = explode(':', $id);
  12. }
  13. }
  14.  
  15.  
  16. $title = stripslashes($title);
  17. $news = stripslashes($news);
  18. $newslong = stripslashes($newslong);
  19. $autor = stripslashes($autor);
  20.  
  21. echo '
  22. <div id="mainnews">
  23.  <div id="news"><b>'.$title.'</b> - '.$date.'</div>
  24.  <div id="widenews">'.$news.'<br /><br />'.$newslong.'</div>
  25.  <div id="news">dodał: '.$autor.' | czytań: '.$licznik.
  26.  </div>
  27. </div><p></p>';
  28.  
  29. for($i=0; $i < count($komentarze2); $i++)
  30. {
  31. list($nick, $comm) = $komentarze2;
  32. echo '
  33. <div id="mainnews">
  34.  <div id="news"><b>'.$nick.'</b> - </div>
  35.  <div id="widenews">'.$comm.'</div>
  36. </div><p></p>';
  37. }
  38.  
  39. ?>
zmieniłem to tak. Probowałem zamiast if dać też foreach ale wyświetla mi sie tylko ostatni komentarz dry.gif
Ociu
Ja mam pytanie, co to jest $long ? numer lini ?
ActivePlayer
  1. <?php
  2.  
  3. $komentarze2 = explode(':', $id);
  4. ?>

na
  1. <?php
  2. $komentarze2[] = explode(':', $id);
  3. ?>
Gość_Apo
long to numer lini dzięki któremu wyświetlam długą treeść newsów na stronie.
Apo
hmmm dalej mi to nie wychodzi sad.gif
To ja może wkleje index.php odpowiedzialny za wyśietlanie newsów:

  1. <?php
  2. error_reporting(E_ALL ^ E_NOTICE);
  3. @require_once "config.php";
  4. @require_once "functions.php";
  5. ///////////////////////  NEWSY DŁUGIE  ///////////////////////////////
  6. ///////////////////////  NEWSY DŁUGIE  ///////////////////////////////
  7. ?>
  8.  
  9. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  10. <html xmlns="http://www.w3.org/1999/xhtml">
  11. <head>
  12. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
  13. <link rel="alternate" type="application/rss+xml" title="RSS" href="date/rss.php" />
  14. <link rel="stylesheet" type="text/css" href="style.css" />
  15. <title><?php echo $titleheader; ?></title>
  16. </head>
  17. <body xml:lang="pl">
  18.  
  19. <?php
  20. if(isset($long) && isset($page) && is_numeric($long)) {
  21. $read = @file($newsy_db);
  22. if($long > count($read) || $long < 0) {
  23. echo '<div id="mainnews">
  24.  <div id="news"><center>Nie ma newsa o numerze <b>'.$long.'</b></center></div>
  25.  </div>';
  26.  }
  27.  else {
  28.  
  29. if(file_exists($newsy_db)) {
  30. $read = @file($newsy_db);
  31. $long = htmlspecialchars($_GET['long']);
  32.  
  33. foreach($read as $wpis) {
  34. list($numer, $autor, $title, $licznik, $news, $newslong, $komentarze, $date) = explode('<>', $read[$long]);
  35. $komentarze1 = explode('||', $komentarze);
  36.  
  37. foreach($komentarze1 as $id)  {
  38. $komentarze2[] = explode(':', $id);
  39. }
  40. }
  41. $licznik++;
  42. $read[$long] = $numer.'<>'.$autor.'<>'.$title.'<>'.$licznik.'<>'.$news.'<>'.$newslong.'<>'.$komentarze.'<>'.$date;
  43.  
  44. if($use_emots_news == 'yes') {$news = str_replace($emotki, $emotki_nazwa, $news); }
  45. if($use_emots_title == 'yes') {$title = str_replace($emotki, $emotki_nazwa, $title);}
  46.  
  47. $uchwyt = @fopen($newsy_db, "w");
  48. @flock($uchwyt, LOCK_EX);
  49. for($i=0; $i < count($read); $i++) 
  50. {
  51. @fwrite($uchwyt, $read[$i]); 
  52. }
  53. @flock($uchwyt, LOCK_UN);
  54. @fclose($uchwyt); 
  55. $title = stripslashes($title);
  56. $news = stripslashes($news);
  57. $newslong = stripslashes($newslong);
  58. $autor = stripslashes($autor);
  59. echo '
  60. <div id="mainnews">
  61.  <div id="news"><b>'.$title.'</b> - '.$date.'</div>
  62.  <div id="widenews">'.$news.'<br /><br />'.$newslong.'</div>
  63.  <div id="news">dodał: '.$autor.' | czytań: '.$licznik.
  64.  </div>
  65. </div><p></p>';
  66. if($komentarze !== '') {
  67. for($i=0; $i < count($komentarze2); $i++)
  68. {
  69. list($nick, $comm) = $komentarze2;
  70. echo '
  71. <div id="mainnews">
  72.  <div id="news"><b>'.$nick.'</b> - </div>
  73.  <div id="widenews">'.$comm.'</div>
  74. </div><p></p>';
  75. }
  76. }
  77.  
  78. echo '
  79.  
  80. <div id="mainnews">
  81.  <div id="news"><b>Dodaj komentarz</div>
  82.  <div id="widenews">
  83.  <form action="index.php?long='.$long.'&komentarz=ok" method="post">
  84.  Nick<br /><input type="text" value="'.$nickzform.'" name="nick" /><br />
  85.  Treść<br /><textarea cols="70" rows="4" name="news" rows="1" />'.$komentarzzform.'</textarea><br />
  86.  <center><input type="submit" value="Dodaj komentarz" /></center>
  87.  </form>
  88.  </div>
  89. </div><p></p>
  90. ';
  91.  
  92. }
  93. else {
  94. echo 'Brak bazy newsów!';
  95. }
  96. </body>
  97. </html>';
  98. }
  99. }
  100.  
  101.  
  102. else {
  103.  
  104. ////////// NEWSY KRÓTKIE ////////////
  105. ////////// NEWSY KRÓTKIE ////////////
  106.  
  107. echo '<a href="date/rss.php"><img src="img/rss.gif" border="0"></a>';
  108.  
  109. if(file_exists($newsy_db)) {
  110.  
  111. $table = file($newsy_db);
  112. $max = count($table);
  113. $page = $_GET[page]; 
  114. $first = $per_page * ($page - 1); 
  115. $last = $first + $per_page;
  116. $ile = round(($max/$per_page)+0.49); 
  117.  
  118. if($page > $ile || $page < 0 || !is_numeric($page)) {
  119. header('Location: '.$url.'index.php?page=1');
  120. }
  121. else {
  122. for ($i = $first; $i < $last && $i< $max; $i++) {
  123. list($numer, $autor, $title, $licznik, $news, $newslong, $komentarze, $date) = explode('<>', $table[$i]);
  124.  
  125. if($use_emots_news == 'yes') {$news = str_replace($emotki, $emotki_nazwa, $news); }
  126. if($use_emots_title == 'yes') {$title = str_replace($emotki, $emotki_nazwa, $title);}
  127.  
  128. $title = stripslashes($title);
  129. $news = stripslashes($news);
  130. $autor = stripslashes($autor);
  131. echo '
  132. <div id="mainnews">
  133.  <div id="news"><b>'.$title.'</b> - '.$date.'</div>
  134.  <div id="widenews">'.$news.'</div>
  135.  <div id="news">dodał: '.$autor;
  136. if($newslong !== '') { echo ' | czytań: '.$licznik.' - <a href="index.php?page='.$page.'&long='.$i.'" class="link">[Czytaj więcej...]</a>'; }
  137.  </div>
  138. </div><p></p>';
  139. }
  140. if($ile <= 1){
  141. }
  142. else {
  143. echo '<div id="mainnews"><div id="news"><center>';
  144. for ($i = 1; $i <= $ile; $i++){
  145.  if($i != $page) { 
  146.  echo '<b><a href="index.php?page='.$i.'">'.$i.' </a> </b>'; 
  147.  }
  148.  else { 
  149.  echo '<font color="red"><b>'.$i.' </b></font>'; 
  150.  }
  151. }
  152. echo '</center></div></div>';
  153. }
  154. }
  155. }
  156. else {
  157. echo 'Brak bazy newsów!';
  158. }
  159. }
  160. </body>
  161. </html>';
  162. ?>


I tu mam przykładowny news z pliku:

1130180908<>Admin<>To jest test<>2<>tre¶ć krutka tre¶ć krutka<>tre¶ć długa tre¶ć długa<>marek:testownie||marek1:testownia<>24.10.2005, 21:08:28

I właśnie dane "marek:testownie||marek1:testownia" ma wyśiwetlić się jako komentarze
Jeśli macie jakieś uwagi do reszty kodu to podzielcie sie nimi.
Ociu
Po co dajesz error_reporting, skoro wszędzie masz @ ?
Apo
Jak urzytkownik wejdzie na strone i bedzią źle ustawione chmody to nie wywali mu błędu ze ściążką do plików dlatego tam dałem @
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.