Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]update rekordu
Forum PHP.pl > Forum > Przedszkole
peklo
Witam. Tak jak w temacie mam problem z update rekordu wyciagnietego z bazy.
W uproszczeniu mam taki formularz w pierwszym pliku

  1. include ('update.php');
  2. <form action="" class="cmxform" method="post" id="signupForm" style='display: inline'>
  3. <?php
  4. try
  5. {
  6. $pdo = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD );
  7. $pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
  8. $stmt = $pdo -> prepare('SELECT id,nazwa_ogloszenia from ogloszenia');
  9. while($row = $stmt->fetch())
  10. {
  11. ?>
  12. <table width="90%" border="0" cellspacing="0" cellpadding="0">
  13. <tr>
  14. <th width="25%" scope="col">Tytuł:<?php echo $row['nazwa_ogloszenia'] ?></th>
  15. <th width="32%" scope="col">
  16. <?php
  17. if( !(isset( $_POST['delogl'] ) ) ) { ?>
  18. <input type="submit" name="delogl" class="przycisk" value="Zakoncz" />
  19. <?php
  20. } else {
  21. $profog=new profil;
  22. $profog->delogl();
  23. }
  24. ?>
  25. </th>
  26. <th scope="col">Nr ogłoszenia: <?php echo $row['id'] ?></th>
  27. </tr>
  28. </table>
  29. <?php
  30. }
  31. $stmt -> closeCursor();
  32. }
  33. catch(PDOException $e)
  34. {
  35. echo 'Wystapił blad biblioteki PDO: ' . $e->getMessage();
  36. }
  37. ?>
  38. </form>



i teraz klasę do update rekordu - plik update.php

  1. class profil {
  2. public function delogl() {
  3. $success = false;
  4. try{
  5. $con = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD );
  6. $con->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
  7. $sql = 'UPDATE ogloszenia SET aktywne=:aktywne WHERE id=:id';
  8. $stmt = $con->prepare( $sql );
  9. $stmt->bindValue(':aktywne', 0, PDO::PARAM_INT);
  10. $stmt->bindValue(':id',$_GET['id'], PDO::PARAM_INT);
  11. $stmt->execute();
  12. $conn = null;
  13. }catch( PDOException $e ) {
  14. echo 'Wystapił blad biblioteki PDO: ' . $e->getMessage();
  15. }
  16. }
  17. }
  18.  

Problem w tym że nie chce mi wykonać update rekordu. jak zmienie w zapytaniu na update set id=10 to updatuje. O co kaman. Prosze o pomoc
nospor
Sie zdecyduj..... UPDATE czy USUWANIE??

Zas do problemu: nigdzie nie widze, bys GETem przesylal id.... ciezko samemu sprawdzic czy cos tam jest czy nie?

Lektura obowiazkowa:
Temat: Jak poprawnie zada pytanie
peklo
update,update oczywiscie
nospor
To ja wiem ze UPDATE. TAk tylko sie czepnalem. Bardziej mnie interesuje czy zastosowales sie do linnka co ci podalem no i co z tym ID w get? Nie odpowiedziales na wskazanie tego bledu smile.gif
peklo
a czy tj dobrze zrobione tzn ten przycisk?
  1. <?phpif( !(isset( $_POST['delogl'] ) ) )
  2. {
  3. ?>
  4. <input type="submit" name="delogl" class="przycisk" value="Zakoncz" />
  5. <?php
  6. } else
  7. {$profog=new profil;$profog->delogl();
  8. }
  9. ?>
nospor
Przycisk jak przycisk, wysyla formularz jesli jest w formularzu. Nadal jednak nie widze, bys tam gdziekolwiek przesylal ID. Przeciez pisze po polsku. Wiec, sie pytam jeszcze raz, gdzie tam wysylasz ID? Bo w kodzie co pokazales to nigdzie.
peklo
zaraz to zrobie tzn wkleje żeby wyswietliło mi komunikat bledów

Nie zdefiniowana wartość
Notice: Undefined variable: id in D:\Apache2.2\htdocs\motojob\kod\profil\class_profil.php on line 49
$stmt->bindValue(':id',$id, PDO::PARAM_INT);
nospor
Toc ci tlumacze po raz 100. Nigdzie tego ID nie przysylasz. Z kosmosu samo sie nie wezmie.
peklo
chidzi o <form>?
nospor
No , na przyklad o form. FOrmem wysyla sie pola formularza jakie sie chce
peklo
cały pierwszy kod (przykładowo plik test.php) jest w form czyli
<form>
kod php
</form>
Na początku kodu mam include do pliku z klasą update

nospor
Rety... ale samo FORM nie wystarczy. Muszą tez tam byc pola, ktore chcesz wyslac. No ile razy o tym mozna pisac??
peklo
mam zrobione tak
<form action="" class="cmxform" method="post" id="signupForm" style='display: inline'>

napisałem tak w uproszczeniu
markuz
Widzę, że @nospor stracił cierpliwość więc dam Ci podpowiedź:

  1. <input type="hidden" name="id" value="<?php echo $row['id'] ?>">


$_GET['id']
$_POST['id']
peklo
no właśnie to bylo takie proste, zapomniałem o tym ukrytym polu dzięki:). Tylo że mam jeszcze jeden problem, a mianowicie usuwa mi ale nie to id co trzeba
nospor
A ten znowu z tym usuwaniem :/ Skup sie wkoncu.

Pewnie w formie masz wiele pol z ID, wiec nic dziwnego ze UPDATUJE ci ostatni
peklo
oj sorki nospor pomylka update oczywiscie po raz kolejny
To jak mam pobrać ten właściwy bo juz się pogubiłem
w zapytaniu mam tak

'UPDATE ogloszenia SET aktywne=0 WHERE id="'.$_POST['id'].'"';
nospor
Zamiasts jednego FORMA z kupą pol z id, masz miec tyle formow ile wyswietlasz rekordow. Wowczas kliajac UPDATE wyslesz tylko ten form i to pole, ktore cie interesuje
peklo
aaaa to zrobię sobie tak jak mam gdzie indziej poprostu checkboxa
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.