Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Puste pola tabeli
kosy
post
Post #1





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 18.08.2005
Skąd: Pabianice

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


Mam pytanie odnośnie usuwania pustych pól tablicy.
Dane do tablicy pobieram z tabeli w której kilka pozycji może być pustych.
Chciałbym żeby wyświetlane były tylko te pozycje w których wpisane są wartości.
Dane pobieram:
  1. <?php
  2. $g=mysql_query("SELECT DISTINCT wybrane FROM wyniki");
  3. while($r=mysql_fetch_assoc($g)){
  4. ?>

Robiłem próby typu:
  1. <?php
  2. $wybrane = !empty($r['wybrane']);
  3.  
  4. lub
  5.  
  6. $wybrane = array_values($r['wybrane']);
  7. ?>

ale nie udało mi się osiągnąć celu.
Proszę o małą pomoc.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 14)
kszychu
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 712
Pomógł: 23
Dołączył: 27.10.2003
Skąd: z kontowni

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


  1. <?php
  2. $wybrane2 = array();
  3. foreach($wybrane as $wartosc)
  4.  if($wartosc != '') $wybrane2[] = $wartosc;
  5. print_r($wybrane2);
  6. ?>
Go to the top of the page
+Quote Post
phpion
post
Post #3





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




  1. SELECT DISTINCT wybrane FROM wyniki WHERE LENGTH(wybrane)>0;

?
Go to the top of the page
+Quote Post
kosy
post
Post #4





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 18.08.2005
Skąd: Pabianice

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


