Edytowanie wybranego wpisu w bazie

0

Witam,
Zwracam się do was z następującym problemem... Z którym nie umiem sobie poradzić... A mianowicie...
Utworzyłem skrypt w php wypisujący elementy z pewnej tabeli bazy danych, w tabeli istnieje kolumna stan którą chciałbym edytować za pomocą przycisku umieszczonego w formatce w tabeli wyświetlającej informacje z bazy jednak nie mam pojęcia jak odwołać się do tego konkretnego wpisu który mnie interesuje. Wyświetlanie mam zrobione a bazie takiego skryptu:

  while($r = mysql_fetch_assoc($wynik)) {
        echo "<tr>";
        echo "<td>".$r['imie']."</td>";
        echo "<td>".$r['email']."</td>";
        echo "<td>
Tu chciałbym umieścić przycisk do edytowania wpisu w bazie
       </td>";
        echo "</tr>";
    } 

Na chwilę obecną nie mam możliwości podania całego kodu... Ale może to wystarczy wstępnie,
Pozdrawiam.

0

Każdy wiersz będzie miał swój własny przycisk do zmiany stanu? W związku z tym, istotne jest, aby skrypt odpalony przy wyslaniu formularza dostał informację jaki wiersz ma zmienić.
Jednym z rozwiązań może być nadanie unikalnego atrybutu "name" każdemu przyciskowi od zmiany stanu.
Przycisk możesz wyświetlać tak:

<input type="submit" name="row_<?php echo $r['unique_row_id'] ?>" value="change">
0

A w jaki sposób mógłbym się potem do tego 'name' odwołać? Jedną z opcji jaka widzę jest utworzenie case'a dla każdego przycisku co jest jednak bezsensowne... najlepiej było by odciąć fragment tekstu zostawić sama informacje o wierszu, na chwilę obecną myślałem o odczytaniu informacji z licznika dodanego, ale niestety nie działa...
Oto kod:

 

<!DOCTYPE html>
<html>
    <head>
        <Meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
        <link rel="stylesheet" href="style.css" type="text/css"/>   
        <link rel="stylesheet" type="text/css" href="css/style2.css" />
        <title>Tematy TWJ</title>
    </head>
    <body>
<?php
// podłączamy plik  connection.php
require "connection.php";
// wywołujemy funkcję connection()
connection();
session_start();
?>

        <div id="top">
           <div id="NAGLOWEK" > </div> <img src="img/whitetonedplus.png"/>  
            <div>    
                 <?php
                            print'
                            <div class="header"></div>
               <ul id="navigation">
                                    <li class="home"><a href="index.php"><span>Home</span></a></li>';
                        $login = isset($_SESSION['nr_indeksu']);
                        $haslo = isset($_SESSION['haslo']);
                        if (!empty($login) && !empty($haslo)) {
                            print ' <li class="logon"><a href="logout.php"><span>Wyloguj</span></a></li>';}
                        if (empty($login) && empty($haslo)) {
                             print '<li class="about"><a href="logowanie.php"><span>Zaloguj</span></a></li>';}
                        print'<li class="contact"><a href="contact.php"><span>Kontakt</span></a></li>     
                 </ul>'
             ?> 
            </div>  
       
            <div class="TRESC"> <center></br></br></br>
                  <?php
                  function zmien_stan()
                  {
						if(isset($_POST['name'])){
                        $t=$_POST['name'];
                        mysql_query("UPDATE tematy set stan=1 where ID_tematu='$t'");}
                        echo "</tr>";
                  }

                        /* zapytanie do konkretnej tabeli */
                        $wynik = mysql_query("SELECT id_tematu,temat,stan,data_rezerwacji FROM tematy")
                        or die('Błąd zapytania');
                /*
                  wyświetlamy wyniki, sprawdzamy,
                  czy zapytanie zwróciło wartość większą od 0
                 */
                if (mysql_num_rows($wynik) > 0) {
                    /* jeżeli wynik jest pozytywny, to wyświetlamy dane */
                    
                    echo "<table cellpadding=\"2\" border=1>";
                    echo "<tr>";
                        echo "<td>" . 'id'. "</td>";
                        echo "<td>" . '<center>temat</center>'. "</td>";
                        echo "<td>" . '<center>stan</center>'. "</td>";
                        echo "<td>" . '<center>Data rezerwacji</center>'. "</td>";
                        echo "</tr>";
                        $licznik=0;
                    while ($r = mysql_fetch_object($wynik)) {
                        echo "<tr>";
                        echo "<td>" . $r->id_tematu. "</td>";
                        echo "<td>" . $r->temat . "</td>";
                        echo "<td>" . $r->stan . "</td>";
                        echo "<td>" . $r->data_rezerwacji . "</td>";
                        echo "";
                        $licznik++;
                        echo "<td>" . "<form method='post' action='t_list.php?zmien_stan'><input type='submit' name='$licznik' value='Wybierz'></form>" . "</td>";
                    }
                    echo "</table>";
                }
            
            ?> </center>
                
                
                
                
                
                
            </div>
        
           <div id="STOPKA">Stopka serwisu</div>
        </div>
    </body>
</html>
0

lepiej zamiast
<input type="submit" name="row_<?php echo $r['unique_row_id'] ?>" value="change">
dać
<input type="submit" name="action_change" value="<?php echo $r['unique_row_id'] ?>">
i sobie potem odczytać $_POST['action_change'] i tyle

edit:
no a jak nie masz tego wszystkiego w jednej wielkiej formie (a chyba nie masz) to mozesz po prostu wstawic tam <form action="pelna_sciezka_wraz_z_id_wiersza"><input type="submit" /></form> przy każdym wierszu.

ps. nie czytalem calego posta, zbyt duzy, a wyglada na to ze bierzesz sie za to nie od tej strony co trzeba

0

A co rozumiesz przez action="pelna_sciezka_wraz_z_id_wiersza"?? I czemu od złej strony? :)

0

zajrzałem do ostatniego posta i chyba jest w nim mniej więcej to o co chodzi mi w edicie. tylko ja raczej dałbym
<form method='post' action='t_list.php?zmien_stan=$licznik'><input type='submit' value='Wybierz'></form>
i nie ma problemu z iteracją po wszystkich danych POST/GET szukając tej klikniętej

1 użytkowników online, w tym zalogowanych: 0, gości: 1