Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Problem z widocznością zmiennych
Forum PHP.pl > Forum > Przedszkole
majestiq
  1. <html>
  2. <head>
  3. <?php
  4.  
  5. (...)
  6.  
  7.    $id = $_GET['id'];
  8.    $cat = $_GET['cat'];
  9.  
  10.    
  11. if ($id)
  12.  
  13.  
  14.   {
  15.    $wczytaj_pliki = "SELECT * FROM pliki WHERE file_id=$id";
  16.    $answ = mysql_query($wczytaj_pliki, $conn);
  17.     echo mysql_errno() . ": " . mysql_error(). "\n";
  18.     // wyświetlany wyniki zapytania
  19.    
  20.            while($rek = mysql_fetch_array($answ)) {
  21.                    echo $rek['file_name']." - ";
  22.                    echo $rek['file_cat']." - ";
  23.                    echo $rek['file_dl_link']." - ";
  24.                    echo $rek['file_desc']."<br />";
  25.              }
  26.              
  27. }
  28.  
  29.  
  30.  
  31.  
  32.  
  33. echo "<title>" . $rek['file_name'] . "</title>";
  34.  
  35. ?>
  36.  
  37.  
  38. </head>
  39. <body>
  40.  
  41. <div style="float:left: width:200px; height:100px; border:#ff0000 solid 1px;"><?php echo $rek['file_name']." - ";
  42. ?></div>
  43. <div style="float:left: width:200px; height:100px; border:#ff0000 solid 1px;"><?php echo $rek['file_cat']." - ";
  44. ?></div>
  45.  
  46.  
  47.  
  48.  
  49. </body>
  50. </html>



Problem polega na tym, że poza pętlą while nie mogę wyświetlić zmiennej $rek['file_name'] (np. w tytule).
Potrzebuje operować na tej zmiennej, ale bez sensu, żeby za każdym razem gdy chcę gdzieś jej użyć pisać pętle while...
Co mam zrobić, żeby używać w tej zmiennej, w dowolnym miejscu questionmark.gif
tomick33
nonsens - generowanie jednego tytułu z pętli while, która pobiera wiele wyników.
majestiq
Pobiera wyniki tylko dla jednego rekordu (po id)
Jak byś Ty to zrobił ?
tomick33
nie wiem czy dobrze zrozumiałem - chcesz pobrać jeden plik ? Jeśli tak to zobacz:

  1. <html>
  2. <head>
  3. <?php
  4.  
  5. (...)
  6.  
  7.  $id = (int)$_GET['id'];
  8.  $cat = (int)$_GET['cat'];
  9.  
  10. if ($id)
  11. {
  12.  $wczytaj_pliki = "SELECT * FROM pliki WHERE file_id=$id";
  13.  $answ = mysql_query($wczytaj_pliki, $conn);
  14.   // wyświetlany wyniki zapytania
  15.  
  16.          $rek = mysql_fetch_array($answ);
  17.                  echo $rek['file_name']." - ";
  18.                  echo $rek['file_cat']." - ";
  19.                  echo $rek['file_dl_link']." - ";
  20.                  echo $rek['file_desc']."<br />";
  21.          
  22.          
  23.   echo "<title>" . $rek['file_name'] . "</title>";              
  24. }
  25. else
  26. {
  27. ?>
  28. <title>lista plików</title>
  29. </head>
  30.  
  31. <div style="float:left: width:200px; height:100px; border:#ff0000 solid 1px;"><?php echo $rek['file_name']." - ";
  32. ?></div>
  33. <div style="float:left: width:200px; height:100px; border:#ff0000 solid 1px;"><?php echo $rek['file_cat']." - ";
  34. ?></div>
  35. </body>
  36. </html>
  37. <?php
  38. }
  39. ?>


sorry, ale tak zamotałeś kod, że sam nie wiem czego po nim oczekujesz tongue.gif

Cytat(majestiq @ 25.12.2008, 13:10:18 ) *
Pobiera wyniki tylko dla jednego rekordu (po id)
Jak byś Ty to zrobił ?

generuje jeden wynik bo taki podałeś warunek, ale while to pętla do pobierania wyników więc w tym przypadku nie było potrzeby jej użycia
majestiq
No to jak bez tej petli wyswietlic cos co zwraca SELECT questionmark.gif

  1. <?php
  2. $wczytaj_pliki = "SELECT * FROM pliki WHERE file_id=$id";
  3.    $answ = mysql_query($wczytaj_pliki, $conn);
  4.     echo mysql_errno() . ": " . mysql_error(). "\n";
  5.     // wyświetlany wyniki zapytania
  6.    
  7.    
  8.  
  9. echo $answ['file_name'];
  10. ?>


Nie zwraca mi nic !
Tylko przy pomocy pętli mogę się do tego dobrać ?!
tomick33
Cytat(majestiq @ 25.12.2008, 14:19:24 ) *
No to jak bez tej petli wyswietlic cos co zwraca SELECT questionmark.gif

to jak chcesz pobrać jeden wynik z pętli zwracającej wiele wyników?

dobra, ja nie wnikam bo nie znam pełnej struktury tego skryptu oraz jakie wyniki ma otrzymywać. Chcesz while to ok, ale czego ty chcesz, skoro i tak masz warunek if($id) { } więc bez tego numeru ta pętla nawet się nie wykona, a nawet jak wykona z $id to zwróci tobie tyle $rek['file_name'] ile jest tam plików więc jednego file_name nie pobierzesz, ja bym zupełnie inaczej zorganizował ten skrypt.
majestiq
if($id) jest w sumie zawsze spelnione bo jest brane z nazwy pliku (GET)
i jak zalozmy nazwa to: plik.php?id=1 to wtedy ma mi pobrać dane dal pliku o id=1
czyli, nazwa pliku itp.

