Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Nadpisanie rekordow
Forum PHP.pl > Forum > Przedszkole
divril
Witam.

Mam sobie bazę danych. Dodaje do niej rekordy. Chcialbym, zeby po dodaniu do niej kolejnego rekordu, ktory juz wczesniej sie pojawil, zwiekszyla sie tylko jego liczba. Podam przyklad

Dodalem do tabeli ksiazki rekord:

  1. $dodajSluga = mysql_query("INSERT INTO `ksiazki` (id, t, a, s , c) VALUES ('', 'Sluga Bozy', 'Jacek Piekara', '1', '12.50')");


teraz dodalem cokolwiek innego, albo nawet nie koniecznie, po czym znowy dodalem ta sama ksiazke. Teraz chcialbym zeby ilosc zwiekszyla sie o 1. Jak moge to zrealizowac?

Pozdrawiam
Ulysess
musisz zrobić update dla ID tej ksiązki
ADeM
UPDATE + mysql_affected_rows() + INSERT
divril
uhm.. rozumiem o co Wam chodzi, ale nie za bardzo wiem jak to ujac w skladnie php:/
daros17
poczytaj o mysql-affected-rows tutaj mysql-affected-rows

poniżej daje Ci przykład na update w bazie. Musisz sobie to przekształcić na własną bazę
  1. $connection = mysql_query("UPDATE `users` SET `pass` = '$new_pass' WHERE `id`='$id'")or die (mysql_error());
  2. printf ("Zaktualizowanych rekordów: %d\n", mysql_affected_rows());

po tym dajesz zapytanie aby dodawało nową pozycję
Ghost_78
glownie Twoj problem bedzie polegal na ustaleniu ID rekordu w ktorym ma nastapic inkrementacja wartosci. Jezeli ustalisz owe ID reszta jest prosta
mozesz to zrealizowac np tak:
  1. $query= mysql_query("SELECT id FROM ksiazki WHERE t='Sluga Bozy' AND a= 'Jacek Piekara' ");
  2. $row = mysql_fetch_assoc($query);
  3. $id = $row[id];
  4. // lepszym sposobem bedzie jezeli zorganizujesz sobie liste ksiazek i bedziesz je wskazywal np. linkiem gdzie przekazesz ID
  5.  
  6. // jezeli masz juz ID rekordu robisz update
  7. mysql_query("UPDATE ksiazki SET i=i+1 WHERE id='$id' ");

mam nadzieje ze zaskoczyles o co chodzi winksmiley.jpg


divril
Cytat(Ghost_78 @ 17.11.2010, 19:48:53 ) *
// lepszym sposobem bedzie jezeli zorganizujesz sobie liste ksiazek i bedziesz je wskazywal np. linkiem gdzie przekazesz ID


tego tylko nie czaje:D

reszta jest dla mnie jasna.

Tylko tak:

musialbym do zawrzec

klikajac sobie na dodaj ilestam sztuk wywoluje sobie zapytanie:
  1. if($sztukSluga != 0) $dodajSluga = mysql_query("INSERT INTO `koszyk` (id, t, a, s , c) VALUES ('', 'Sluga Bozy', 'Jacek Piekara', '$sztukSluga', '$cenaSluga')"); //DODAWANIE SLUGA BOZY


btw, koszyk to moja tabela gdzie dodaje sobie ksiazki, s to ilosc sztuk, stad SUM(s) wywoluje sobie sume
$sztukSluga to ilosc dodawanych ksiazek z formularza

