Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> KOlejność operacji...
szwabek
post
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 29.03.2009

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


Witam,
mam problem z kolejnością operacji...
Problem wyglada tak, że:
- mam formularz:
Kod
<form action="jakis_adres?id=<?php echo $_GET['id']; ?>" method="post">

- zmienną pobieraną z bazy danych:
Kod
$access = $rek['access'];

- a w formularzu przyciski zależne od zmiennej:
Kod
             if($access=="1")
                 echo'
                     <div style="position: absolute; left:210px; top:170px; ">
                         <button type=\"submit\" name="button1" disabled=\"disabled\" value="wl">Włącz</button>
                         <button type=\"submit\" name="button2" value="wyl">Wyłącz</button>
                     </div>
                 ';
                
             if($access=="0")
                 echo'
                     <div style="position: absolute; left:210px; top:170px; ">
                         <button type=\"submit\" name="button1" value="wl">Włącz</button>
                         <button type=\"submit\" name="button2" disabled=\"disabled\" value="wyl">Wyłącz</button>
                     </div>
                 ';                
                 if (isset($_POST['button1']))
                 {
                     $access = "1";
                     mysql_query("UPDATE komputery SET access='$access' WHERE id='$idk' ") or die('Błąd zapytania');
                 }
                 if (isset($_POST['button2']))
                 {
                     $access = "0";
                     mysql_query("UPDATE komputery SET access='$access' WHERE id='$idk' ") or die('Błąd zapytania');
                 }


Założenie było następujące.
Jak klikam WŁĄCZ to: $access=1 ==> upadate w bazie; strona sie przeładowuje i chcę żeby teraz przycisk WYŁĄCZ był aktywny.
Tak się niestety nie dzieje... Muszę odświeżyć stronę, żeby zobaczyć oczekiwany rezultat (tzn żeby odpowiedni przycisk był aktywny).
Jak poradzić sobie z tym problemem?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
Apocalyptiq
post
Post #2





Grupa: Zarejestrowani
Postów: 230
Pomógł: 3
Dołączył: 8.01.2008

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


Hm, napierw wyświetlasz formularz, później wykonujesz operacje na bazie. Jeżeli klikniesz to włącz, załaduje się najpierw html (te przyciski) a następnie wykona ta operacja na bazie danych.

No i widzę że dajesz zewnętrzną chyba zmienną ($idk) bez żadnego zabezpieczenia - jeżeli jest to podawany przez użytkownika ciąg znaków, poczytaj o SQL Injection.

Ten post edytował Apocalyptiq 22.04.2009, 20:21:01


--------------------
http://estender.net - profesjonalne strony i aplikacje internetowe (Ruby on Rails, Kohana PHP)
Go to the top of the page
+Quote Post
marcio
post
Post #3





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

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


Np w tych ifa'ch jesli sie powiedzie operacja dodac cos w stylu:
  1. <?php
  2. header("Location:".$_SERVER['HTTP_REFERER']); // albo dodaj sztywny url jak wolisz
  3. ?>


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
szwabek
post
Post #4





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 29.03.2009

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


Robie tak:

Kod
<?php
   $_GET['id'] = mysql_escape_string($_GET['id']);
.... //jakiś kod php +html
?>

.... // jakiś kod html

<div style="position:relative">
             <form action="komputery_lista_details.php?id=<?php echo $_GET['id']; ?>" method="post">
             <?php

             $zap = mysql_query("SELECT * FROM komputery WHERE id='".$_GET['id']."' LIMIT 1;");
             $rek = mysql_fetch_assoc($zap);
             $idk = $_GET['id'];
             $access = $rek['access'];

// kod php + kod html ("reszta" formularza - który ma pobierać tylko dane z bazy danych)
//aż dochodzimy do miejsca:

<?php  
             if($access=="1")
                 echo'
                     <div style="position: absolute; left:210px; top:170px; ">
                         <button type=\"submit\" name="button1" disabled=\"disabled\" value="wl">Włącz</button>
                         <button type=\"submit\" name="button2" value="wyl">Wyłącz</button>
                     </div>
                 ';
                
             if($access=="0")
                 echo'
                     <div style="position: absolute; left:210px; top:170px; ">
                         <button type=\"submit\" name="button1" value="wl">Włącz</button>
                         <button type=\"submit\" name="button2" disabled=\"disabled\" value="wyl">Wyłącz</button>
                     </div>
                 ';
                                
                 if (isset($_POST['button1']))
                 {
                     $access = "1";
                     mysql_query("UPDATE komputery SET access='$access' WHERE id='$idk' ") or die('Błąd zapytania');
                 }
                 if (isset($_POST['button2']))
                 {
                     $access = "0";
                     mysql_query("UPDATE komputery SET access='$access' WHERE id='$idk' ") or die('Błąd zapytania');
                 }

                 ?>


EDIT:
Aaaa już tak nie robię:PP
marcio wielkie dzięki, Twoja metoda pomogła. Super :]

Ten post edytował szwabek 22.04.2009, 20:35:36
Go to the top of the page
+Quote Post
Apocalyptiq
post
Post #5





Grupa: Zarejestrowani
Postów: 230
Pomógł: 3
Dołączył: 8.01.2008

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


Czyli najpierw wyświetlasz HTML, a później wykonujesz operacje na bazie - logiczne że przy przycisnięciu włącz na stronie nic się nie zmieni, bo w bazie zmiana zajdzie PO pokazaniu kodu html - po prostu zmień kolejnościami wyświetlanie html i operacje na bazie danych.


--------------------
http://estender.net - profesjonalne strony i aplikacje internetowe (Ruby on Rails, Kohana PHP)
Go to the top of the page
+Quote Post
szwabek
post
Post #6





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 29.03.2009

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


Myślałem, że się zorientujesz po mojej odpowiedzi, że jest to ni możliwe.
Skoro wyświetlam html - formularz pobierający dane z bazy...
Go to the top of the page
+Quote Post

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: 20.08.2025 - 06:59