Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: funkcja raz działa raz nie
Forum PHP.pl > Forum > PHP
john_doe
Witam,

mam funkcję w stylu

  1. <?php
  2. function wypisz($id)
  3. {
  4.  switch($id)
  5.  {
  6.     case: 27;
  7.     print ' 1,2,3';
  8.     break;
  9.  }
  10. }
  11.  
  12. //i potem
  13.  
  14. $ajdi = $_SESSION['xlid'];
  15. $printuj = wypisz($ajdi);
  16. print $printuj; // printuje ok 1,2,3
  17.  
  18. $zapytanie = "id in (" . $printuj .")"; // tutaj $printuj jest puste
  19. ?>


o co chodzi?
antyqjon
Cytat(john_doe @ 15.07.2009, 15:26:00 ) *
Witam,

mam funkcję w stylu

  1. <?php
  2. $printuj = wypisz($ajdi);
  3. ?>


o co chodzi?

A jak myślisz, co zwraca Twoja funkcja?
pks
Rzuć okiem jak powinno wyglądać przykładowe switch:

Kod
switch($_GET['act'])
    {
        case 'dodaj':
            echo 'Dodawanie danych';            
            break;
        case 'edytuj':
            echo 'Edycja danych';
            break;
        case 'usun':
            echo 'Usuwanie danych';
            break;
        default:
            echo 'Wyświetlenie danych';    
    }
john_doe
zwraca string 1,2,3
blooregard
Cytat
zwraca

Bez return?
Ciekawe...
john_doe
pisałem na forum z ręki i faktycznie winno być "case cos:"

dałem coś takiego i nadal nie chodzi

  1. <?php
  2. function wypisz($id)
  3. {
  4. switch($id)
  5. {
  6.    case 27:
  7.    $string = ' 1,2,3';
  8.    break;
  9. }
  10. return $string;
  11. }
  12. ?>
kefirek
No przecież działa
  1. <?php
  2. function wypisz($id)
  3. {
  4. switch($id)
  5. {
  6.   case 27:
  7.   $string = ' 1,2,3';
  8.   break;
  9. }
  10. return $string;
  11. }
  12.  
  13.  
  14. $id = 27;
  15.  
  16. echo wypisz($id);
  17. ?>
john_doe
działa... ale jak zapodaje

  1. <?php
  2. $printuj = wypisz($id)
  3. $zapytanie = "id in (" . $printuj .")"; // tutaj $printuj jest puste
  4. ?>


tutaj jest pusto
Wicepsik
  1. <?php
  2. function wypisz($id)
  3. {
  4. switch($id)
  5. {
  6.    case: 27;
  7.    $cos = ' 1,2,3';
  8.    break;
  9. }
  10. return $cos;
  11. }
  12.  
  13. //i potem
  14.  
  15. $ajdi = $_SESSION['xlid'];
  16.  
  17.  
  18. $zapytanie = "id in (" . wypisz($ajdi) .")"; // tutaj $printuj jest puste
  19. ?>
SzamanGN
Musisz zmienić swoją funkcję tak:

  1. <?php
  2. function wypisz($id)
  3.  
  4.  {
  5.  
  6.  switch($id)
  7.  
  8.   {
  9.  
  10.   case 27:
  11.  
  12.    $pokaz=' 1,2,3';
  13.  
  14.    break;
  15.  
  16.   default:
  17.  
  18.    $pokaz=' 0'; //Domyślny wpis, który spowoduje, że zapytanie nic nie zwróci.
  19.  
  20.   }
  21.  
  22.   return $pokaz;
  23.  
  24.  }
  25. ?>


Zapamiętaj, ze używając switch w twojej funkcji i tylko jeden warunek w case=27, to tylko wartość 27 spełni warunek twojej funkcji!
john_doe
dokładnie tak mam teraz funkcję i teraz:

  1. <?php
  2. $id = 27;
  3.  
  4. print wypisz($id); // dostaję na ekran 27
  5.  
  6. // ale gdy zrobię tak
  7.  
  8. $query = "select * from tabela where id in (" . wypisz($id) . ")";
  9.  
  10. //lub
  11.  
  12. $query = "select * from tabela where id in (" . print wypisz($id) . ")";
  13.  
  14. print $query;   // czy tak czy tak nie działą
  15. ?>