musialbym jakos w ifie zawrzec ze Twoje zapytanie o Update mialoby sie wykonac jesli juz w koszyku ten rekord sie znajduje , tylko ze tak mi nie smiga:
  1. if(($ileSluga = mysql_query("SELECT SUM(s) FROM koszyk Where t='Sluga Bozy' ") == 0) )
  2. {
  3. if($sztukSluga != 0) $dodajSluga = mysql_query("INSERT INTO `koszyk` (id, t, a, s , c) VALUES ('', 'Sluga Bozy', 'Jacek Piekara', '$sztukSluga', '$cenaSluga')"); //DODAWANIE SLUGA BOZY
  4. }
  5. else {
  6.  
  7. $query= mysql_query("SELECT id FROM koszyk WHERE t='Sluga Bozy' AND a= 'Jacek Piekara' ");
  8. $row = mysql_fetch_assoc($query);
  9. $id = $row[id];
  10. // lepszym sposobem bedzie jezeli zorganizujesz sobie liste ksiazek i bedziesz je wskazywal np. linkiem gdzie przekazesz ID
  11.  
  12. mysql_query("UPDATE ksiazki SET s=s+$sztukSluga WHERE id='$id' ");
  13. };
Ghost_78
jezeli to ma byc koszyk to nie potrzebujesz w nim tytulu, autora ipt. Potrzebne Ci tam ile szt i ID ksiazki

poza tym jezeli chcesz zrobic w miare funkcjonalny koszyk to zbuduj sobie tabele mniej wiecej tak:

KOSZYK:
id, user_id, data itp

POZYCJA KOSZYKA
id, koszyk_id, ksiazka_id, szt itd

KSIAZKA
id, autor, tytul itd

wtedy tworzac koszyk i dodajac pozycje robisz tak:
  1. $koszyk_id = mysql_insert_id( mysql_query("INSERT INTO koszyk SET user_id='$user_ID',now() "));
  2.  
  3. //dodajesz pozycje
  4. musql_query("INSERT INTO koszyk_pos SET koszyk_id='$koszyk_id', ksiazka_id='$ID_KSIAZKI',szt='$szt' ");
  5.  
  6. // w ten sposob latwo potem sprawdzisz - jezeli juz jest w danym koszyku ksiazka to zwiekszasz ilosc jezeli nie to dodajesz tak jak wyzej
  7.  

divril
Cytat(Ghost_78 @ 17.11.2010, 21:20:42 ) *
jezeli to ma byc koszyk to nie potrzebujesz w nim tytulu, autora ipt. Potrzebne Ci tam ile szt i ID ksiazki

poza tym jezeli chcesz zrobic w miare funkcjonalny koszyk to zbuduj sobie tabele mniej wiecej tak:

KOSZYK:
id, user_id, data itp

POZYCJA KOSZYKA
id, koszyk_id, ksiazka_id, szt itd

KSIAZKA
id, autor, tytul itd

wtedy tworzac koszyk i dodajac pozycje robisz tak:
  1. $koszyk_id = mysql_insert_id( mysql_query("INSERT INTO koszyk SET user_id='$user_ID',now() "));
  2.  
  3. //dodajesz pozycje
  4. musql_query("INSERT INTO koszyk_pos SET koszyk_id='$koszyk_id', ksiazka_id='$ID_KSIAZKI',szt='$szt' ");
  5.  
  6. // w ten sposob latwo potem sprawdzisz - jezeli juz jest w danym koszyku ksiazka to zwiekszasz ilosc jezeli nie to dodajesz tak jak wyzej
  7.  


po co mi w koszyku user_id?smile.gif

Moglbys pokrotce wyjasnic Twoj kod? nie jest dla mnie do konca jasny
Ghost_78
Z tego co zrozumialem to ma byc jakis koszyk ksiegarni (byc moze zle zalozylem).
Jezeli jednak dobrze zrozumialem to id usera w koszyku przyda sie do okreslenia czyj to koszyk

