Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Aktualizacja rekordu używając Formy oraz ID
Forum PHP.pl > Forum > Przedszkole
webfreak
Witam!

Raczkuję dopierow PHP, ale na tyle żeby się uczyć.

Otóż mam problem gdy chcę edytować rekord w bazie używając do tego ID wyświetla mi " udano ", ale tak nie jest.... Oto mój kod

  1.  
  2. <?php
  3.  
  4. $host="localhost"; // Host name
  5. $username="user"; // Mysql username
  6. $password="pass"; // Mysql password
  7. $db_name="nazwa"; // Database name
  8. $tbl_name="news"; // Table name
  9.  
  10. // Connect to server and select databse.
  11. mysql_connect("$host", "$username", "$password")or die("cannot connect");
  12. mysql_select_db("$db_name")or die("cannot select DB");
  13.  
  14. // get value of id that sent from address bar
  15. $id=$_GET['id'];
  16.  
  17. // Delete data in mysql from row that has this id
  18. $sql="UPDATE $tbl_name
  19. SET title='$_POST[title]', body='$_POST[body]'
  20. WHERE id='$_GET[id]'";
  21. $result=mysql_query($sql);
  22.  
  23. // if successfully deleted
  24. if($result){
  25. echo "Edited Successfully";
  26. echo "<BR>";
  27. echo "<a href='http://36i6.co.uk'>Back to main page</a>";
  28. }
  29.  
  30. else {
  31. }
  32.  
  33. // close connection
  34.  
  35. ?>
  36.  



a to forma

  1.  
  2. <form action="edit.php" method="post">
  3. <div class="box">
  4. <h1>Add News :</h1>
  5. <label><span>Title</span>
  6. <input type="text" class="input_text" name="title" id="name" value="<? echo $row['title']?>"/>
  7. </label>
  8. <!-- <label><span>Date</span> -->
  9. <input type="hidden" class="input_text" name="date" id="email"/>
  10. <label><span>Body</span>
  11. <textarea class="message" name="body" id="feedback"></textarea>
  12. <input type="submit" class="button" value="Add" />
  13. </label>
  14. </div>
  15. </form>
mit2
problem jak sie nie myle jest w dodawaniu tego newsa czy co tam masz

  1. $sql="UPDATE $tbl_name SET title='$_POST[title]', body='$_POST[body]' WHERE id='$_GET[id]'";
  2. $result=mysql_query($sql);


Zrób takie coś i powinno dzialać
  1. $title = $_POST[title];
  2. $body = $_POST[body];
  3. $id = $_GET[id];
  4. $sql="UPDATE $tbl_name SET title='$title', body='$body' WHERE id='$id'";
  5. $result=mysql_query($sql);

kadlub
  1.  
  2.  
  3. $result=mysql_query($sql) or die(mysql_error());
  4.  


zobaczymy czy coś krzyknie
webfreak
niestety nic z tego nie działa sad.gif
Nadal pokazuje ze dodane poprawnie ale news sie nie zmienia


http://36i6.co.uk

mam takze w polu value dla title w ormie dla edycji zeby pokazywalo czyli echo zawartosc tabeli title ale nie pokazuje tak samo nie wiem dlaczego
kadlub
a zrób
echo $_GET['id'];
zobaczymy czy coś w nim jest
a i skąd wysyłasz te $_GET['id'] do tego pliku
webfreak
Nie wiem czy o to chodziło, ale normalnie edytując ID 24 forma łapie edycję Id 24... Pisze że zmieniło, ale neistety nic nie zmieniło

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''title'='ada', 'body'='ada' WHERE 'id'=''' at line 1 wiem juz ze nie łapie ID.

Skad wiem ?


Kliknolem edit wpisalem do title ada do body ada dalem zeby dodalo i pokazalo mi ten blad i title jest ada body ada ale nie ma id
Daiquiri
Pytanie czy w zmiennej $id z zapytania $sql jest jakaś wartość, a z tego co widzę to raczej nie smile.gif.

Tak jak sugerował Ci już kadlub, gdzieś w okolicach $id=$_GET['id']; zrób echo $_GET['id']; Zwykle taką zmienną przekazuje się w adresie.
kadlub
Cytat(webfreak @ 30.03.2011, 19:29:18 ) *
Nie wiem czy o to chodziło, ale normalnie edytując ID 24 forma łapie edycję Id 24... Pisze że zmieniło, ale neistety nic nie zmieniło

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''title'='ada', 'body'='ada' WHERE 'id'=''' at line 1 wiem juz ze nie łapie ID.

