Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][HTML]błąd aktualizacja rekordów
Forum PHP.pl > Forum > Przedszkole
ArturEales
Witam mam następujący problem szukam szukam i nie wiem gdzie tu jest błąd. Problem polega na tym że nie zapisuje mi $STGB03 do bazy.
Kod
$query = "SELECT ID, NAME, ZDSA FROM `spts` where ID=1";
   $result = mysql_query($query);
   while( $row = mysql_fetch_array( $result )){
       $STGB01 .= $row[ 'ZDSA' ].'';
   }  
   $STGB03 = trim($_POST['TSTGB01']);
  
  
   $wywietlSTEG = '<form action="" method="post">
   <textarea name="TSTGB01"  style="width: 300px; height: 200px;">'.$STGB01.'
   </textarea><br />
   <form action="index.php" method="post">
   <input type="hidden" name="STGB02" value="true">
   <input type="submit" value="Zapisz" />
   </form>';
  
   if (isset($_POST['STGB02']))
   {
   $zapytanie = "UPDATE `spts` SET `ZDSA` = '$STGB03' WHERE `id`='1'";
   $idzapytania = mysql_query($zapytanie);
   }

Pozdrawiam

ok wszystko ok problem tkwi wyżej.

Kod
<?
if (isset($_POST['STEG']))
{
ziqzaq
Nie updaetuje się w ogóle tylko tak ci się wydaje? winksmiley.jpg
Ja tu widzę błąd logiczny, ale mogę się mylić.
Po kolei:
- masz formularz z wartością wyciągniętą z bazy - ok,
- zatwierdzasz go i przesyłasz zmienne z formularza,
- na początku skryptu wyciągasz starą wartość z bazy i przypisujesz do zmiennej ($STGB01),
- później zajmujesz się zmienną przesłaną z formularza (przypisujesz ją do $STGB03, to jest ta nowa wartość tak?),
- wyświetlasz formularz ze starą wartością (wyciągniętą wcześniej z bazy),
- na końcu aktualizujesz rekord w bazie (tą nową wartością).

Czyli - jeśli dobrze zrozumiałem - aktualizujesz bazę, ale sam sobie wyświetlasz starą wartość - shame on you smile.gif

PS Dwa razy otwierasz tag form, ale to już na marginesie.

Edit: Ups czyli mój błąd winksmiley.jpg
ArturEales
Może powiem jak miało to działać...

1. Pobiera z bazy dzne i ładuje do formularza (do edycji)
2. po wprowadzeniu zmian klikamy zapisz i wartosć zmieniona zostaje wysłana do bazy.

A w ogóle to całość wygląda tak

Kod
<?
if (isset($_POST['STEG']))
{
    $pmep01 = '1Pod Menu1';
    $pmep02 = '1Pod Menu2';
    $pmep03 = '1Pod Menu3';
    $pmep04 = '1Pod Menu4';
    $pmep05 = '1Pod Menu5';
    




$query = "SELECT ID, NAME, ZDSA FROM `spts` where ID=2";
$result = mysql_query($query);
while( $row = mysql_fetch_array( $result )){
    $STGB01 .= $row[ 'ZDSA' ].'';
}  
$STGB03 = trim($_POST['TSTGB01']);


$wywietlSTEG = '<form action="" method="post">
<textarea name="TSTGB01"  style="width: 300px; height: 200px;">'.$STGB01.'
</textarea><br /> action="index.php" method="post"
<input type="hidden" name="STGB02" value="true">
<input type="submit" value="Zapisz" />
</form>';

if (isset($_POST['STGB02']))
{
$zapytanie = "UPDATE `spts` SET `ZDSA` = '$STGB03' WHERE `id`='2'";
$idzapytania = mysql_query($zapytanie);
}


}
        
?>
MateuszS
Może tak:

  1. <?php
  2.  
  3. $query = mysql_query("SELECT ID,NAME,ZDSA FROM `spts` where ID='1'");
  4.   while( $row = mysql_fetch_array( $query ))
  5.   {
  6.       $STGB01 .= $row[ 'ZDSA' ].'';
  7.   }  
  8.   $STGB03 = trim($_POST['TSTGB01']);
  9.  
  10.   echo '<textarea name="TSTGB01"  style="width: 300px; height: 200px;">'.$STGB01.'</textarea><br />';
  11.   echo '<form action="index.php" method="post">';
  12.   echo '<input type="hidden" name="STGB02" value="true">';
  13.   echo '<input type="submit" value="Zapisz" />';
  14.   echo '</form>';
  15.  
  16.   if (isset($_POST['STGB02']))
  17.   {
  18.   $zapytanie = mysql_query("UPDATE `spts` SET `ZDSA`='$STGB03' WHERE `id`='1'");
  19.   }
  20.  
  21.   ?>
ArturEales
Napisałem coś takiego i mi nie działa... tz. po wciśnięciu przycisku ma się wyświetlać formularz i właśnie mi to nie działa nie wiem czemu.

to działa
Kod
<?
$query = "SELECT ID, NAME, ZDSA FROM `spts` where ID=2";
$result = mysql_query($query);
while( $row = mysql_fetch_array( $result )){
    $STGB01 .= $row[ 'ZDSA' ].'';
}  
$STGB03 = trim($_POST['TSTGB01']);


echo '<form method="post">
<textarea name="TSTGB01"  style="width: 300px; height: 200px;">'.$STGB01.'
</textarea><br /><form  method="post">
<input type="hidden" name="STGB02" value="true">
<input type="submit" value="Zapisz" />
</form>';

if (isset($_POST['STGB02']))
{
$zapytanie = "UPDATE `spts` SET `ZDSA` = '$STGB03' WHERE `id`='2'";
$idzapytania = mysql_query($zapytanie);
}

?>


a tak już nie
Kod
if (isset($_POST['STEG']))
{
$query = "SELECT ID, NAME, ZDSA FROM `spts` where ID=2";
$result = mysql_query($query);
while( $row = mysql_fetch_array( $result )){
    $STGB01 .= $row[ 'ZDSA' ].'';
}  
$STGB03 = trim($_POST['TSTGB01']);


echo '<form method="post">
<textarea name="TSTGB01"  style="width: 300px; height: 200px;">'.$STGB01.'
</textarea><br /><form  method="post">
<input type="hidden" name="STGB02" value="true">
<input type="submit" value="Zapisz" />
</form>';

if (isset($_POST['STGB02']))
{
$zapytanie = "UPDATE `spts` SET `ZDSA` = '$STGB03' WHERE `id`='2'";
$idzapytania = mysql_query($zapytanie);
}
}
ziqzaq
Nie napisałeś po wciśnięciu jakiego przycisku, z innego formularza czy co?
A przesyłasz tą zmienną z innego formularza?
  1. <?php
  2. if (isset($_POST['STEG']))
  3. ?>

Poza tym zapis masz w tym if'ie:
  1. <?php
  2. if (isset($_POST['STEG'])) { // NIE MA TAKIEJ ZMIENNEJ (TAKIEGO POLA) W PONIZSZYM FORMULARZU
  3. // ...
  4.    if (isset($_POST['STGB02'])) // WIEC PO ZATWIERDZENIU FORMULARZA NIE WYKONA SIE ANI POWYZSZY KOD  ANI PONIZSZY KOD
  5.    {
  6.        $zapytanie = "UPDATE `spts` SET `ZDSA` = '$STGB03' WHERE `id`='2'";
  7.        $idzapytania = mysql_query($zapytanie);
  8.    }
  9. }
  10. ?>

a w formularzu nie masz takiej zmiennej jak "STEG", więc update się nie wykona:
  1. <?php
  2. echo '<form method="post">
  3. <textarea name="TSTGB01"  style="width: 300px; height: 200px;">'.$STGB01.'
  4. </textarea><br /><form  method="post">
  5. <input type="hidden" name="STGB02" value="true">
  6. <input type="submit" value="Zapisz" />
  7. </form>';
  8. ?>

Poza tym przeczytaj jeszcze raz mój pierwszy post bo mimo wyszystko chyba jednak mam w nim rację.
Pozdrawiam.

Edit:
Acha. Nadal dwa razy masz otwarty tag form a ewidentnie chcesz stworzyć jeden formularz, to jest błąd.

Edit:
Apeluje o przeczytanie komentarzy w kodzie, które teraz dodałem.
ArturEales
Ale o co ci w ogóle chodzi? NIE MA TAKIEJ ZMIENNEJ (TAKIEGO POLA) W PONIŻSZYM FORMULARZU przecież to nie do poniższego formularza bo formularz jest odpalany dopiero po wciśnięciu przycisku :
Kod
<form action="index.php" method="post">
        <table>
            <tr>
                <td>
                    <input type="submit" name="STEG" value="Strona główna" class="submit" />
                </td>
            </tr>
        </table>
   </form>


ziqzaq
Człowieku. Wskazuje ci błędy w twoim kodzie.

Nazewnictwo bo już się mieszamy chyba:
- formularz nr. jeden - to ten który podałeś wyżej, przechodzimy nim do edycji.
- formularz nr. dwa to ten który ja podałem czyli to ten którym edytujemy.

Wysyłasz tą zmienną z pierwszego formularza (ta zmienna ma nazwę "STEG").
Posługujesz się nią by wyświetlić drugi formularz, w którym już nie ma takiej zmiennej (pola o nazwie "STEG").
Jak zatwierdzisz ten drugi formularz to poniższy warunek if (ten pierwszy poniżej) zwróci false i kod w nim się nie wykona:
Nie wykona się również update bo jest w tym if'ie. dry.gif
  1. <?php
  2. if (isset($_POST['STEG'])) {
  3. // ...
  4.   if (isset($_POST['STGB02']))
  5.   {
  6.       $zapytanie = "UPDATE `spts` SET `ZDSA` = '$STGB03' WHERE `id`='2'";
  7.       $idzapytania = mysql_query($zapytanie);
  8.   }
  9. }
  10. ?>

Czy już rozumiesz o co mi chodzi?
ArturEales
Nom załapałem masz jakiś pomysł rozwiązania tego problemu?

Ja zastanawiam się nad wstawieniem ewentualnie przycisku ale wtedy to się chyba zrypie co nieco...

Chyba ze można to: if (isset($_POST['STEG'])) //czymś zastąpić co da podobny efekt


OK zrobiłem tak i działa
Kod
<?
if (isset($_POST['STEG']))
{
     $pmep01 = '1Pod Menu1';
     $pmep02 = '1Pod Menu2';
     $pmep03 = '1Pod Menu3';
     $pmep04 = '1Pod Menu4';
     $pmep05 = '1Pod Menu5';
    

$query = "SELECT ID, NAME, ZDSA FROM `spts` where ID=2";
$result = mysql_query($query);
while( $row = mysql_fetch_array( $result )){
$STGB01 .= $row[ 'ZDSA' ].'';
}  
$STGB03 = trim($_POST['TSTGB01']);


$sss = '<form method="post">
<textarea name="TSTGB01"  style="width: 300px; height: 200px;">'.$STGB01.'
</textarea><br />
<input type="hidden" name="STEG" value="true">
<input type="submit" value="Zapisz" />
</form>';

if (isset($_POST['STEG']))
{
$zapytanie = "UPDATE `spts` SET `ZDSA` = '$STGB03' WHERE `id`='2'";
$idzapytania = mysql_query($zapytanie);
}
}
ziqzaq
O to mi chodziło. No, prawie.
1. Teraz za każdym wyświetleniem formularza odbędzie się update bazy (nawet jak go wyswietlisz za pierwszym razem).
2. Jak zatwierdzisz zmiany w formularzu to nie będą one od razu widoczne. Sam sobie zobacz.

Pokażę ci jak ja to widzę:
  1. <?php
  2. // Tu sprawdzamy czy trzeba wyswietlic formularz edycji
  3. if (isset($_POST['STEG']))
  4. {
  5.    // Jesli przeslano jakies dane z formularza nr. 2 to przypisz je
  6.    // jesli nie to przypisz false
  7.    $STGB03 = isset($_POST['TSTGB01']) ? trim($_POST['TSTGB01']) : false;
  8.    // Mamy dane z formularza?
  9.    if ($STGB03 !== false)
  10.    {
  11.        // Najpierw aktualizuje zeby w formularzu byly aktualne dane a nie stare
  12.        // (to sie wykona tylko jesli wczesniej ten formularz zatwierdzilismy)
  13.    }
  14.    
  15.    // Teraz dopiero pobieram rekord z bazy
  16.    // (jesli zostal zaktualizowany to bedzie mial juz zaktualizowana wartosc)
  17.    $query = "SELECT ID, NAME, ZDSA FROM `spts` where ID=2";
  18.    // ...
  19.    // Dopiero na koncu tworze formularz
  20.    $sss = '<form method="post">...';
  21. }
  22. ?>
ArturEales
Coś mi to nie działa
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.