Co do mojego "kodu" to te 2 tabele Koszyk i Koszyk_pos sa ze soba w relacji (jezeli nic Ci to nie mowi to poczytaj o tym - przyda sie) winksmiley.jpg
divril
Dziala mi kod uaktualniajacy koszyk, jesli znajduja sie juz w nim odp produkty:)
  1. $ileSluga = mysql_query(" SELECT SUM(s) FROM koszyk Where t='Sluga Bozy' ") ;
  2.  
  3. // var_dump(mysql_fetch_array($ileSluga));
  4.  
  5.  
  6. //if (mysql_fetch_array($ileSluga) != null ) //dadaj do koszyka pozycje jesli takiej jeszcze nie ma , raz sie musi dodac, potem juz nie
  7.  
  8. if(mysql_num_rows($ileSluga) > 0)
  9. {
  10. while($r = mysql_fetch_array($ileSluga))
  11. {
  12.  
  13. $sumka=$r['SUM(s)'];
  14. }
  15.  
  16. echo 'sumka: '.$sumka;
  17. }
  18. if($sumka != null)
  19. {
  20. $query= mysql_query("SELECT id FROM koszyk WHERE t='Sluga Bozy' AND a= 'Jacek Piekara' ");
  21. $idSluga = mysql_fetch_array($query);
  22. mysql_query("UPDATE koszyk SET s=s+$sztukSluga WHERE id='1' ");
  23. }
  24.  
  25. else {
  26. if($sztukSluga != 0) $dodajSluga = mysql_query("INSERT INTO `koszyk` (id, t, a, s , c) VALUES ('', 'Sluga Bozy', 'Jacek Piekara', '$sztukSluga', '$cenaSluga')"); //DODAWANIE SLUGA BOZY
  27. };
  28.  


Mam natomiast pytanko:
Mam tabele wyswietlana dla uzytkownika: 'ksiazki' :
  1. $wyswietl = mysql_query('SELECT * FROM fantasy GROUP BY id') ;
  2. if(mysql_num_rows($wyswietl) > 0)
  3. {
  4.  
  5. echo "<table class=\"C\"> ";
  6. echo "<tr>";
  7. echo "<td>Nr&nbspproduktu";
  8. echo "<td>tytul";
  9. echo "<td>autor";
  10. echo "<td>dostepnych";
  11. echo "<td>cena";
  12. echo "<td>";
  13.  
  14.  
  15. while($r = mysql_fetch_array($wyswietl))
  16. {
  17. echo "<tr>";
  18. echo "<td>".$r['id']."</td>";
  19. echo "<td>".$ktytul[tytul]=$r['tytul']."</td>";
  20. echo "<td>".$r['autor']."</td>";
  21. echo "<td>".$s=$r['sztuk']."</td>";
  22. echo "<td>".$c=$r['cena']." zł</td>";
  23. echo "<td> <form action=koszyk.php method=get >
  24. <input id=SZTUK name='PiekaraSlugaBozy' size=20 maxlength=5 value=1 onfocus=this.value = ''; this.onfocus=null>
  25. <button style=background-color:#f5f5f5; width:110px name=submit value=Wyslij type=submit>
  26. <img src=obrazki/submit.gif alt=wow width=18 height=24 border=0 align=absmiddle>Do Koszyka </button>
  27. </form>";
  28. echo "<td>".$ktytul[tytul];
  29. }
  30.  
  31.  
  32.  
  33.  
  34. }


Prosze zworic uwage ze przy kazdym wierszu tabeli a wiec przy kazdej pozycji mam pole formularza. Teraz chcialbym zeby jego atrybut 'name' byl unikalny dla kazdej pozycji, zebym po tym polu mogl bezposrednio dodac ten produkt, z iloscia sztuk wpisanych do formularza do koszyka.
Tylko nie mam pomyslu jak:/

Najchetniej chcialbym caly proces wybor produktu-> koszyk ograniczyc do jak najmniejszej ilosci zapytan mysql ogolnych. Mam na mysli dodawanie kolejnych produktow, zeby schemat dodawania/zwiekszania ilosci w tabeli koszyka byl uniwersalny.
Jakies rady?biggrin.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-2025 Invision Power Services, Inc.