Skad wiem ?


Kliknolem edit wpisalem do title ada do body ada dalem zeby dodalo i pokazalo mi ten blad i title jest ada body ada ale nie ma id



czyli nic nie masz w tym GET pewnie jak wpiszesz na sztywno to dodoa
webfreak
Próbowałem różnych kombinacji

w pliki edit.php do którego jest " post " formy


żeby łapało ID mam linię

  1.  
  2. $id=$_GET['id'];
  3.  


w sql mam

  1.  
  2. $sql="UPDATE $tbl_name SET title='$title', body='$body' WHERE id='$id'";
kadlub
nie odpowiedziałeś na moje pytanie skąd wysyłasz tego geta questionmark.gif
webfreak
ska wysyłam ? Jak pisałe mw początku tematu raczkuje dopiero więc prosiłbym jasniej jak krowie na rowie smile.gif jesli chodzi z jakiego pliku to z edit.php i z delete.php tongue.gif Jesli ktos chce sie smiac z mojego podejscia do czegos bez znajomosci tematu to prosze bardzo biggrin.gif
wujekkk
Cytat
// get value of id that sent from address bar
$id=$_GET['id'];


Pisze jak byk, że wartość $id jest pobierana z paska adresu.

Troszke się pogubiłem, ale spróbuj czegoś takiego:

  1. <form action="edit.php?id=( tutaj wpisujesz wartość id )" method="post">
  2. <div class="box">
  3. <h1>Add News :</h1>
  4. <label><span>Title</span>
  5. <input type="text" class="input_text" name="title" id="name" value="<? echo $row['title']?>"/>
  6. </label>
  7. <!-- <label><span>Date</span> -->
  8. <input type="hidden" class="input_text" name="date" id="email"/>
  9. <label><span>Body</span>
  10. <textarea class="message" name="body" id="feedback"></textarea>
  11. <input type="submit" class="button" value="Add" />
  12. </label>
  13. </div>
  14. </form>
webfreak
wlasnie podsunoles mi pewien pomysl smile.gif Wyprubuje go najpierw smile.gif

  1. <form action="edit.php?id=24" method="post">
  2. <div class="box">
  3. <h1>Add News :</h1>
  4. <label><span>Title</span>
  5. <input type="text" class="input_text" name="title" id="name" value="<? echo $row['title']?>"/>
  6. </label>
  7. <!-- <label><span>Date</span> -->
  8. <input type="hidden" class="input_text" name="date" id="email"/>
  9. <label><span>Body</span>
  10. <textarea class="message" name="body" id="feedback"></textarea>
  11. <input type="submit" class="button" value="Add" />
  12. </label>
  13. </div>
  14. </form>



dziala jak marzenie ale jak uzyje

zamiast id=24 dam <? echo $row['id']; ?> juz nie dziala
wujekkk
Cytat(webfreak @ 30.03.2011, 19:50:33 ) *
wlasnie podsunoles mi pewien pomysl smile.gif Wyprubuje go najpierw smile.gif

dziala jak marzenie ale jak uzyje

zamiast id=24 dam <? echo $row['id']; ?> juz nie dziala




No to podsune Ci kolejny pomysł:

PLIK cos.php
  1. <?php
  2. $id=24;
  3.  
  4.  
  5. echo "<a href=cos2.php?id=".$id.">Klik</a>"
  6.  
  7. ?>


PLIK cos2.php
  1. <?php
  2. $id=$_GET['id'];
  3. echo $id;
  4. ?>
webfreak
nie wiem czy to ma jakieś znaczenie ale do Updare używam tego samego kodu c do usuwania tylko ze zmienionym $sql
bastard13
Dodaj sobie do formularza:
  1. <input type="hidden" name="id" value="<?php echo $row['id']; ?>" />

i odczytuj id za pomocą tablicy $_POST, bo takie przesyłanie części danych w getem, a części postem, to niezbyt dobre rozwiązanie.

Zapytanie możesz zapisać tak:
  1. sql='UPDATE '.$tbl_name.' SET title="'.$_POST['title'].'", body="'.$_POST['body'].'" WHERE id="'.$_POST['id'].'"';

lub
  1. sql="UPDATE $tbl_name SET title='{$_POST['title']}', body='{$_POST['body']}' WHERE id='{$_POST['id']}'";

