Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] Przycisk w tabeli -> Złe przekazanie wartości do MySQLa
martinii007
post
Post #1





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 15.12.2011

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


Na podstawie pętli foreach wyświetlam rekordy w tabelce, tylko, że chciałbym dodać dodatkową funkcjonalność, przy każdym rekordzie ma być lista rozwijana w której będzie opcja do wyboru (W tym przypadku wolny/zajęty). Po wybraniu opcji naciskam button i nadpisuje określoną wartość w bazie danych.


Kod
case "test":
              
                    $tabela = DatabaseManager::selectBySQL("SELECT * FROM users1");

                    print'<table border="10"><tr><td>Imię i nazwisko</td><td>E-mail</td><td>Telefon</td><td>Adres</td>';
                  
                    foreach($tabela as $tabele )
                    {
                     print'<tr><td>'.$tabele['fullname'].' </td><td>'.$tabele['mail'].' </td><td>'.$tabele['telefon'].' </td>
                    <td>'.$tabele['STAN'].'
                    <form name="form" id="form" action="update" method="POST">
                                    <select name="STAN" class="work1">
                                            <option value="wolny">wolny</option>
                                            <option value="zajęty">zajęty</option>
                                    </select></td></tr>';
                    $_SESSION['stan1'] = $tabele['id']; #id uzytkownika z bazy
                    }
                    print'</table>';
                  
                    print' <br /><br />
                       <input type="submit" name="submit-form" class="submit-form" value="Zarejestruj" /> </form>

            break;


Za pomocą POSTA przesyłam dane do metody update w "usermanagerze":

Kod
public function Update($POST) {

        if(isset($POST) && is_array($POST)) {

            $res = DatabaseManager::updateTable("users1", array("STAN"=>$POST['STAN']),array("id"=>$_SESSION['stan1']));
                                                 #tabela    kolumna tabeli                          where id=stan1
            if($res) {
                return true;
            } else {
                return false;
            }

        } else {

            return false;

        }


Całość przekierowuję do pliku update:

Kod
<?php
if(isset($_POST['STAN'])) {

    $um = new UserManager;

    $res = $um->Update($_POST);

    if($res) {
    echo'succes';
    } else {

        die("Utworzenie użytkownika nie było możliwe!");

    }

} else {
    die("DOSTĘP DO TEJ STRONY ZOSTAŁ ZABLOKOWANY PRZEZ ADMINISTRATORA!");
}

?>



Problem jest następujący: W tabelce po zmianie listy rozwijanej działa update ale tylko dla ostatniego rekordu, dla poprzednich nie.
Trzeba byłoby każde id użytkownika w foreachu jakoś przeiterować i zapisać do zmiennych, ale nie wiem do końca jak to zrobić, chciałem to zrobić na zmiennych sesyjnych no ale tak raczej się nie da jak teraz mam bo zapisuje tylko ostatni element, nadpisuje pozostałe elementy $_SESSION['stan1'] = $tabele['id'] co pokazuje tabelka:


(IMG:http://bjdm.home.pl/kreator/demo.png)

Ten post edytował martinii007 19.12.2011, 21:04:12
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
martinii007
post
Post #2





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 15.12.2011

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


Zrobiłem inaczej, ale to rozwiązanie jednak dalej mnie nie satysfakcjonuje:

(IMG:http://bjdm.home.pl/kreator/demo1.png)


Za każdym przebiegiem pętli pobieram dane zamieszczając je do tabelki razem z buttonem, czyli w każdym rekordzie mam butona który zmienia dostępność.
Chciałbym zapisać te dane właśnie do tablicy: 1 przebieg petli -> id1 uzytkownika + stan wolny/zajety itd. Pozniej to jakoś odczytać i zamieścić do bazy z wszystkich pól, ale nie wiem jak to zrobić. Najważniejsze, żeby był jeden button, a nie 1000 jak się tabelka rozrośnie. Kod który przerobiłem wygląda tak:


Kod
           $db = DatabaseManager::getConnection();
                    
                    @$stan = $_POST['STAN'];
                    @$numerid = $_POST['ukryteid'];

                    $zapytanie1 = ("UPDATE users1 SET STAN=('".$stan."') where id='".$numerid."'");
                    $wynik1 = $db->query($zapytanie1);
                    
                          
                    $zapytanie = "SELECT * FROM users1";
                    $wynik = $db->query($zapytanie);
                    
                    $ile_znalezionych = $wynik->num_rows;

                    //print_r($tabela);
                    print'<table cellspacing="0" cellpadding="0"><tr><td>Imię i nazwisko</td><td>E-mail</td><td>Telefon</td><td>Adres</td><td>Wykształcenie</td><td>Zawód</td><td>Język(i)</td><td>Dostępność</td></tr>';
                    $a=null;
                    for ($i=0; $i <$ile_znalezionych; $i++) {
                    $tabele = $wynik->fetch_assoc();
                    
                    if($tabele['STAN']=='wolny'){
                        
                        $a="zajęty";
                        
                    }else{
                        
                        $a="wolny";
                    }
                    
                    print'<tr><td>'.$tabele['fullname'].' </td><td>'.$tabele['mail'].' </td><td>'.$tabele['telefon'].' </td><td>'.$tabele['kod'].' '.$tabele['miejscowosc'].'<p>ulica '.$tabele['ulica'].' '.$tabele['numerdomu'].'</td><td>'.$tabele['wyksztalcenie'].' </td><td>'.$tabele['zawod'].' </td><td>'.$tabele['jezyki'].' </td>
                    <td width="200">
                    <form name="form" id="form" action="update/" method="POST">
                                    <input type="hidden" name="ukryteid" value='.$tabele['id'].'>
                                    <select name="STAN" class="work1">
                                            <option value='.$tabele['STAN'].'>'.$tabele['STAN'].'</option>
                                            <option value='.$a.'>'.$a.'</option>
                                    </select><input type="submit" name="submit-form" class="submit-form" value="Aktualizuj" /></form></td></tr>';
                    }
                    print'</table>';


Ten post edytował martinii007 20.12.2011, 17:31:19
Go to the top of the page
+Quote Post

Posty w temacie


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: 15.10.2025 - 10:13