Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Update rekordów
Forum PHP.pl > Forum > Bazy danych
todziu
WItam - jestem tutaj raczkujacy wiec prosze o wyrozumialosc - wiec tak mam tabele z nastepujacymi polami id, data, godz, nr_zgl, osoba, opis i chciabym teraz uaktualnic jeden z wierszy w tej bazie poprzez formularz z lista rozwijana np. wybieram sobie z listy rozwijanej (z kolumny) nr_zgl wartosc i wyswietlaja mi sie wszystkie wartosci z kolumn (id, data, godz, nr_zgl, osoba, opis) z danego wiersza które mozna zmienic - ja moge sie do tego zabrac, powiem tak iz samo uaktualnienie w bazie nie jest klopotem problem to formularz w ktotym jest pole rozwijane i przekazanie zmiennej do php - dzieki za jakakolwiek pomoc
skowron-line
nie wiem czy dobrze zrozumialem ale jesli chcesz to zrobic to przy wyciaganiu z bazy wrzucasz to w <input> i edytujesz co chcesz a po nacisnieciu submita robisz updata
todziu
mam taki kod:
  1. <?php
  2. include("config.php");
  3. print("<body bgcolor="black" text="chartreuse">");
  4. $link = mysql_connect($url, $log, $pas)
  5. or die ("<code><B>STATUS:</B><br>BLAD !!! Nie mozna nawiazac polaczenia<br>sprawdz ustawienia i polacz ponownie");
  6. mysql_select_db ($baza) or die ("Nie mozna wybrać bazy danych");
  7.  
  8. $zapytanie="select id, nr_zgl from zgloszenie";
  9. $wykonaj = mysql_db_query($baza, $zapytanie);
  10. <form action="$php_self">
  11.  <table border=1 >
  12. <tr>
  13. <td>nazwa</td><td></td></tr>";
  14.  while(list($id,$nr_zgl)= mysql_fetch_array($wykonaj))
  15.  {
  16.  echo" <tr> <td>$nr_zgl</td> <td><input type=radio name=id value=$id></td></tr> ";
  17.  }
  18.  echo"
  19. </table>
  20. <input type="submit" value=pokaz>
  21. </form>";
  22. ?>

A chcialbym to samo zrobic na liscie rozwijanej
artur81
chyba bez ajaxa nie da rady
robisz funckję pobierającą w bazy nr_zgloszenie i ładującgo go do list (w php) i do tej listy podpinasz funkcję js ktora za pomocą ajaxa będzie przekazywała nr_zgloszenie do serwera i będzie odbierać formularz z wypełnionymi polami i wstawiać go na stronę. Ja to tak widzę
  1. <?php
  2. //tutaj połaćzenia z bazą , nagłówki etc.
  3. $wynik=mysql_query("select id, nr_zgl from zgloszenie");
  4. echo '<select name = "lista" onchange="twoja_funkcja_do_komunikacji_z_serwerem()">';
  5. while ($r= mysql_fetch_assoc($wynik)) {
  6.  $id=$r['id'];
  7.  $nr_zgl=$r['nr_zgl'];
  8. echo '<option value="'.$id.'">'.$nr_zgl.'</option>';
  9. }
  10. echo '</select>';
  11.  
  12. ?>

Pisane z ręki ale powinno być ok, poza tym to nie temat na bazy danych wg mnie.
todziu
O shit teraz mi zabiles klina - nie wiem co to "ajaxa" i nie za bardzo znam js ale cos pomysle - czyli mowisz ze nie da sie w ten sposob co opisalem wybrac jeden wiersz z listy rozwijanej i go wczytac do pol input ?
skowron-line
robisz tak jak ci pokazal @Artur81 tylko ze ja bym zrobil
  1. <?php
  2. echo"<select name=od onchange="self.location.href = this.value">
  3. <option>link.php?site=edit&id=$id>$id</option>":
  4. ?>

a na stronie edit robisz wyciaganie z bazy
  1. SELECT * FROM tabela WHERE id = $_GET['id'];

wrzucasz do inputow i po temacie
todziu
ok dzieki - zaraz to wrzuce i przetestuje

powiedzcie mi co zrobilem nie tak w tej linijce kodu :
$wynik=mysql_query("select * from zgloszenie where id = $_GET['id']");
bo w logach wywala mi parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in /var/www/htdocs/baza/baza1/zmien.php on line 35" title="Zobacz w manualu php" target="_manual
skowron-line
tak ma byc $_GET[id]
todziu
ok nastepne pytanko :-D mam kod php :

$wynik=mysql_query("select id, nr_zgl from zgloszenie");
$wykonaj = mysql_db_query($baza, $wynik);

//wybieranie zlecenia z bazy
echo "<form action=\"$php_self\">";
echo "<select name=od onchange=\"self.location.href = this.value\">";
while ($r= mysql_fetch_assoc($wynik))
{
$id=$r['id'];
$nr_zgl=$r['nr_zgl'];
echo '<option value="'.$id.'">'.$nr_zgl.'</option>';
}
echo "</select>";
echo "<input type=\"submit\" value=\"Dodaj\">";
echo "</form>";

