Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: wyświetlanie rekordów MySQL z warunkiem
Forum PHP.pl > Forum > Przedszkole
adi456
Witam, proszę o wyrozumiałość jestem amatorem.

Nie mogę poradzić sobie z modyfikacją skryptu która miała by na celu wyświetlanie rekordu "inne" tylko wtedy gdy rekord "nowy" będzie zawierał słowo "tak"
kombinowałem z if ($nowy = tak) ale moja wiedza jest za mała by sobie z tym poradzić, proszę o pomoc.

$i=0;
while ($i < $num) {

$model=mysql_result($result,$i,"model");
$nowy=mysql_result($result,$i,"nowy");
$inne=mysql_result($result,$i,"inne");

echo "
<table border='1' style='border-collapse: collapse;' >
<tr>
<td>$model</td>
<td>$nowy</td>
<td>$inne</td>
</tr>
</table>

";

$i++;
}
krispak
Cytat(adi456 @ 24.08.2010, 00:00:34 ) *
...kombinowałem z if ($nowy = tak) ...

Jak juz to powinno byc tak
  1. if ($nowy == "tak")

Daj w peli
  1. $inne = ($nowy == "tak") ? mysql_result($result,$i,"inne") : "";

Zamiast mysql_result stosuj wydajniejsze - mysql_fetch_array()
Pozdrawiam
thek
Po pierwsze: mysql_result jest wolną funkcją i nawet manual zaleca jego zaniechanie na korzyść takich jak mysql_fetch_assoc, mysql_fetch_object, mysql_fetch_array, mysql_fetch_row.
Jeśli użyjesz ich, to rozpoznanie skróci się mocno.
  1. while( $wiersz = mysql_fetch_assoc($result) ) {
  2. if( $wiersz['nowy'] == 'tak' ) {
  3. //tu sobie wyświetlaj co chcesz
  4. } else {
  5. continue;
  6. }
  7. }
Widzisz różnicę? Brak liczników, brak dodatkowego definiowania zmiennych. Wszystko wewnątrz $wiersz jest. Najbardziej istotne jest tu użycie continue, które wiele osób zapomina lub nie wie, że istnieje. Wielu zna break za to przy case choćby. Ta której użyłem nie jest zbyt powszechna, choć godna uwagi, bo od razu kieruje do następnego kroku pętli. Patrz na kod tutaj na forum pisany przez zaawansowanych userów, a sam zobaczysz, że jest wiele ciekawych rozwiązań. Temat z racji prostoty przenoszę na Przedszkolę, bo PHP to dla niego stanowczo za dużo winksmiley.jpg
adi456
dzięki widzę że mogę liczyć na pomoc

"krispak" niestety

$inne = ($nowy == "tak") ? mysql_result($result,$i,"inne") : ""; - działa odwrotnie, gdy $nowy jest tak wtedy zawartość się ukrywa a jeżeli dam
$inne = ($nowy == "nie") ? mysql_result($result,$i,"inne") : ""; - wtedy nic się nie wyświetla

ale trochę źle określiłem problem oto mój skrypt i chciałbym żeby wartości #telefon i #stan wyświetlały sie cały czas a #siec #simlock #kolor ukrywały się gdy #stan ma wartość "UZYWANY" lub pokazywały się #siec #simlock #kolor gdy #stan ma wartość "NOWY"

  1. <html>
  2. <head>
  3.  
  4. <style type="text/css">
  5. td { font-size: 14px; text-align: center; }
  6.  
  7. #telefon { width: 100px; color: red; }
  8. #stan { width: 150px; }
  9.  
  10. #siec { width: 100px; }
  11. #simlock { width: 70px; }
  12. #kolor { width: 100px; }
  13.  
  14. </style>
  15. </head>
  16. <body>
  17.  
  18. <div style="width: 2200px">
  19. <table border="1" style="border-collapse: collapse;" >
  20.  
  21. <tr>
  22. <td id="telefon">telefon:</td>
  23. <td id="stan">STAN TELEFONU:</td>
  24.  
  25. <td id="siec">siec:</td>
  26. <td id="simlock">SIMLOCK:</td>
  27. <td id="kolor">Kolor:</td>
  28. </tr>
  29. </table>
  30.  
  31. <?
  32. $username="...";
  33. $password="...";
  34. $database="...";
  35.  
  36. mysql_connect('localhost',$username,$password);
  37. @mysql_select_db($database) or die("Nie odnaleziono bazy danych");
  38. $query="SELECT * FROM .......";
  39. $result=mysql_query($query);
  40.  
  41. $num=mysql_numrows($result);
  42.  
  43.  
  44. $i=0;
  45. while ($i < $num) {
  46.  
  47. $model=mysql_result($result,$i,"model");
  48. $nowy=mysql_result($result,$i,"nowy");
  49.  
  50. $siec=mysql_result($result,$i,"siec");
  51. $simlock=mysql_result($result,$i,"simlock");
  52. $kolor=mysql_result($result,$i,"kolor");
  53.  
  54. <table border='1' style='border-collapse: collapse;' >
  55. <tr>
  56.  
  57. <td id='telefon'>$model</td>
  58. <td id='stan'>$nowy</td>
  59.  
  60. <td id='siec'>$siec</td>
  61. <td id='simlock'>$simlock</td>
  62. <td id='kolor'>$kolor</td>
  63.  
  64. </tr>
  65. </table>
  66. ";
  67. $i++;
  68. }
  69. ?>
  70. </div>
  71. </body>
  72. </html>


