Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php + mysql ] Skracanie tematu
Forum PHP.pl > Forum > Przedszkole
pioch
witam


mam taki kod :

  1. <?php
  2. $res=mysql_query(" SELECT n.data_n, n.id as id, n.tytul, n.tresc_krotka, n.akcept, k.id as id1, k.nazwa, k.kat_foto
  3. FROM newsy as n, kategorie_newsy as k
  4. WHERE k.id = n.kategoria AND ( n.akcept = 'Z' )
  5. ORDER BY id DESC ");
  6.  
  7. $old_row=array();
  8.  
  9.  
  10.  
  11.  
  12. echo "<font class="LOGINHD3"><center>Archiwum newsów oe-gol.pl<br><br /></center></font> ";
  13. echo "<center><br><table width="400">";
  14. while($row=mysql_fetch_array($res))
  15. {
  16.  
  17.  
  18.  if($row['data_n']!=$old_row['data_n'])
  19.  
  20.  echo "<tr><td width="400" colspan="3"><center><font class="LOGINHD2">".$row['data_n']."</font></center></td></tr>";
  21. echo "<tr><td><img border="0" src="grafika/strzal.gif" width="10" height="10">&nbsp;&nbsp;&nbsp;<a href="news.php?id=".$row['id']."">".$row['tytul']."</a></td>
  22. </tr> ";
  23.  
  24.  
  25.  $old_row=$row;
  26. }
  27. echo "</center></table><br><br />";
  28. ?>



w jaki sposób moge skrócić $row['tutul'] powiedzmy aby wyświetlało 20 znaków....
maryaan
oczywiscie mozesz uzyc funkcji substr() w zaleznosci od tego czy chcesz ciac stringa dopiero w php czy juz na etapie wyciagania danych z bazy, manual mysql jest tutaj http://dev.mysql.com/doc/refman/4.1/en/string-functions.html a tu php substr()
pioch
za pomoca substr() , jesli sobie określiłem $opis (' dhjdjjdjjdjdjdjdjdjdjdjdjdjdjdj') potrafie ,
ale juz w tym zapytaniu nie.....
maryaan
w zapytaniu jest to samo, tyle ze "zmienna" jest pole z tabeli, dalem link do manuala - kombinuj...
nexis
  1. <?php
  2. $res = mysql_query(" SELECT n.data_n, n.id as id, SUBSTRING(n.tytul, 0, 20), n.tresc_krotka, n.akcept, k.id as id1, k.nazwa, k.kat_foto FROM newsy as n, kate
    gorie_newsy as k WHERE k.id = n.kategoria AND ( n.akcept = 'Z' ) ORDER BY id DESC"
    );
  3. ?>
pioch
chciałem ogranicznić juz na poziomie bazy i wyskakuje mi bład

wiec spróbowałem....

  1. <?php
  2. CONCAT(SUBSTRING(n.tytul,1,250),'...')
  3. ?>


i też wywala bład....


Przy samym

  1. <?php
  2. SUBSTRING(n.tytul, 0, 20)
  3. ?>


nie wyświetla tematów...
nospor
Cytat
Przy samym

Kod PHP1
2
3 <?php
SUBSTRING(n.tytul, 0, 20)
?>



nie wyświetla tematów...

aliasu nie zrobiles
  1. ....SUBSTRING(n.tytul, 0, 20) tytul ....
maryaan
dla zobrazowania Twojego problemu z niewyswietlaniem samego substr()...
Kod
mysql> select substr(hash, 1, 10) from hash limit 10;
+---------------------+
| substr(hash, 1, 10) |
+---------------------+
| c4ca4238a0          |
| c81e728d9d          |
| eccbc87e4b          |
| a87ff679a2          |
| e4da3b7fbb          |
| 1679091c5a          |
| 8f14e45fce          |
| c9f0f895fb          |
| 45c48cce2e          |
| d3d9446802          |
+---------------------+
10 rows in set (0.00 sec)
nazwa pola sie "troche" rozni od zalozonej, to samo przy kombinacjach z laczeniem itp
Kod
mysql> select substr(hash, 1, 10), concat(substr(hash, 1, 5), ' - lol - ', substr(hash, 15, 5)) from hash limit 10;
+---------------------+--------------------------------------------------------------+
| substr(hash, 1, 10) | concat(substr(hash, 1, 5), ' - lol - ', substr(hash, 15, 5)) |
+---------------------+--------------------------------------------------------------+
| c4ca4238a0          | c4ca4 - lol - 820dc                                          |
| c81e728d9d          | c81e7 - lol - 636f0                                          |
| eccbc87e4b          | eccbc - lol - fe283                                          |
| a87ff679a2          | a87ff - lol - 1d918                                          |
| e4da3b7fbb          | e4da3 - lol - 45d77                                          |
| 1679091c5a          | 16790 - lol - af6fb                                          |
| 8f14e45fce          | 8f14e - lol - 7a5a3                                          |
| c9f0f895fb          | c9f0f - lol - 9159f                                          |
| 45c48cce2e          | 45c48 - lol - bdea1                                          |
| d3d9446802          | d3d94 - lol - 59755                                          |
+---------------------+--------------------------------------------------------------+
10 rows in set (0.00 sec)
tak jak powyzej zostalo wspomniane, wystarczy zarzucic aliasa na przy kazdym "obliczeniu" i tyle. A co do bledow to moga byc jakies literowki, zreszta jesli jakis blad sie pojawia, to nalezaloby go skopiowac na forum, zeby przynajmniej bylo wiadomo na co Cie nakierowac.
Maciej Szopiński
MySQL ma coś namieszane z indeksacją znaków w funkcji SUBSTRING. W większości przypadków wystarczy zmienić pierwszy indeks początka ciągu z 0 na 1 i działa. Czyli zamiast

CODE
SUBSTRING(n.tytul, 0, 20) AS tytul


wpisujemy

CODE
SUBSTRING(n.tytul, 1, 20) AS tytul
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.