Gdziś robię jeszcze błąd bo wykonując kod
  1. <?php
  2. $g=mysql_query("SELECT DISTINCT wybrane FROM wyniki");
  3. while($r=mysql_fetch_assoc($g)){
  4. $wybrane = $r['wybrane'];
  5. $wybrane2 = array();
  6. foreach($wybrane as $wartosc)
  7. if($wartosc != '') $wybrane2[] = $wartosc;
  8. print_r($wybrane2);
  9. ?>

otrzymuje komunikat: Invalid argument supplied for foreach()
Go to the top of the page
+Quote Post
phpion
post
Post #5





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Jak juz chcesz wybierac wszystko i potem sprawdzac dodatkowo w php (a nie jak ja przedstawilem od razu w 1 zapytaniu SQL) to tak:
  1. <?php
  2. $wybrane = $wybrane2 = Array();
  3.  
  4. $g=mysql_query("SELECT DISTINCT wybrane FROM wyniki");
  5. if (mysql_num_rows($g) > 0)
  6. while($r=mysql_fetch_assoc($g))
  7. $wybrane[] = $r['wybrane'];
  8.  
  9. foreach($wybrane as $wartosc)
  10. if($wartosc != '') $wybrane2[] = $wartosc;
  11.  
  12. print_r($wybrane2);
  13. ?>
Go to the top of the page
+Quote Post
kszychu
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 2 712
Pomógł: 23
Dołączył: 27.10.2003
Skąd: z kontowni

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


Cytat(kosy @ 17.08.2006, 10:25 ) *
Gdziś robię jeszcze błąd bo wykonując kod
  1. <?php
  2. $g=mysql_query("SELECT DISTINCT wybrane FROM wyniki");
  3. while($r=mysql_fetch_assoc($g)){
  4. $wybrane = $r['wybrane'];
  5. $wybrane2 = array();
  6. foreach($wybrane as $wartosc)
  7. if($wartosc != '') $wybrane2[] = $wartosc;
  8. print_r($wybrane2);
  9. ?>

otrzymuje komunikat: Invalid argument supplied for foreach()


Masz otwartą klamrę po while ale nigdzie jej nie zamykasz. Dziwne, że nie masz parse errora.
Go to the top of the page
+Quote Post
phpion
post
Post #7





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Chodzi tu o foreach. Do zmiennej $wybrane przypisuje wartosc wyciagnieta z bazy i nie jest to tablica! Stad ten blad: nieprawidlowy argument w petli.
Poza tym przedstawilem 2 rozne sposoby na rozwiazanie tego problemu. Do zapytania SQL mozna dac inny warunek, bo nie wiem czy puste pola masz na mysli puste jao pusty ciag czy jako NULL. Jesli to 1 to moj przyklad powinien dzialac, jesli to 2 to zmien warunek na
  1. ... WHERE wybrane IS NOT NULL


Ten post edytował phpion.com 17.08.2006, 10:04:10
Go to the top of the page
+Quote Post
Ludvik
post
Post #8





Grupa: Przyjaciele php.pl
Postów: 698
Pomógł: 3
Dołączył: 28.03.2004
Skąd: Wrocław

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


Cytat(kosy @ 17.08.2006, 10:25 ) *
Gdziś robię jeszcze błąd bo wykonując kod
  1. <?php
  2. $g=mysql_query("SELECT DISTINCT wybrane FROM wyniki");
  3. while($r=mysql_fetch_assoc($g)){
  4. $wybrane = $r['wybrane'];
  5. $wybrane2 = array();
  6. foreach($wybrane as $wartosc)
  7. if($wartosc != '') $wybrane2[] = $wartosc;
  8. print_r($wybrane2);
  9. ?>

otrzymuje komunikat: Invalid argument supplied for foreach()


Usuń linię #4. Popraw też klamry, tak jak mówi kszychu.

Cytat(phpion.com @ 17.08.2006, 10:48 ) *
Jak juz chcesz wybierac wszystko i potem sprawdzac dodatkowo w php (a nie jak ja przedstawilem od razu w 1 zapytaniu SQL) to tak:
  1. <?php
  2. $wybrane = $wybrane2 = Array();
  3.  
  4. $g=mysql_query("SELECT DISTINCT wybrane FROM wyniki");
  5. if (mysql_num_rows($g) > 0)
  6. while($r=mysql_fetch_assoc($g))
  7. $wybrane[] = $r['wybrane'];
  8.  
  9. foreach($wybrane as $wartosc)
  10. if($wartosc != '') $wybrane2[] = $wartosc;
  11.  
  12. print_r($wybrane2);
  13. ?>

Nie rozumiem dlaczego sprawdzasz tylko jedno pole z wyniku. Klamry też by się przydały, bo nie da się tego czytać...
Go to the top of the page
+Quote Post
phpion
post
Post #9





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Po co klamry do tego przykladu? I jak to 1 pole?

Ten post edytował phpion.com 17.08.2006, 10:07:43
Go to the top of the page
+Quote Post
Ludvik
post
Post #10





Grupa: Przyjaciele php.pl
Postów: 698
Pomógł: 3
Dołączył: 28.03.2004
Skąd: Wrocław

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


Po to, żeby dało się to czytać... (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Nie lubię kodu bez klamerek, bo trzeba się bardziej zaangażować w zasięgi. Dodając klamry masz to wszystko widoczne na pierwszy rzut oka, nawet nie czytając instrukcji... Poza tym, jestem wzrokowcem... (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Twój kod pobiera z wszystkich rekordów pole 'wybrane' do tablicy o tej samej nazwie. Potem porównuje do pustego ciągu znaków kolejne elementy tej tablicy. Wypiszesz tylko niepuste elementy z kolumny 'wybrane'.

Skrypt kszycha sprawdza natomiast wszystkie pola z kolejnych rekordów, o co chyba chodziło autorowi wątku...
Go to the top of the page
+Quote Post
phpion
post
Post #11





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Nie no nie czaje cie. Wg mnie nasze skrypty robia to samo, a juz na pewno moj robi to co powinien (nie mowiac juz o samym zapytaniu SQL napisanym wczesniej)
Go to the top of the page
+Quote Post
Ludvik
post
Post #12





Grupa: Przyjaciele php.pl
Postów: 698
Pomógł: 3
Dołączył: 28.03.2004
Skąd: Wrocław

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


Pozwoliłem sobie na poprawki i podstawienie sztucznych danych zamiast SQL...

  1. <?php
  2.  
  3. $wybrane = $wybrane2 = Array();
  4.  
  5. $g = array(array('jeden' => '', 'dwa' => 'dwa1', 'wybrane' => ''),
  6.  array('jeden' => 'jeden2', 'dwa' => '', 'wybrane' => 'wybrane2'),
  7.  array('jeden' => 'jeden3', 'dwa' => 'dwa3', 'wybrane' => 'wybrane3'),
  8.  array('jeden' => '', 'dwa' => '', 'wybrane' => 'wybrane4'));
  9.  
  10. echo 'Skrypt 1:<br />';
  11.  
  12. foreach ($g as $r) {
  13. $wybrane[] = $r['wybrane'];
  14. }
  15.  
  16. foreach ($wybrane as $wartosc) {
  17. if($wartosc != '') $wybrane2[] = $wartosc;
  18. }
  19.  
  20. var_dump($wybrane2);
  21.  
  22. echo '<br /><br /><br /><br />';
  23. echo 'Skrypt 2:<br />';
  24.  
  25. foreach ($g as $r) {
  26. $wybrane2 = array();
  27. foreach($r as $wartosc) {
  28. if($wartosc != '') $wybrane2[] = $wartosc;
  29. }
  30. var_dump($wybrane2);
  31. echo '<br /><br />';
  32. }
  33.  
  34. ?>

Teraz widać różnicę? Domyślam się, że kszychu tak widział całość...
Go to the top of the page
+Quote Post
phpion
post
Post #13





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Ej no ale zauwaz, ze kolega w swoim zapytaniu SQL wyciaga tylko 1 pole z bazy! Wiec, o ile dobrze zrozumiem jego zamierzenia, sposoby przedstawione przeze mnie beda ok.
Go to the top of the page
+Quote Post
Ludvik
post
Post #14





Grupa: Przyjaciele php.pl
Postów: 698
Pomógł: 3
Dołączył: 28.03.2004
Skąd: Wrocław

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


Fakt, masz rację. Przeoczyłem zapytanie i zasugerowałem się liczbami mnogimi w treści posta. Zwracam honor (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
phpion
post
Post #15





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




No (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
A tak na dobra sprawe mozna tez tak:
  1. SELECT DISTINCT wybrane FROM wyniki WHERE wybrane != '';

hehehe
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 23.08.2025 - 18:32