próbowałem również zastosować się do mysql_fetch_array() lecz bez powodzenia, co należało by zmienić w kodzie żeby działało?
thek
No napisanie niemal łopatologicznie na górze u mnie jak powinna wyglądać część z pętlą. Czego jeszcze nie potrafisz? Dorzucić tego co wewnątrz pętli? Masz tam napisane jak się odwołujesz do pól, więc tylko uzupełnij kod i nic więcej. To kwestia wrzucenia góra kilku linijek już, z czego 90% to html.
adi456
Zrobiłem tak i nie działa

  1. <?
  2. $username="...";
  3. $password="...";
  4. $database="...";
  5.  
  6. mysql_connect('localhost',$username,$password);
  7. @mysql_select_db($database) or die("Nie odnaleziono bazy danych");
  8. $query="SELECT * FROM ...";
  9. $result=mysql_query($query);
  10.  
  11. $num=mysql_numrows($result);
  12.  
  13.  
  14.  
  15. while( $wiersz = mysql_fetch_assoc($result) ) {
  16.  
  17. $model=mysql_result($result,$wiersz,"model");
  18. $nowy=mysql_result($result,$wiersz,"nowy");
  19.  
  20. $siec=mysql_result($result,$wiersz,"siec");
  21. $simlock=mysql_result($result,$wiersz,"simlock");
  22. $kolor=mysql_result($result,$wiersz,"kolor");
  23.  
  24. <table border='1' style='border-collapse: collapse;' >
  25. <tr>
  26.  
  27.  
  28. <td id='telefon'>$model</td>
  29. <td id='stan'>$nowy</td>
  30.  
  31. </tr>
  32. </table>
  33. ";
  34.  
  35. if( $wiersz['nowy'] == 'NOWY' ) {
  36.  
  37. <table border='1' style='border-collapse: collapse;' >
  38. <tr>
  39.  
  40. <td id='siec'>$siec</td>
  41. <td id='simlock'>$simlock</td>
  42. <td id='kolor'>$kolor</td>
  43. </tr>
  44. </table>
  45. ";
  46.  
  47. } else {
  48.  
  49. continue;
  50. }
  51.  
  52. }
  53.  
  54. ?>



rozumiem że błąd robie tutaj tylko jaki?

  1. $model=mysql_result($result,$wiersz,"model");
  2. $nowy=mysql_result($result,$wiersz,"nowy");
  3.  
  4. $siec=mysql_result($result,$wiersz,"siec");
  5. $simlock=mysql_result($result,$wiersz,"simlock");
  6. $kolor=mysql_result($result,$wiersz,"kolor");
krispak
  1. <?
  2. $username="...";
  3. $password="...";
  4. $database="...";
  5.  
  6. mysql_connect('localhost',$username,$password);
  7. @mysql_select_db($database) or die("Nie odnaleziono bazy danych");
  8.  
  9. $query = mysql_query("SELECT * FROM .......") or die(mysql_error());
  10.  
  11. while ($row = mysql_fetch_array($query))
  12. {
  13. $model = $row['model'];
  14. $nowy = $row['nowy'];
  15.  
  16. $siec = ($row['nowy'] == "NOWY") ? $row['siec'] : "";
  17. $simlock = ($row['nowy'] == "NOWY") ? $row['simlock'] : "";
  18. $kolor = ($row['nowy'] == "NOWY") ? $row['kolor'] : "";
  19.  
  20. echo "
  21. <table border='1' style='border-collapse: collapse;' >
  22. <tr>
  23.  
  24. <td id='telefon'>".$model."</td>
  25. <td id='stan'>".$nowy."</td>
  26.  
  27. <td id='siec'>".$siec."</td>
  28. <td id='simlock'>".$simlock."</td>
  29. <td id='kolor'>".$kolor."</td>
  30.  
  31. </tr>
  32. </table>
  33. ";
  34. }
  35. ?>
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.