logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

PHP: Jak przesyłać i zwiększać zmienną przez URL? Skrypt nie działa

barytek 18 Lis 2008 15:08 1567 16
REKLAMA
  • #1 5753878
    barytek
    Poziom 23  
    Posty: 787
    Pomógł: 18
    Ocena: 58
    Jestem bardzo początkujący w pisaniu programów PHP.
    Chcę napisać skrypt który wyświetla liczbę na początku 1 lub zero.
    Poniżej link.
    Kliknięcie w link powoduje zwiększenie wartości o jeden. Chcę wykorzystać przenoszenie zmiennej przez adres.

    <?
    print($a);
    $a=a+1;
    print'<a href="index.php?a='.$a.'">TEST</a>';
    ?>


    czy błąd jest związany w nie określonością zmiennej?
    Jak to obejść?

    Dodano po 6 [minuty]:

    ten skrypt nie działa. Nie wiem czemu
  • REKLAMA
  • Pomocny post
    #2 5753933
    Jaduda
    Poziom 32  
    Posty: 1355
    Pomógł: 235
    Ocena: 196
    Powinno być chyba tak (bo pisze z pamięci):
    <?php
    if ($_GET['param']<>"")
    $a=$_GET['param'];
    else
    $a=0;
    $a=$a+1;
    echo "<a href=\"index.php?param=" . $a ."\">TEST</a>";
    ?>
    
  • REKLAMA
  • #3 5753936
    tzok
    VIP Zasłużony dla elektroda
    Posty: 38765
    Pomógł: 3171
    Ocena: 6507
    ...a gdzie pobierasz tą zmienną 'z adresu' ;)
    :arrow: $_GET()

    ***

    Jaduda - na przyszłość nie podawaj gotowego kodu, niech autor sam poszuka i się czegoś nauczy, ty go tylko naprowadź czego ma szukać.
  • REKLAMA
  • #4 5753950
    barytek
    Poziom 23  
    Posty: 787
    Pomógł: 18
    Ocena: 58
    Właśnie szukałem i niegdzie nie było napisane że trzeba pobrać jakoś dane.
  • #5 5753957
    tzok
    VIP Zasłużony dla elektroda
    Posty: 38765
    Pomógł: 3171
    Ocena: 6507
    Możesz skorzystać z sesji lub ciasteczka do przechowania wartości albo przekazać wartość przez mechanizm GET lub POST.
  • #6 5755892
    barytek
    Poziom 23  
    Posty: 787
    Pomógł: 18
    Ocena: 58
    To ja wiem. Ale sesje jak dla mnie są jeszcze za bardzo skąplikowane, a pozatym nie widzę konieczności stosowania ich w tak prostej stronie, jaką chcę zrobić.
    Mam jedno pytanie czym różni się print od echo? I dlaczego w tym skrzypice zostało użyte echo?
    Strona którą tworze ma być galerią zdjęć mojego autorstwa. Galeria jest już dostępna ale w HTMLu pod adresem WWW.barytek.za.pl zapraszam.
  • Pomocny post
    #7 5756140
    tzok
    VIP Zasłużony dla elektroda
    Posty: 38765
    Pomógł: 3171
    Ocena: 6507
    Generalnie print od echo różni się... niczym ;) zaleca się używać echo, bo jest szybsze. Można też używać printf() - działa jak w C.

    Na stronie zadbaj o sprawdzenie rozdzielczości ekranu/rozmiaru okna przeglądarki, bo na ekranie 4:3 layout się rozłazi...

    Popatrz sobie na kod strony, można taką galerię (generowaną dynamicznie!) zrobić bez PHP:
    www.mleczkoimagegallery.prv.pl
  • #8 5759097
    barytek
    Poziom 23  
    Posty: 787
    Pomógł: 18
    Ocena: 58
    Co tu nie gra? Serwer nie wskazuje mi miejsca wystąpienia błędu, a sam nie mogę dojść.

    
    print'<h1>test</h1>';
    
    if ($_GET['menu']<>"") 
    $menu=$_GET['menu']; 
    else 
    $menu=0; 
    echo($menu);
    echo"<br>";
    switch ($menu) 
    		{
    	  		case "1": 
    				echo "<a href="index.php?menu=1"><b>O mnie   </b></a>";
    				echo "<a href="index.php?menu=2">Galeria   </a>";
    				echo "<a href="index.php?menu=3">O stronie   </a>";
    			break; 
    			case "2":
       	  		echo "<a href="index.php?menu=1">O mnie   </a>";
    				echo "<a href="index.php?menu=2"><b>Galeria   </b></a>";
    				echo "<a href="index.php?menu=3">O stronie   </a>";
      			break;
      			case "3": 
    				echo "<a href="index.php?menu=1">O mnie   </a>";
    				echo "<a href="index.php?menu=2">Galeria   </a>";
    				echo "<a href="index.php?menu=3"><b>O stronie  </b></a>";
    			break; 
    			default: 
    		}  
  • Pomocny post
    #9 5759184
    Jaduda
    Poziom 32  
    Posty: 1355
    Pomógł: 235
    Ocena: 196
    barytek napisał:
                echo "<a href="index.php?menu=1"><b>O mnie   </b></a>";
                echo "<a href="index.php?menu=2">Galeria   </a>";
                echo "<a href="index.php?menu=3">O stronie   </a>"; 

    zamień na
                echo "<a href=\"index.php?menu=1\"><b>O mnie   </b></a>";
                echo "<a href=\"index.php?menu=2\">Galeria   </a>";
                echo "<a href=\"index.php?menu=3\">O stronie   </a>"; 
    Czyli dodaj \ przed cudzysłów.
  • #10 5759328
    barytek
    Poziom 23  
    Posty: 787
    Pomógł: 18
    Ocena: 58
    Nie w tym problem.
    powinno być:
    echo '<a href="index.php?menu=1"><b>O mnie   </b></a>';
    				echo '<a href="index.php?menu=2">Galeria   </a>';
    				echo '<a href="index.php?menu=3">O stronie   </a>';
  • #11 5760540
    tzok
    VIP Zasłużony dla elektroda
    Posty: 38765
    Pomógł: 3171
    Ocena: 6507
    Jeśli chodzi i cudzysłowy to oba zapisy są poprawne, ale bezpieczniejszy ten zaproponowany przez Jaduda...
  • #12 5761553
    barytek
    Poziom 23  
    Posty: 787
    Pomógł: 18
    Ocena: 58
    Może i bezpieczniejszy. Ale co mi po tym skoro on nie działa?
  • #13 5787195
    barytek
    Poziom 23  
    Posty: 787
    Pomógł: 18
    Ocena: 58
    teraz mam nowy problem.

    <?
    
    $a=1;
    $b=2;
    $c=3;
    
    
    function Url () 
    	{
    	$zmienna.='a='.$a.' b='.$b.' c='.$b;
    	
      
    	return $zmienna;
    	
    	}
    echo Url();
    
    ?>


    Wynik kodu to:

    a dlaczego nie:

    ??
  • #14 5787362
    tzok
    VIP Zasłużony dla elektroda
    Posty: 38765
    Pomógł: 3171
    Ocena: 6507
    Nie ucz się takich rzeczy... gdzie przekazujesz zmienne do funkcji?
    Dlaczego '$zmienna.=' a nie '$zmienna='? PHP znam słabo, ale te zmienne to int a łączysz je ze stringiem, nie powinno być czasem $a="1"?
  • REKLAMA
  • Pomocny post
    #15 5788025
    ostry_18
    Poziom 24  
    Posty: 824
    Pomógł: 64
    Ocena: 35
    Polecam kurs PHP na stronei webhosting.pl :)
  • #16 5788934
    barytek
    Poziom 23  
    Posty: 787
    Pomógł: 18
    Ocena: 58
    tzok napisał:
    Nie ucz się takich rzeczy... gdzie przekazujesz zmienne do funkcji?
    Dlaczego '$zmienna.=' a nie '$zmienna='? PHP znam słabo, ale te zmienne to int a łączysz je ze stringiem, nie powinno być czasem $a="1"?


    Wypowiedz jest dla mnie nie zrozumiała.
    „Nie ucz się takich rzeczy... gdzie przekazujesz zmienne do funkcji?” to pytanie, stwierdzenie czy co?

    „nie powinno być czasem $a="1"?”
    - NIE POWINNO! To jest tylko przykładowy skrypt, w oryginalnym wykonuje działania matematyczne na tych zmiennych.

    Dodano po 1 [minuty]:

    ostry_18 napisał:
    Polecam kurs PHP na stronei webhosting.pl :)


    Dziękuję. Bardzo dobry kurs. Pierwszy który mi się naprawdę podoba. Miło się go czyta.

    Dodano po 32 [minuty]:

    Czy ja sam sobie muszę udzielać odpowiedzi na zadane pytania??
    Błąd skryptu wynikał z tego, że zmienne $a $b $c były zmiennymi globalnymi niewidzianymi w funkcji.
    Działający kod to:
    <?
    $a=1;
    $b=2;
    $c=3;
    
    function Url () {
        global $a;
        global $b;
        global $c;
        $zmienna.='a='.$a.' b='.$b.' c='.$b;
        return $zmienna;
    }
    echo Url();
    
    ?>


    ps. szkoda ze samemu sobie nie można przyznawać punktów na pomoc.
  • #17 5790058
    tzok
    VIP Zasłużony dla elektroda
    Posty: 38765
    Pomógł: 3171
    Ocena: 6507
    Nie ucz się takich rzeczy = nie ucz się stosować zmiennych globalnych. Zmienne należało przekazać jako parametry do tej funkcji.
    <? 
    $a=1; 
    $b=2; 
    $c=3; 
    
    function Url ($a_, $b_, $c_) { 
        $zmienna.='a='.$a_.' b='.$b_.' c='.$c_; 
        return $zmienna; 
    } 
    echo Url($a, $b, $c); 
    
    ?>