tak czy inaczej daj echo $sql, żeby zobaczyć co siedzi w zapytaniu,
jeżeli id nadal będzie puste to dodaj var_dump($_POST), żeby zobaczyć, czy dane zostały przesłane.
webfreak
to co mi wyszło

UPDATE news SET title='adam', body='adam ' WHERE id=''array(4) { ["title"]=> string(4) "adam" ["date"]=> string(0) "" ["id"]=> string(0) "" ["body"]=> string(6) "adam " }
bastard13
A dodaj sobie przed tym formularzem <?php var_dump($row); ?> i napisz co ci wyrzuca, bo z tego co napisałeś, to widać, że brakuje parametru id.
Pokaż też w jaki sposób pobierasz dane do $row.
webfreak
co wiem do tej pory to to że forma nie dostaje żadnego ID już robię to o co poprosiłeś

daje mi NULL


o to ci chodziło questionmark.gif?


  1. <?
  2. while($row=mysql_fetch_array($result)){
  3. ?>
bastard13
A dodałeś to pole hidden, co napisałem ci wcześniej.
var_dump($row) zwraca null? To dlaczego w formularzu masz <?php echo $row['title']; ?> ?
a jak nie chodziło ci o $row, to napisz w jaki sposób ładujesz do tej zmiennej dane.
webfreak
teraz plik


edit_form.php
  1.  
  2.  
  3.  
  4. <?php var_dump($row); ?>
  5. <form action="edit.php?id=<? echo $row['id']; ?>" method="post">
  6. <div class="box">
  7. <h1>Add News :<? echo $_GET['id']; ?></h1>
  8. <label><span>Title</span>
  9. <input type="text" class="input_text" name="title" id="name" value="<? echo $row['title']?>"/>
  10. </label>
  11. <!-- <label><span>Date</span> -->
  12. <input type="hidden" class="input_text" name="date" id="email"/>
  13. <input type="hidden" name="id" value="<?php echo $row['id']; ?>" />
  14. <label><span>Body</span>
  15. <textarea class="message" name="body" id="feedback"></textarea>
  16. <input type="submit" class="button" value="Add" />
  17. </label>
  18. </div>
  19. </form>
  20.  



i edit.php
  1.  
  2. <?php
  3.  
  4. $host="localhost"; // Host name
  5. $username="web230-simplecms"; // Mysql username
  6. $password="y3babd50"; // Mysql password
  7. $db_name="web230-simplecms"; // Database name
  8. $tbl_name="news"; // Table name
  9.  
  10. // Connect to server and select databse.
  11. mysql_connect("$host", "$username", "$password")or die("cannot connect");
  12. mysql_select_db("$db_name")or die("cannot select DB");
  13.  
  14. // get value of id that sent from address bar
  15. $id=$_GET['id'];
  16.  
  17. // Delete data in mysql from row that has this id
  18.  
  19.  
  20. $sql='UPDATE '.$tbl_name.' SET title="'.$_POST['title'].'", body="'.$_POST['body'].'" WHERE id="'.$_POST['id'].'"';
  21.  
  22.  
  23. $result=mysql_query($sql) or die(mysql_error());
  24.  
  25.  
  26. // if successfully deleted
  27. if($result){
  28. echo "Edited Successfully";
  29. echo "<BR>";
  30. echo "<a href='http://36i6.co.uk'>Back to main page</a>";
  31. }
  32.  
  33. else {
  34. }
  35.  
  36. // close connection
  37.  
  38. ?>
  39.  
bastard13
A wykonanie jakiego zapytania daje ci wynik do zmiennej $result?
webfreak
$sql chyba z tego co pamietam.. czytalem dopeir opodstawy i na tutorialach sklejem wiec prosze o wyrozumialosc
bastard13
Przed chwilą wkleiłeś coś takiego:
  1. <?
  2. while($row=mysql_fetch_array($result)){
  3. ?>

chodzi mi o to co masz wyżej, a dokładnie o treść zapytania, które wysyłasz do bazy, żeby pobrać dane.
webfreak
to znaczy tego to akurat uzywam w home.php


to chyba o to ci chodzi


  1. // select record from mysql
  2. $sql="SELECT * FROM $tbl_name";
  3. $result=mysql_query($sql);


  1. <? include('connect.php');?>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <meta http-equiv="Content-Language" content="en" />
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  6. <meta name="Keywords" content="36i6, w36i6, web design, web development, templates, layouts" />
  7. <meta name="Description" content="36i6 Interactive" />
  8. <meta name="Author" content="Marek Prymula" />
  9. <meta name="robots" content="index,follow,all" />
  10. <title>36i6 Interactive</title>
  11. <link rel="stylesheet" type="text/css" href="style.css" />
  12. <link rel="shortcut icon" type="image/png" href="favicon.png" />
  13. <script type="text/javascript" src="js/cufon-yui.js"></script>
  14. <script type="text/javascript" src="js/Titillium.font.js"></script>
  15. <script type="text/javascript">
  16. Cufon.replace('.logo', {textShadow: '#000 2px 1px', hover: true});
  17. </head>
  18.  
  19. <div class="center"><!-- Center -->
  20.  
  21. <div class="header"><!-- Header Section -->
  22.  
  23. <a class="logo" href="#">36i6 Development</a><!-- Logo -->
  24.  
  25. <div class="social"><!-- Social Icons -->
  26.  
  27.  
  28.  
  29. </div><!-- Social Icons -->
  30.  
  31. </div><!-- Header Section -->
  32.  
  33. <div class="page"><!-- Main Content -->
  34.  
  35. <div class="news">
  36.  
  37. <?
  38. while($row=mysql_fetch_array($result)){
  39. ?>
  40.  
  41. <? $id=24;?>
  42. ID: <? echo $row['id'];?> <a href="/delete.php?id=<? echo $row['id']; ?>">delete</a>|<a href="/edit_form.php?id=<? echo $row['id']; ?>">edit</a>
  43. <br />
  44. Title: <? echo $row['title']?><br />
  45. Date: <? echo date("d/m/Y",$row['date']) ?><br />
  46. Body: <? echo $row['body'] ?>
  47.  
  48. <hr />
  49.  
  50.  
  51. <?
  52.  
  53. // close while loop
  54. }
  55.  
  56. // close connection;
  57. mysql_close();
  58.  
  59. ?>
  60.  
  61. </div>
  62.  
  63. dsdds
  64. <div class="add_news">
  65.  
  66. <form action="insert.php" method="post">
  67. <div class="box">
  68. <h1>Add News :</h1>
  69. <label><span>Title</span>
  70. <input type="text" class="input_text" name="title" id="name"/>
  71. </label>
  72. <!-- <label><span>Date</span> -->
  73. <input type="hidden" class="input_text" name="date" id="email"/>
  74. <label><span>Body</span>
  75. <textarea class="message" name="body" id="feedback"></textarea>
  76. <input type="submit" class="button" value="Add" />
  77. </label>
  78. </div>
  79. </form>
  80.  
  81. </div>
  82.  
  83. </div><!-- Main Content -->
  84.  
  85. </div><!-- Center -->
  86.  
  87. </body>
  88. </html>
  89.  
  90.  
bastard13
Zmień
<input type="hidden" name="id" value="<?php echo $row['id']; ?>" />
na
<input type="hidden" name="id" value="<?php echo $_GET['id']; ?>" />
webfreak
kocham cie biggrin.gif
dziala biggrin.gif

temat uważam za zamknięty użytwkonik bastard13 sprostał zadaniu smile.gif

Jeszcze chciałem się dowiedziec jesli mam więcej problemów mam zakładać nowy temat czy juz tu pisac ?
bastard13
Miłości nigdy za wiele:)
Następnym razem staraj się zwracać większą uwagę na to skąd, co powinieneś pobierać.
A jak nie wiesz w czym jest problem, to świetne do prostego debugowania skryptów są funkcje var_dump() i die()

Cytat
Jeszcze chciałem się dowiedziec jesli mam więcej problemów mam zakładać nowy temat czy juz tu pisac ?

Nowy temat.
webfreak
Właśnie DIE użyłem prawie na koncu gdy juz nie wiedzialem co robic i niby troche mi pomoglo bo najpierw patrzylem w zrodlo kodu i wiedzialem ze ID nie dostaje i kombinowalem z tym id na takie sposoby ze nie jeden programista by za brak bezpieczenstwa mnei powiesil tongue.gif, ale kiedys umeiszczalem tu ogloszenie o prace jako pracodawca i wiedzialem ze sa tu tacy kompetentni ludzie ze zawsze pomoga w tym przypadku bastard13 okazal sie moim guru gdzie nie obrazam innych gdyz oni tez wykazali sie nie lada wsparciem smile.gif
Zakładam nowy temat
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.