Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: aktualizacja wielu wierszy jednoczesnie
Forum PHP.pl > Forum > Bazy danych > MySQL
sikorat
Witam
w pierwszym pliku php wybieram grupe rekordow z tabeli mysql i umieszczam je w polach formularza.
Submit wywoluje drugi plik php i w nim chce wykonac update tabeli z ktorej wczesniej wybralem rekordy, ale po prostu nie wiem jak to zrobic.

Pierwszy plik:
[php:1:8d5aba6ea6]<?php
//********** podlaczam sie do bazy
$link = mysql_connect($serwer, $user, $password)
or die("Nie moge sie polaczyc : " . mysql_error());
print "Polaczenie udane";
mysql_select_db($baza) or die("Nie moge wybrac danej bazy");

$query = "SELECT * FROM planowanie ";
$result = mysql_query ($query) or die ("Zapytanie zakonczone niepowodzeniem");

print "<center><table border='1' cellpadding=2 cellspacing=0> n";
//********** wyświetlam nazwy kolumn
$i = 0;
$liczba_kolumn = mysql_num_fields($result);
echo "<tr>" ;
while ($i < $liczba_kolumn) {
echo "<td><b>",mysql_field_name($result, $i),"</b></td>";
$i++;
}
echo "</tr>";
//********** Umieszczam wartosci komorek w polach formularza
echo(" <form method=POST action=upd_planowanie_valid.php>");
while ($line = mysql_fetch_array($result, MYSQL_ASSOC))
{
$j=0;
$i=0;
print "<tr>";
foreach ($line as $col_value)
{

if ($i==0) {
ECHO("<TD><HIDDEN TYPE=TEXT NAME=id[$j] VALUE=$col_value SIZE=9>$col_value</TD> ");
}
else if ($i==1) {
ECHO("<TD><INPUT TYPE=TEXT NAME=data_platnosci[$j] VALUE=$col_value SIZE=8></TD> ");
}
else if ($i==2) {
ECHO("<TD><INPUT TYPE=TEXT NAME=kategoria[$j] VALUE=$col_value SIZE=10 maxlenght=50></TD> ");
}
else if ($i==3) {
ECHO("<TD><INPUT TYPE=TEXT NAME=tytul[$j] VALUE=$col_value SIZE=10 maxlenght=50></TD> ");
}
else {
ECHO("<TD><INPUT TYPE=TEXT NAME=kwota[$j] VALUE=$col_value SIZE=10 maxlenght=50></TD> ");
}
$i++;
}
print"</tr>";
$j++;
}
echo("<p><td align=center colspan=0><input type=submit value=ZATWIERDZ></td></p>");
echo("</form>");
print "</table> </center>";
mysql_free_result($result);
?>[/php:1:8d5aba6ea6]


Plik wywolywany z pierwszego formularza wyglada nastepujaco
[php:1:8d5aba6ea6]<?php

//********** Polaczenie, wybranie bazy */
$link = mysql_connect($serwer, $user, $password)
or die("Nie moge sie polaczyc : " . mysql_error());
print "Polaczenie udane";
mysql_select_db($baza) or die("Nie moge wybrac danej bazy");

$query = "select * from planowanie";
$result = mysql_query ($query) or die ("Zapytanie zakonczone niepowodzeniem");
print "<center><table border='1' cellpadding=2 cellspacing=0> n";
//********** wyświetlenie nazw kolumn
$i = 0;
$liczba_kolumn = mysql_num_fields($result);
echo "<tr>" ;
while ($i < $liczba_kolumn) {
echo "<td><b>",mysql_field_name($result, $i),"</b></td>";
$i++;
}
echo "</tr>";
//********** Aktualizacja wierszy
$j=0;
$i=0;
$update = "update planowanie set data_platnosci = $data_platnosci[$j],
kategoria = $karetegoria[$j], tytul = $tytul[$j], kwota = $kwota[$j]
where id = $id[$j]";
while ($line = mysql_fetch_array($result, MYSQL_ASSOC))
{
print "<tr>";
foreach ($line as $col_value)
{
mysql_query($update,$link) or die ("Dupa");
print "<td>$col_value </td>";
$i++;

}
print"</tr>";
$j++;
}
print "</table> </center>";
mysql_free_result($result);


?>[/php:1:8d5aba6ea6]


i albo wstawiam polecenie mysql_query($update,$link) or die ("Chyba masz problem");
nie w to miejsce co potrzeba, albo popelniam jakis inny blad, ale nie potrafie go znalezc, choc juz siedze nad tym 5 godzin.
Jezeli ktos bedzie w stanie mi pomoc to bardzo mnie ucieszy.

w nadzieji na pomoc....
sikorat
ok, juz wiem
1 plik ma wygladac tak:
[php:1:413c99a8e1]<?php
//********** Definicja podstawowych zmiennych
$baza = 'jakas_baza';
$serwer = 'serwer';
$user = 'root';
$password = '';
//********** Polaczenie, wybranie bazy */
$link = mysql_connect($serwer, $user, $password)
or die("Nie moge sie polaczyc : " . mysql_error());
print "Polaczenie udane";
mysql_select_db($baza) or die("Nie moge wybrac danej bazy");

$query = "SELECT * FROM planowanie ";
$result = mysql_query ($query) or die ("Zapytanie zakonczone niepowodzeniem");

