Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php/mysql] problem z pobraniem danych.
Forum PHP.pl > Forum > Przedszkole
Rico_ds
Witam,
mam coś takiego
  1. <?php
  2. $connect = mysql_connect("", "", "") or
  3. die ("Sprawdź połączenie z bazą danych.");
  4. mysql_select_db ("serwis");
  5. mysql_query ('SET NAMES latin2');
  6. $wynik = mysql_query("SELECT * FROM news Order by nr DESC LIMIT 0.4");
  7. while($wiersz = mysql_fetch_assoc($wynik))
  8.  
  9.  {//początek pętli
  10.  
  11.  //wyświetl wynik
  12.  
  13.  echo "<b>Tytuł: ";
  14.  
  15.  echo $wiersz['tytul'];
  16.  
  17.  echo "</b><br>On: <i>";
  18.  
  19.  echo $wiersz['data'];
  20.  
  21.  echo "</i><hr align=left width=160>";
  22.  
  23.  echo $wiersz['tresc'];
  24.  
  25.  }//koniec pętli
  26.  
  27. ?>

i zamiast tekstu wyświetla mi "Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\Program Files\VertrigoServ\www\strona\index.php on line 90"
czyli na
  1. <?php
  2. while($wiersz = mysql_fetch_assoc($wynik))
  3. ?>

a w innym skrypcie mam tak samo napisaną tą funkcje i działa. o co chodzi??
Cienki1980
Masz kropkę zamiast przecinka w zapytaniu
  1. ...BY nr DESC LIMIT 0, 4


To powinno rozwiązać problem.
Rico_ds
zmieniłem
  1. <?php
  2. $wynik = mysql_query("SELECT * FROM news");
  3. ?>

i to dopiero pomogło, ale teraz nie będzie mi wyświetlać 4 ostatnich newsów. Czy możecie napisać mi jak zrobić, aby tekst był wyświetlany tylko do pewnej ilości znaków. I jak zrobić link do pełnej wersji tekstu??
p.s a jak zrobić datę w tej samej linii co tytułquestionmark.gif
Cienki1980
  1. <?php
  2. $query="select * from news order ny nr desc limit 0,4";
  3. ?>

Powyższe zapytanie wyciągnie Ci ostatnie 4ry rekordy. Co do wyświetlania części tekstu to możesz obrobić to w php substr" title="Zobacz w manualu PHP" target="_manual lub odpowiednio sformatować zapytanie SQL.

Pokazywanie większej ilości tekstu ( całości ) to nic innego jak przekazanie np w linku id ( w Twoim przypadku to chyba nr ) danego news'a i wyciągnięcie danych raz jeszcze i wyświetlenie całości.
Można zrobić to w jednym skrypcie coś na podobnej zasadzie :
  1. <?php
  2. if(isset($_GET['nr']) && is_numeric($_GET['nr'])) // przyszedł numer newsa z linku 
  3. {
  4.  $query="select * from news where nr=".$_GET['nr']."";
  5.  //dalszy kod wyświetlania
  6. }
  7. else // nie ma podanego numeru czyli pokazuje wszystkie skroty
  8. {
  9.  $query="select * from news";
  10.  //dalszy kod wyswietlania i formatowania
  11. }
  12. ?>


EDIT: pokazanie daty w tej samej linii co tytuł to tylko usunięcie odpowiedniego <BR>
Rico_ds
dzięki biggrin.gif mam jeszcze jedno pytanko.
  1. <?php
  2. $connect = mysql_connect("", "", "") or
  3. die ("Sprawdź połączenie z bazą danych.");
  4.  mysql_select_db ("serwis");
  5.  mysql_query ('SET NAMES latin2');
  6.  $wynik = mysql_query("SELECT * FROM oferta ");
  7.  
  8. while($wiersz = mysql_fetch_assoc($wynik))
  9.  
  10.  {
  11.  
  12.  echo '<Table>';
  13.  echo '<tr>';
  14.  echo '<td>';
  15.  echo '<div class="p2">';
  16.  echo '<img src="img/f.gif"> &nbsp;';
  17.  echo $wiersz['tytul'];
  18.  echo '</div>';
  19.  echo '</td>';
  20.  echo '</tr>'; 
  21.  echo '<tr>';
  22.  echo '<td>';
  23.  echo '<div class="p9">';
  24.  echo $wiersz['tresc'];
  25.  echo '</div>';
  26.  echo '</td>';
  27.  echo '</tr>'; 
  28.  echo '</Table> ';
  29.  
  30. }
  31.  
  32. $connect = mysql_connect("", "", "") or
  33. die ("Sprawdź połączenie z bazą danych.");
  34.  mysql_select_db ("serwis");
  35.  mysql_query ('SET NAMES latin2');
  36.  $wynik = mysql_query("SELECT * FROM platnosci ");
  37.  
  38. while($wiersz = mysql_fetch_assoc($wynik))
  39.  
  40.  {
  41.  
  42.  echo '<Table>';
  43.  echo '<tr>';
  44.  echo '<td>';
  45.  echo '<div class="p2">';
  46.  echo '<img src="img/f.gif"> &nbsp;';
  47.  echo 'Płatności';
  48.  echo '</div>';
  49.  echo '</td>';
  50.  echo '</tr>'; 
  51.  echo '<tr>';
  52.  echo '<td>';
  53.  echo '<li style="list-style-type: circle;">';
  54.  echo '<div class="p9">';
  55.  echo $wiersz['forma'];
  56.  echo '</div>';
  57.  echo '</li>';
  58.  echo '</td>';
  59.  echo '</tr>'; 
  60.  echo '</Table> ';
  61.  
  62. }
  63. ?>

czy uzasadnione jest to łączenie z bazą dwa razy, czy wystarczy dać samo
  1. <?php
  2. $wynik = mysql_query("SELECT * FROM platnosci ");
  3. ?>


i drugie pytanie ponieważ wstawiłem tam komórce nazwę płatności. Jak zrobić, żeby jej nie dublowało??
Cienki1980
Nie musisz łączyć się dwa razy, wystarczy raz na początku skryptu.

Co do kolumny płatności to nie wiem za bardzo OCB .. więc opisz trochę dokładniej problem.
Rico_ds
chodzi o to, że pokazuje raz nazwę Płatność. Pobiera jedną wartość z tabeli i wstawia ją. Następnie znowu wstawia nazwę Płatność i pobiera kolejną wartość z bazy i wstawia ją.
Cienki1980
Cytat(Rico_ds @ 28.05.2007, 18:34:29 ) *
chodzi o to, że pokazuje raz nazwę Płatność. Pobiera jedną wartość z tabeli i wstawia ją. Następnie znowu wstawia nazwę Płatność i pobiera kolejną wartość z bazy i wstawia ją.

W takim przypadku po prostu "wystaw" echo "Platnosci"; poza pętle. Czyli najpierw napis Płatności, a dopiero potem pętlę z wyświetlaniem rekordów.
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.