Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL]Uaktualnienie rekordu z wybranej tabeli
ttb
post 21.04.2009, 20:33:30
Post #1





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 25.03.2009

Ostrzeżenie: (0%)
-----


Witam wszystkich!

Pobieram dane z dwóch tabel:
Kod
<?php
require("../connections/c2b.php");

$wynik = mysql_query("SELECT klucz,id,datodb,termin,nrzam,paleta,paczka,l,b,h,w,kod,miasto FROM test WHERE status='wyprodukowano'
  UNION SELECT klucz,id,datodb,termin,nrzam,paleta,paczka,l,b,h,w,kod,miasto FROM cate WHERE status='wyprodukowano' ORDER BY 12") or die('Błąd zapytania');

    echo "<center><table  border=1>";
echo "<tr>";
        echo "<td width=140pt><b>NADAWCA</b></td>";   echo "<td width=40pt><b>WZ</b></td>";   echo "<td width=40pt><b>ODBIÓR</b></td>";
        echo "<td width=40pt><b>TERMIN</b></td>";   echo "<td width=70pt><b>NR ZAM</b></td>";   echo "<td width=30pt><b>PAL</b></td>";
        echo "<td width=30pt><b>PCS</b></td>";   echo "<td width=40pt><b>L</b></td>";   echo "<td width=40pt><b>B</b></td>";
        echo "<td width=40pt><b>H</b></td>";   echo "<td width=40pt><b>W</b></td>";   echo "<td width=40pt><b>KOD</b></td>";
echo "<td width=220pt><b>MIASTO</b></td>";   echo "<td width=90pt><b>POBRANIE</b></td>";   echo "<td width=70pt><b>EDYCJA</b></td>";
        echo "</tr>";

    while($r = mysql_fetch_assoc($wynik)) {
echo "<tr>";
        echo "<td>".$r['klucz']."</td>";   echo "<td>".$r['id']."</td>";   echo "<td>".$r['datodb']."</td>";
        echo "<td>".$r['termin']."</td>";   echo "<td>".$r['nrzam']."</td>";   echo "<td>".$r['paleta']."</td>";
        echo "<td>".$r['paczka']."</td>";   echo "<td>".$r['l']."</td>";   echo "<td>".$r['b']."</td>";
        echo "<td>".$r['h']."</td>";   echo "<td>".$r['w']."</td>";   echo "<td>".$r['kod']."</td>";
        echo "<td>".$r['miasto']."</td>";   echo "<td>".$r['pobranie']." zł</td>";   echo "<td><a href=\"editwypmag.php?a=edit&amp;id={$r['id']}&klucz={$r['klucz']}\">EDIT</a></td>";
        echo "</tr>";}

    echo "</table></center>";

?>



Po wybraniu rekordu do edycji:
Kod
<?php


$a = $_GET['a'];
$id = $_GET['id'];
$klucz = $_GET['klucz'];

if($a == 'edit' and !empty($id)) {

   $wynik = mysql_query("SELECT id,klucz,datodb,status FROM test WHERE id='$id' AND klucz='$klucz'
   UNION SELECT id,klucz,datodb,status FROM cate WHERE id='$id' AND klucz='$klucz'") or die('Błąd zapytania');

   if(mysql_num_rows($wynik) > 0) {

   $r = mysql_fetch_assoc($wynik);

   echo '<form action="editwypmag.php" method="POST">
         <input type="hidden" name="a" value="save" />
         <input type="hidden" name="id" value="'.$id.'" />
         <input type="hidden" name="klucz" value="'.$klucz.'" />

<tr><td>DATA WYSTAWIENIA:</td><td><input type="date" onclick="scwShow(this,this)" name="datodb" value="'.$r['datodb'].'"/></td></tr><br><br>

<tr><td>STATUS PRZESYŁKI:</td><td><select name="status" value="'.$r['status'].'">
  <option>MAGAZYN</option>
  
</select></td></tr><br><br>




       <input type="submit" value="popraw" />
       </form>';
   }
}
elseif($_POST['a'] == 'save')
{

   $id = $_POST['id'];
   $datodb = $_POST['datodb'];
   $status = $_POST['status'];
   $klucz = $_POST['klucz'];

       mysql_query("UPDATE test SET status='$status', datodb='$datodb' WHERE id='$id' AND klucz='$klucz'
  OR UPDATE cate SET status='$status', datodb='$datodb' WHERE id='$id' AND klucz='$klucz'") or die('Błąd zapytania');
   echo 'Dane zostały zaktualizowane';
}
?>


pojawia się wybrany rekord, który chcę zmienić. Po kliknięciu "popraw" pojawia się komunikat "dane zostały zaktualizowane" ale nie aktualizuje się.
Problem w tym, że w tabeli test i tabeli cate numery id się powtarzają i nie wiem jak zrobić, żeby aktualizowało rekord w odpowiedniej tabeli...

Porszę o podpowiedź.
Dzięki.

Ten post edytował ttb 21.04.2009, 20:38:19
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 11)
zelu
post 22.04.2009, 07:54:02
Post #2





Grupa: Zarejestrowani
Postów: 229
Pomógł: 34
Dołączył: 7.12.2008
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Ogólny schemat:
  1. UPDATE tabela SET pole = wartosc WHERE pole = wartosc


Powinienes rozbic swoje zapytania na dwa osobne, po jednym dla kazdej tabeli
Go to the top of the page
+Quote Post
ttb
post 22.04.2009, 13:45:46
Post #3





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 25.03.2009

Ostrzeżenie: (0%)
-----


Masz na myśli coś takiego?

  1. <?php
  2. mysql_query("UPDATE test SET status='$status', datodb='$datodb' WHERE id='$id' AND klucz='$klucz'");
  3. mysql_query("UPDATE cate SET status='$status', datodb='$datodb' WHERE id='$id' AND klucz='$klucz'") or die('Błąd zapytania');
  4. echo 'Dane zostały zaktualizowane';
  5. ?>


Nie działa...

Ten post edytował ttb 22.04.2009, 13:47:43
Go to the top of the page
+Quote Post
wookieb
post 22.04.2009, 13:49:32
Post #4





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




A sprawdz wszystkie zmienne jakie przekazujesz do zapytan
http://php.net/var_dump
Poza tym wyjasnij to
Cytat
  1. <?php
  2. mysql_query("UPDATE test SET status='$status', datodb='$datodb' WHERE id='$id' AND klucz='$klucz'
  3.  OR UPDATE cate SET status='$status', datodb='$datodb' WHERE id='$id' AND klucz='$klucz'") or die('Błąd zapytania');
  4. ?>


--------------------
Go to the top of the page
+Quote Post
ttb
post 22.04.2009, 13:54:06
Post #5





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 25.03.2009

Ostrzeżenie: (0%)
-----


Zmienne grają... zapytanie ułożyłem już inaczej (tak jak podpowiedział 'zelu')...
Go to the top of the page
+Quote Post
wookieb
post 22.04.2009, 13:55:18
Post #6





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Czyli jak?


--------------------
Go to the top of the page
+Quote Post
ttb
post 22.04.2009, 13:58:32
Post #7





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 25.03.2009

Ostrzeżenie: (0%)
-----


chodzi mi o to zapytanie:

  1. <?php
  2. mysql_query("UPDATE test SET status='$status', datodb='$datodb' WHERE id='$id' AND klucz='$klucz'");
  3. mysql_query("UPDATE cate SET status='$status', datodb='$datodb' WHERE id='$id' AND klucz='$klucz'") or die('Błąd zapytania');
  4. echo 'Dane zostały zaktualizowane';
  5. ?>
Go to the top of the page
+Quote Post
zelu
post 22.04.2009, 14:19:33
Post #8





Grupa: Zarejestrowani
Postów: 229
Pomógł: 34
Dołączył: 7.12.2008
Skąd: Poznań

Ostrzeżenie: (0%)
-----


A czy przy update masz połączenie z baza w ogóle?
Go to the top of the page
+Quote Post
ttb
post 22.04.2009, 14:24:14
Post #9





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 25.03.2009

Ostrzeżenie: (0%)
-----


Tak, połączenie jest.
Go to the top of the page
+Quote Post
wookieb
post 22.04.2009, 14:30:28
Post #10





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Najprostrza rzecz. Skopiuj sobie to zapytani i je wyświetl.
A jak znam zycie to zapewne brakuje ci wywolania funkcji http://php.net/mysql_real_escape_string na kazdym parametrze ktory przekazujesz do zapytania.


--------------------
Go to the top of the page
+Quote Post
ttb
post 22.04.2009, 14:36:18
Post #11





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 25.03.2009

Ostrzeżenie: (0%)
-----


zapytanie nie aktualizuje rekordu...
funkcji mysql_real_escape_string nie dołączałem... ale czy jej brak może mieć wpływ na brak możliwości aktualizacji rekordu?
Go to the top of the page
+Quote Post
wookieb
post 22.04.2009, 14:39:11
Post #12





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Tak może mieć bo np bedzie gdzies w zmiennej znak ' i lezysz.
Zrób po tych zapytaniach echo mysql_error i będziesz wiedział jaki błąd dostajesz. Zapewne otrzymasz jakis syntax error czy coś a wtedy własnei WYSWIETLASZ ZAPYTANIE i je sprawdzasz.

Ten post edytował wookieb 22.04.2009, 14:39:32


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 01:53