print "<center><table border='1' cellpadding=2 cellspacing=0> n";
//********** wyświetlenie nazw kolumn
$i = 0;
$liczba_kolumn = mysql_num_fields($result);
echo "<tr>" ;
while ($i < $liczba_kolumn) {
echo "<td><b>",mysql_field_name($result, $i),"</b></td>";
$i++;
}
echo "</tr>";
//********** Wyświetlenie zawartości tabeli
echo(" <form method=POST action=upd_planowanie_valid_cpy.php>");
$j=0;
while ($line = mysql_fetch_array($result, MYSQL_ASSOC))
{

$i=0;
print "<tr>";
foreach ($line as $col_value)
{

if ($i==0) {
ECHO("<TD><input TYPE=hidden NAME=id[$j] VALUE=$col_value SIZE=9>$col_value</TD> ");
}
else if ($i==1) {
ECHO("<TD><INPUT TYPE=TEXT NAME=data_platnosci[$j] VALUE=$col_value SIZE=8></TD> ");
}
else if ($i==2) {
ECHO("<TD><INPUT TYPE=TEXT NAME=kategoria[$j] VALUE=$col_value SIZE=10 maxlenght=50></TD> ");
}
else if ($i==3) {
ECHO("<TD><INPUT TYPE=TEXT NAME=tytul[$j] VALUE=$col_value SIZE=10 maxlenght=50></TD> ");
}
else {
ECHO("<TD><INPUT TYPE=TEXT NAME=kwota[$j] VALUE=$col_value SIZE=10 maxlenght=50></TD> ");
}
$i++;
}
print"</tr>";
$j++;
}
$max=$j;
echo("<p><td><input type=hidden name=max value=$max></td></p>");
echo("<p><td align=center colspan=0><input type=submit value=ZATWIERDZ></td></p>");
echo("</form>");
print "</table> </center>";
mysql_free_result($result);

?>[/php:1:413c99a8e1]

2 plik ma wygladac tak:
[php:1:413c99a8e1]<?php
//********** Definicja podstawowych zmiennych
$baza = 'jakas_baza';
$serwer = 'serwer';
$user = 'root';
$password = '';
//********** Polaczenie, wybranie bazy */
$link = mysql_connect($serwer, $user, $password)
or die("Nie moge sie polaczyc : " . mysql_error());
print "Polaczenie udane";
mysql_select_db($baza) or die("Nie moge wybrac danej bazy");

$query = "select * from planowanie";
$result = mysql_query ($query) or die ("Zapytanie zakonczone niepowodzeniem");
print "<center><table border='1' cellpadding=2 cellspacing=0> n";
//********** wyświetlenie nazw kolumn
$i = 0;
$liczba_kolumn = mysql_num_fields($result);
echo "<tr>" ;
while ($i < $liczba_kolumn) {
echo "<td><b>",mysql_field_name($result, $i),"</b></td>";
$i++;
}
echo "</tr>";
//********** Wyświetlenie zawartości tabeli
$j=0;
while ($line = mysql_fetch_array($result, MYSQL_ASSOC))
{
$update = "update planowanie set data_platnosci = '$data_platnosci[$j]',
kategoria = '$kategoria[$j]', tytul = '$tytul[$j]', kwota = '$kwota[$j]'
where id = $id[$j]";
print "<tr>";
foreach ($line as $col_value)
{
mysql_query($update,$link) or die ("Dupa");
print "<td>$col_value</td>";
}
$j++;
print"</tr>";
}
print "</table> </center>";
mysql_free_result($result);




?>[/php:1:413c99a8e1]

i tyle
adeq_PL
Szukalem odpowiedzi na trapiacy mnie problem wyswietlania nazw kolumn bazy i natknalem sie na ten przyklad....

Nie wiem dlaczego ale urzywajac petli while tak jak na przykladzie:

Cytat
  1. <?php
  2.  
  3. $i = 0; 
  4. $liczba_kolumn = mysql_num_fields($result); 
  5. echo "<tr>" ; 
  6. while ($i < $liczba_kolumn) { 
  7. echo "<td><b>",mysql_field_name($result, $i),"</b></td>"; 
  8. $i++; 
  9. } 
  10.  
  11. ?>


mialem ogromne problemy z wyswietleniem rzadanego zapytania. Urzycie tej petli spowodowalo bardzo duze obciazenie serwera, strona nie chciala sie wyswietlic...

Pomoglo dopiero urzycie petli for:

  1. <?php
  2.  
  3. $liczba_kolumn = mysql_num_fields($dzialaj);
  4.  
  5.       for($i=2;$i<=($liczba_kolumn-2);$i++){
  6.       echo "<td><b>",mysql_field_name($dzialaj, $i),"</b></td>"; 
  7.       }
  8.  
  9. ?>


Tak wiez uzywajac tego przykladu uwazajcie.... smile.gif
Ociu
Tak.. a że udało Ci się znaleźć jakieś przykład w necie to odkopałeś temat sprzed 2 lat ?
adeq_PL
No nie wiem jak ty, ale ja uważam ze rozwiazywanie problemow polega wlasnie na wyszukiwaniu dawnych przykladow odpowiadajacych naszym problemom.... snitch.gif
spenalzo
Ale nie musiales do tematu sprzed 2,5 roku wciskać posta, który niewiele wnosi tongue.gif
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-2024 Invision Power Services, Inc.