Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL] Co oznacza ten zapis ?
Wolfie
post
Post #1





Grupa: Zarejestrowani
Postów: 686
Pomógł: 0
Dołączył: 10.11.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


Witam , mam sobie tabele w bazie danych ktora wyglada nastepujaco :

+-----------+-----------------+----------------+-------------------+
| people_id | people_fullname | people_isactor | people_isdirector |
+-----------+-----------------+----------------+-------------------+
| 1 | Jim Carrey | 1 | 0 |
| 2 | Tom Shadyac | 0 | 1 |
| 3 | Lawrence Kasdan | 0 | 0 |
| 4 | Kevin Kline | 1 | 0 |
| 5 | Ron Livingston | 0 | 0 |
| 6 | Mike Judge | 0 | 0 |
+-----------+-----------------+----------------+-------------------+

Nastepnie istnieje kod php ktorego troszke nie rozumiem:

  1. <?php
  2. $peoplesql = "SELECT * FROM people";
  3.    
  4.    $result = mysql_query($peoplesql) or die ("Niepoprawne zapytanie: ". mysql_error());
  5.    
  6.    while($row = mysql_fetch_array($result)) {
  7.        $people[$row['people_id']] = $row['people_fullname'];
  8. ?>


Dokładnie chodzi o tą linijke :

  1. <?php
  2. $people[$row['people_id']] = $row['people_fullname'];
  3. ?>


Nie rozumiem zapisu po prawej stronie znaku równości
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
#luq
post
Post #2





Grupa: Zarejestrowani
Postów: 589
Pomógł: 91
Dołączył: 22.05.2008
Skąd: Gliwice

Ostrzeżenie: (0%)
-----


erix w tym przypadku nie jest to chyba tablica asocjacyjna, people_id w bazie jest typu integer.

Otrzymujemy coś takiego
  1. <?php
  2. $people[1] = 'Jim Carrey';
  3. $people[2] = 'Tom Shadyac';
  4. [...]
  5. ?>


natomiast nie tak:
  1. <?php
  2. $people['1'] = 'Jim Carrey';
  3.  $people['2'] = 'Tom Shadyac';
  4. [...]
  5. ?>


W każdym bądź razie, dla wyjaśnienia. Wolfie w PHP tablice można tworzyć niejawnie, tzn, jeśli nie istnieje tablica $people, a później jest kawałek kodu:
  1. <?php
  2. $people[0] = 'coś tam';
  3. ?>

to najpierw jest tworzona tablica $people, a następnie do 0 indeksu jest dodawana wartość 'coś tam'

W takim przypadku:
  1. <?php
  2. $people = array();
  3.  $people[0] = 'coś tam';
  4. ?>

Najpierw jawnie jest tworzona tablica, następnie jest do wpisywane 'coś tam'


Na koniec jeszcze dodam, że tworzenie niejawne tablicy jest niewskazane. Dlaczego? Jeśli nie maiłabyś w bazie żadnego rekordu pasującego do zapytania to w przypadku wywołania później np:
  1. <?php
  2. sort( $people );
  3. ?>

Wywali błąd.
$people nie jest brana w kontekście tablicy a sort wymaga jako pierwszego argumentu tablicy. Dlatego polecam pisać, np w Twoim przypadku:
  1. <?php
  2. $people = array();
  3.    while($row = mysql_fetch_array($result)) {
  4.         $people[$row['people_id']] = $row['people_fullname'];
  5.    }
  6. ?>


Spory wywód ale mam nadzieje, że na coś się przyda (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 15.10.2025 - 18:58