Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Uaktualnienie rekordu z wybranej tabeli
Forum PHP.pl > Forum > Przedszkole
ttb
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.
zelu
Ogólny schemat:
  1. UPDATE tabela SET pole = wartosc WHERE pole = wartosc


Powinienes rozbic swoje zapytania na dwa osobne, po jednym dla kazdej tabeli
ttb
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...
wookieb
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. ?>
ttb
Zmienne grają... zapytanie ułożyłem już inaczej (tak jak podpowiedział 'zelu')...
wookieb
Czyli jak?
ttb
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. ?>
zelu
A czy przy update masz połączenie z baza w ogóle?
ttb
Tak, połączenie jest.
wookieb
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.
ttb
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?
wookieb
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.
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.