Wszystko pieknie ladnie w liscie rozwijanej pojawiaja sie wartosci z danego pola ale jak wybiore obojetnie jaka wartosc z listy automatycznie przechodzi mi do strony o numerze id rekordu ktory wybralem (wybralem wartosc o numerze id=5)

Not Found
The requested URL /baza/baza1/'.5.' was not found on this server.

co moze byc przyczyna ?
skowron-line
zamien to :
  1. <?php
  2. echo '<option value="'.$id.'">'.$nr_zgl.'</option>';
  3. ?>

na
  1. <?php
  2. echo '<option value=link.php?site=edit&id="'.$id.'">'.$nr_zgl.'</option>';
  3. ?>

a automatycznie przechodzi bo masz opcje onchange jak ja usuniesz to bedziesz musial robic jak robiles ale dorzucic submita na koniec

edit:
P.s. wrzucaj kod w odpowiednie znaczniki
My4tic
Cytat(skowron-line @ 16.08.2006, 12:57 ) *
robisz tak jak ci pokazal @Artur81 tylko ze ja bym zrobil
  1. <?php
  2. echo"<select name=od onchange="self.location.href = this.value">
  3. <option>link.php?site=edit&id=$id>$id</option>":
  4. ?>

a na stronie edit robisz wyciaganie z bazy
  1. SELECT * FROM tabela WHERE id = $_GET['id'];

wrzucasz do inputow i po temacie


Takie rozwiązanie nie bedzie chyba zbyt dobre.

Temat: SQL Injection Insertion
skowron-line
dla lekturki sql-injection (zeby nie bylo)
todziu
no to jeszcze raz od poczatku - cos nie wychodzi albo ja zle przepisuje :-)

KOD:
  1. <?php
  2. echo "<form action="$php_self">";
  3. echo "<select name=od onchange="self.location.href = this.value">";
  4. while ($r= mysql_fetch_assoc($wynik))
  5. {
  6. $id=$r['id'];
  7. $nr_zgl=$r['nr_zgl'];
  8.  // echo '<option value="'.$id.'">'.$nr_zgl.'</option>';
  9.  echo '<option value=link.php?site=edit&id="'.$id.'">'.$nr_zgl.'</option>';
  10.  }
  11. //echo "</select>";
  12. echo "<input type="submit" value="Dodaj">";
  13. echo "</form>";
  14. ?>


do tej pory jest OK - lista rozwijana w ktorej umieszczone sa numery zgloszen z danej kolumny ale jezeli wybiore obojetnie jaka pozycje w liscie to przekierowuje http://jakistamadres/link.php?site=edit&id=%225%22 - pytanie moje brzmi co mam umiescic w tym pliku link.php bo za bardzo juz sie zakrecilem smile.gif wiem ze odczyt wiersza o numerze = zmiennej id - tylko pytanie JAK - dzieki
My4tic
W ogole sie za to zle zabierasz.

Po co przekazujesz w value jakies url'e? Jak chcesz przekazac dane z formularza do pliku link.php to wpisz ścieżke do link.php w action.

  1. <?php
  2. echo "<form method="POST" action="link.php">";
  3. ?>


zamiast jakiegoś przekombinowanego:

  1. <?php
  2. echo "<select name=od onchange="self.location.href = this.value">";
  3. ?>


zrób:

  1. <?php
  2. echo "<select name=od onchange="submit()">";
  3. ?>


zamiast :

  1. <?php
  2. while ($r= mysql_fetch_assoc($wynik))
  3. {
  4. $id=$r['id'];
  5. $nr_zgl=$r['nr_zgl'];
  6. echo '<option value=link.php?site=edit&id="'.$id.'">'.$nr_zgl.'</option>';
  7.  }
  8. ?>


po prostu:

  1. <?php
  2. while ($r= mysql_fetch_assoc($wynik)) {
  3.  echo '<option value="'.$r['id'].'">'.$r['nr_zgl'].'</option>';
  4. }
  5. ?>


do tego dodaj jedno pole:

  1. <input type="hidden" name="site" value="edit">



Teraz do pliku link.php trafią wszystkie dane w tablicy $_POST
todziu
OK My4tic - jakbys mogl zerknac na ten kodzik:

plik1.php
  1. <?php
  2. echo "<form action="link.php" method="POST">";
  3. echo "<select name=od onchange="submit()">";
  4. while ($r= mysql_fetch_assoc($wynik))
  5.  
  6.  {
  7.  echo '<option value="'.$r['id'].'">'.$r['nr_zgl'].'</option>';
  8.  }
  9.  
  10. echo "</form>";
  11. ?>


plik2.php
  1. <?php
  2. $ident=$_POST['id'];
  3. $link = mysql_connect($url, $log, $pas);
  4. mysql_select_db ($baza);
  5. $zapyt = "SELECT * FROM zgloszenie WHERE id = $ident ";
  6. $wykonaj = mysql_db_query($baza, $zapyt);
  7. echo "rekord $ident";
  8. ?>


A w logach mi wywala blad Undefined index: id jak jest przekazywana do pliku2.php - co moze byc przyczyna


Ma ktos jakis nowy pomysl ?
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.