Chodzi tylko o to jak to zrobić żeby to było widoczne w każdym miejscu a nie tylko wewnatrz pętli while.

Może inaczej jak pobieram z bazy w ten sposób dane o danym pliku:

  1. <?php
  2. $wczytaj_pliki = "SELECT * FROM pliki WHERE file_id=$id";
  3.    $answ = mysql_query($wczytaj_pliki, $conn);
  4. ?>


i jednym z pobranych rekordów jest nazwa pliku - (file_name)
to jak to pobrać (bez pętli skoro mówisz, że tak można) i użyć tego np. w tytule i załóżmy w stopce.
Bo w tym momencie ja muszę (tylko tak potrafię) w każdym miejscu gdzie chce tego użyć pisać całą tą pętle while,
a chciałbym poprostu pod jakąś zmienną przechwycić nazwę pliku i jej używać gdzie mi się podoba bez kombinowania.
\


EDIT

Dobra już wiem, wystarczylo w petli utworzyc dodatkowa zmienne ($nazwa) i juz moge jej wszedzie uzywac tongue.gif

  1. <?php
  2. while($rek = mysql_fetch_array($answ)) {
  3.                    $nazwa = $rek['file_name'];
  4.                    echo $rek['file_name']." - ";
  5.                    echo $rek['file_cat']." - ";
  6.                    echo $rek['file_dl_link']." - ";
  7.                    echo $rek['file_desc']."<br />";
  8.              }
  9. ?>
bartg
tomick, bez obrazy ale jak nie wiesz to się nie odzywaj smile.gif

Jeśli zapytanie zawsze ściągnie jeden rekord to możesz to zrobi tak:
  1. <html>
  2. <head>
  3. <?php
  4.  
  5. (...)
  6.  
  7. $id = (int)$_GET['id'];
  8. $cat = (int)$_GET['cat'];
  9.  
  10. if ($id)
  11. {
  12. $wczytaj_pliki = "SELECT * FROM pliki WHERE file_id=$id LIMIT 1";
  13. $answ = mysql_query($wczytaj_pliki, $conn);
  14.  // wyświetlany wyniki zapytania
  15.  
  16.         $rek = mysql_fetch_array($answ);
  17.                 echo $rek[0]['file_name']." - ";
  18.                 echo $rek[0]['file_cat']." - ";
  19.                 echo $rek[0]['file_dl_link']." - ";
  20.                 echo $rek[0]['file_desc']."<br />";
  21.        
  22.        
  23.  echo "<title>" . $rek[0]['file_name'] . "</title>";              
  24. }
  25. else
  26. {
  27. ?>
  28. <title>lista plików</title>
  29. </head>
  30.  
  31. <div style="float:left: width:200px; height:100px; border:#ff0000 solid 1px;"><?php echo $rek[0]['file_name']." - ";
  32. ?></div>
  33. <div style="float:left: width:200px; height:100px; border:#ff0000 solid 1px;"><?php echo $rek[0]['file_cat']." - ";
  34. ?></div>
  35. </body>
  36. </html>
  37. <?php
  38. }
  39. ?>


Dodam tylko, że w else nie wyswielti nic bo nei pobierasz rekordu smile.gif
majestiq
Tak chyba jest bardziej uniwersalnie:


  1. <?php
  2.  
  3. if ($id)
  4.  
  5.  
  6.   {
  7.    $wczytaj_pliki = "SELECT * FROM pliki WHERE file_id=$id";
  8.    $answ = mysql_query($wczytaj_pliki, $conn);
  9.     echo mysql_errno() . ": " . mysql_error(). "\n";
  10.     // wyświetlany wyniki zapytania
  11.    
  12.            while($rek = mysql_fetch_array($answ)) {
  13.                    $nazwa = $rek['file_name'];
  14.                    echo $rek['file_name']." - ";
  15.                    echo $rek['file_cat']." - ";
  16.                    echo $rek['file_dl_link']." - ";
  17.                    echo $rek['file_desc']."<br />";
  18.    }
  19.  echo "<title>" . $nazwa . "</title>";
  20.  
  21. }
  22.  
  23.        
  24.        else {
  25.    
  26.            echo "<title>Lista plików</title>";                        
  27.  
  28.        }
  29.  
  30. ?>
  31.  
  32.  
  33. </head>
  34. <body>
  35.  
  36. <div style="float:left: width:200px; height:100px; border:#ff0000 solid 1px;"><?php echo $nazwa ." - ";
  37. ?></div>
  38. <div style="float:left: width:200px; height:100px; border:#ff0000 solid 1px;"><?php echo $nazwa." - ";
  39. ?></div>
  40.  
  41.  
  42.  
  43.  
  44. </body>
  45. </html>
  46. ?>
webdice
Przenoszę do działu Przedszkole.
xerek
Hm Za bardzo nie moge wywnioskowac o co Ci chodzi ale moze to pomoze. Przy wywolaniu zapytania i przechodzeniu po wynikach zapytania za pomoca petli skorzystac z funkcji array_push i wynik zapytania powiedzmy jedno pole ktore chcesz pozniej wykorzystywac dodawaj do tablicy za pomoca funkcji array_push()
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.