Podsumowanie tematu

✨ Dyskusja dotyczy problemu początkującego programisty PHP, który chce przesyłać zmienną przez URL i zwiększać jej wartość o jeden po kliknięciu w link. Podstawowy błąd wynikał z braku pobrania zmiennej z adresu za pomocą superglobalnej tablicy $_GET. Zaproponowano poprawny kod, który sprawdza istnienie parametru w URL, inicjalizuje zmienną i inkrementuje ją, a następnie generuje link z aktualną wartością. Poruszono także różnicę między funkcjami print i echo, wskazując, że echo jest szybsze i zalecane. W kolejnych postach omawiano problem z używaniem zmiennych globalnych w funkcji, gdzie brak deklaracji global powodował, że zmienne nie były widoczne wewnątrz funkcji. Sugerowano przekazywanie zmiennych jako parametrów funkcji zamiast korzystania z globalnych. Dodatkowo zwrócono uwagę na poprawne użycie cudzysłowów w generowaniu linków HTML w PHP. Wskazano także na możliwość użycia sesji lub ciasteczek do przechowywania wartości, choć autor preferował prostsze rozwiązanie z przekazywaniem przez GET. Podsumowując, kluczowe jest prawidłowe pobieranie zmiennych z URL, odpowiednia składnia PHP oraz właściwe zarządzanie zakresem zmiennych w funkcjach.
Podsumowanie wygenerowane przez AI na podstawie treści dyskusji.
REKLAMA