dr_bonzo
john_doe: pokaz tresc funkcji wypisz, bo co chwile jest zmieniana a ty nie mowisz ktorej uzywasz.
No i print() NIE zwroci ci napisu, tylko 1
john_doe
ok,
$id pochodzi z sesji $_SESSION['xlid']
  1. <?php
  2. function returnGidsAkw($id)
  3. {
  4.    
  5.    switch ( $id )
  6.    {
  7.    // ----------- M 1 -----------------------
  8.        case 282:
  9.        $string = '282, 69, 295, 84';
  10.        exit;
  11.        
  12.        case 69:
  13.        $string =  '69';
  14.        exit;        
  15.        
  16.        case 295:
  17.        $string =  '295';
  18.        exit;
  19.  
  20.        case 84:
  21.        $string =  '84';
  22.        exit;        
  23.        
  24.    // ----------- M 2 -----------------------        
  25.        case 12:
  26.        $string =  '12, 78, 302, 277, 293, 147, 176';
  27.        exit;
  28.        
  29.        case 78:
  30.        $string =  '78';
  31.        exit;        
  32.        
  33.        case 302:
  34.        $string =  '302';
  35.        exit;        
  36.        
  37.        case 277:
  38.        $string =  '277';
  39.        exit;        
  40.        
  41.        case 293:
  42.        $string =  '293';
  43.        exit;        
  44.    
  45.        case 147:
  46.        $string =  '147';
  47.        exit;    
  48.        
  49.        case 176:
  50.        $string =  '176';
  51.        exit;        
  52.        
  53.    // ----------- M 2 -----------------------        
  54.        case 283:
  55.        $string =  '283, 39, 136, 280, 291';
  56.        exit;        
  57.        
  58.        case 39:
  59.        $string =  '39';
  60.        exit;    
  61.  
  62.        case 136:
  63.        $string =  '136';
  64.        exit;    
  65.  
  66.        case 280:
  67.        $string =  '208';
  68.        exit;        
  69.  
  70.        case 291:
  71.        $string =  '291';
  72.        exit;            
  73.        
  74.        case 130:
  75.        $string =  '282, 69, 295, 84, 12, 78, 302, 277, 293, 147, 176, 283, 39, 136, 280, 291';
  76.        break;
  77.        
  78.        case 148:
  79.        $string =  '282, 69, 295, 84, 12, 78, 302, 277, 293, 147, 176, 283, 39, 136, 280, 291';
  80.        break;
  81.  
  82.        case 13:
  83.        $string =  '282, 69, 295, 84, 12, 78, 302, 277, 293, 147, 176, 283, 39, 136, 280, 291';
  84.        break;        
  85.        
  86.        case 5555555:
  87.        $string =  '282, 69, 295, 84, 12, 78, 302, 277, 293, 147, 176, 283, 39, 136, 280, 291';
  88.        break;
  89.  
  90.        case 63:
  91.        $string =  '282, 69, 295, 84, 12, 78, 302, 277, 293, 147, 176, 283, 39, 136, 280, 291';
  92.        break;        
  93.        
  94.        default:
  95.        $string = '0';
  96.    }
  97.    return $string;
  98. }
  99. ?>


i teraz nie wiem zupełnie dlaczego działa jak zaloguje sie numerek id usera 130 i w dół czyli te które zwaracjają ten ciag
'282, 69, 295, 84, 12, 78, 302, 277, 293, 147, 176, 283, 39, 136, 280, 291'
jest ok.
na pozostałe nie. Czyli ten $string pakuje do zapytanie SQL. Dlaczego nie działa dla pozostałych??

  1. <?php
  2. $id    = $_SESSION['xlid'];
  3.  
  4.  include('../../templates/header.php');
  5.  include('../../funkcje/returnGidsAkw.php');  // tutaj ta funkcja
  6.  include('../../db/conection.php');
  7.  include('../../querries/plansQuerries.php');  
  8. print $zapytanie; // i tutaj dla numerka np 12 nic kompletnie nie wypisuje tylko dla tych o których pisałem wyżej
  9. ?>


-----EDIT: można zamknąć. Moja wina. jak widać wyżej w funkcji zamiast brak; dałem exit;
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.