![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 4.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam, potrzebuje pomocy ze skryptem - jestem totalnym laikiem w tematyce ajax, a chciałabym żeby dane na stronie automatycznie aktualizowały mi się po dodaniu rekordu do bazy.
W czym problem: 1. mam plik index.php o strukturze: <?php ob_start(); session_start(); if(!session_is_registered("uzytkownik") || $_GET['logout']==1) { // Sprawdza zmienną sesji. session_destroy(); // Przekierowanie do index.php if( $_GET['logout']==1){ header("location: index.php");} } $start=microtime(); // kod do liczenia czasu ładowania strony ?> <? include("scripts/setup.php"); include("scripts/functions.php"); //include("scripts/functions.js"); include("scripts/db.class.php"); $DB = new DBClass('xxx', array('xxx'=>array($dbhost,$dbuser,$dbpass,$dbname))); $DB->Execute("SET CHARACTER SET utf8"); $DB->Execute("SET NAMES utf8"); $DB->_DEBUG(TRUE); $adm=$_GET['id']; if(!$adm) $adm='produkty'; $newwind=$_GET['newwind']; include_once("parts/header.php"); //tutaj mam wyświetlanie wartości koszyka //tylko to co poniżej się przeładowuje... if (file_exists("parts/modules/".$adm.".php")) { include('parts/modules/'.$adm.'.php'); } if (file_exists("parts/templates/".$adm.".php")) { include('parts/templates/'.$adm.'.php'); } include("parts/footer.php"); ?> 2. w includowanym pliku header mam wszystkie znaczniki head + "górną część strony czyli menu i m.in. <table> w której wyświetla się aktualny stan koszyka, a raczej MIAŁ się wyświetlać 3. po tym includowane sa skrypty dotyczące poszczególnych podstron, m.in. dodawania produktów do koszyka i tutal jest problem - po dodaniu produktu do koszyka chciałabym, aby automatycznie aktualizowal mi zawartość koszyka, którego wyświetlanie jest w header ![]() Czy może ktoś mi podpowiedzieć jak to zrobić? |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 324 Pomógł: 110 Dołączył: 18.09.2012 Ostrzeżenie: (0%) ![]() ![]() |
Z tego co zrozumiałem chcesz po kliknięci w przycisk typu "dodaj do koszyka" js wysłać zapytanie do mysql z produktem i zaktualizować produkt w koszyka. Nic nie szkodzi na przeszkodzie aby to zrobić pomimo iż te pliki z koszykiem jest w innym pliku niż plik z produktami. Napisze Ci krok po kroku jak to zrobić a jeśli sobie nie poradzisz to napiszemy to razem.
1. Po pierwsze każdy produkt ma pewnie jakiś identyfikator. Klikając na przycisk dodaj do koszyka musisz wysłać ajaxem do pliku php identyfikator tego produktu i inne potrzebne Ci parametry (np. ilość sztuk). Przykład takiego kodu w jQuery.
2. W pliku php musisz sobie przygotować kod który odbierze dane z posta i odpowiednio je przetworzy zwracając albo JSONA z danymi albo JSONA z gotowym już widokiem danego produktu dodanego do koszyka. 3. Po wysłaniu danych JSONEM z php do jQuery w parametrze success dodajesz za pomocą funkcji append() dane do Twojego widoku html. Mam nadzieję że w miarę po ludzku to wyjaśniłem ![]() |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 4.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
pomogło, ale się zirytowałam i narazie użyłam php. Co mnie zirytowała - strona mi się przeładowuje pomimo, iż miala tego nie robić
![]() |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 324 Pomógł: 110 Dołączył: 18.09.2012 Ostrzeżenie: (0%) ![]() ![]() |
aaa
![]() ![]() |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 4.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
testuję taki przykładzik
<script type="text/javascript"> $(function(){ $("#ajax-post").submit(function() { var username = $("input[name=username]").val(); var email = $("input[name=email]").val(); data = "username=" + username + "&email=" + email; $.ajax({ type: "POST", data: data, url: "?id=produktyk", success: function(response){ if($.trim(response) == "SUCCESS") { alert("Dane zostały dodanie do bazy."); } else { alert(response); } } }); return false; }); }); </script> plik produktyk.php $username = $_POST['username']; $email = $_POST['email']; if(!empty($username) AND !empty($email)) { //tutaj insert do bazy danych ![]() } if($insert) { echo "SUCCESS"; } else { echo "ERROR"; } a teraz jak juz mi się ten element doda do bazy to chcę żeby w div wyświetlal mi się aktualny stan "id" z tabeli uzytkownicy, a nie mogę sobie poradzić z tym append() - moge prosic o pomoc jeszcze w tej kwestii? Ten post edytował tish83 21.09.2012, 19:05:17 |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 324 Pomógł: 110 Dołączył: 18.09.2012 Ostrzeżenie: (0%) ![]() ![]() |
Dobrze ale co chesz dokładnie zwrócić z pliku php
![]() ![]() ![]() |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 4.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
teraz to już mi nic nie działa - zaraz się chyba poplaczę HELP ME!
tak wygląda cały mój "problem" od początku: index.php <?php ob_start(); session_start(); if(!session_is_registered("uzytkownik") || $_GET['logout']==1){ session_destroy(); if( $_GET['logout']==1){header("location: index.php");}} $start=microtime(); ?> <? include("scripts/setup.php"); include("scripts/functions.php"); include("scripts/db.class.php"); $DB = new DBClass('xxx', array('xxx'=>array($dbhost,$dbuser,$dbpass,$dbname))); $DB->Execute("SET CHARACTER SET utf8"); $DB->Execute("SET NAMES utf8"); $DB->_DEBUG(TRUE); $adm=$_GET['id']; if(!$adm) $adm='produkty'; $newwind=$_GET['newwind']; include_once("parts/header.php"); if (file_exists("parts/modules/".$adm.".php")){include('parts/modules/'.$adm.'.php');} if (file_exists("parts/templates/".$adm.".php")){include('parts/templates/'.$adm.'.php');} include("parts/footer.php"); ?> header.php w head umieściłam: <script type="text/javascript"> $(function() { $("#upk").click(function() { var przyc_u = $('#przyc_u').val(); var usr = $('#usr').val(); var dataString = 'przyc_u='+ przyc_u + '&usr=' + usr; $.ajax({ type: 'POST', url: '?id=produktykk', data: dataString, success: function(data) { if( data == '0' ) alert( 'Błędne dane logowania!!!' ); else window.location = window.location; } }); }); }); </script> dalej są tabelki odpowiedzialne za nagłówek, menu i boczne menu, i tu także jest wyświetlanie aktualnej zawartości koszyka <body>...... <?/*------------------------------------------------------- koszyk --------------------------------------------------------------*/?> <?include("parts/modules/produktyk.php"); // ten sposób wyświetla aktualny stan koszyka, ale po odświeżeniu strony ;( w ten sposób ominęłam dodawanie ajaxa dopóki go nie ogarnę?> <td rowspan="2" style="background-image:url(images/koszyk.png); background-repeat: no-repeat; width: 222px;"> <table style="margin-top: 35px; font-size:13px; font-weight: bold;"> <tr><td>Ilość produktów....</td><td align="right"><?=($ww['TotalIlosc'] ? $ww['TotalIlosc'] : '0');?></td></tr> <tr><td>Wartość......</td><td align="right"><?=($ww['TotalWart'] ? $ww['TotalWart'] : '0');?> zł</td></tr> <tr><td colspan="2" align="right"><a href="?id=konto&k=2&o=1">sprawdź...</a></td></tr> </table> </td> <?/*------------------------------------------------------- koszyk koniec --------------------------------------------------------------*/?> produktyk.php <? $userid=$DB->GetOne("SELECT id FROM uzytkownik WHERE login='".$_SESSION['uzytkownik']."'"); //echo 'post '.$_POST['przyc_k']; if ($_POST['przyc_k']) { if($userid) {//dodać podobne dla gościa $zamid=$DB->GetOne("SELECT id FROM zamowienia WHERE userid='".$userid."' && zamowione='0'"); if($zamid) { $prodexist=$DB->GetOne("SELECT ilosc FROM koszyk WHERE prodid='".$_POST['przyc_k']."' && zamid='".$zamid."'"); if($prodexist){ mysql_query("UPDATE koszyk SET ilosc='".$prodexist."'+1 WHERE prodid='".$_POST['przyc_k']."' && zamid='".$zamid."'");} else {mysql_query("INSERT INTO koszyk (prodid, zamid, ilosc) VALUES ('".$_POST['przyc_k']."', '".$zamid."', '1')");} } else { mysql_query("INSERT INTO zamowienia (userid, zlozone) VALUES ('".$userid."', '".time()."')"); $zamid=mysql_insert_id(); mysql_query("INSERT INTO koszyk (prodid, zamid, ilosc) VALUES ('".$_POST['przyc_k']."', '".$zamid."', '1')"); } } } if($userid){$zam=$DB->GetOne("SELECT id FROM zamowienia WHERE userid='".$userid."' && zamowione='0'"); $www=mysql_query("SELECT SUM(ilosc) AS TotalIlosc, SUM( cenasb * ilosc ) AS TotalWart FROM koszyk k LEFT JOIN cennik c ON c.prodid = k.prodid WHERE zamid='".$zam."'"); $ww=mysql_fetch_array($www); } ?> oraz część centralna w której ładuje się zawartość podstron modules i templates konto.php w skrócie <form> <?/*<form name="zform" method="post" action="?id=<? echo $id; ?>" enctype="multipart/form-data">*/?> <tr> <td colspan="3"> <table width="100%" border="0"> <tr height="100px" class="large"> <td width="50%" colspan="2">Produkt:</td> <td>Dostępność:</td> <td nowrap>Cena / szt.</td> <td>Ilość:</td> <td>Wartość:</td> <td></td> </tr> <? $bbb=mysql_query("SELECT k.id AS kid, k.prodid, k.ilosc, pr.nazwa, d.nazwa AS Dostep, p.*, p.id AS produktid, p.nazwa AS tytul, IF(c.rabat2!=0, c.cenapb, c.cenasb) AS cena FROM zamowienia z LEFT JOIN koszyk k ON z.id=k.zamid LEFT JOIN produkty p ON p.id=k.prodid LEFT JOIN cennik c ON c.prodid=p.id LEFT JOIN producent pr ON pr.id=p.producent_id LEFT JOIN dostepnosc d ON d.id=p.dostep WHERE z.zamowione='0' && z.userid='".$userid."'"); while($bb=mysql_fetch_array($bbb)) { $zdj=$DB->GetOne("SELECT nazwa FROM zdjecia WHERE prodid='".$bb['produktid']."' && glowne=1"); echo $bb['produktid']; ?> <tr height="100px"> <td align="center"><img style="max-width:100px; max-height:100px;" src="photos/h200/<?=$zdj;?>"/></td> <td width="50%" class="green"><?=$bb['tytul'];?></td> <td align="center"><?=$bb['Dostep'];?></td> <td align="center"><?=$bb['cena'];?></td> <td align="center"> <input type="text" name="il" size="3" value="<?=$bb['ilosc'];?>"/> <input type="hidden" name="przyc_u" value="<?=$bb['produktid'];?>"> <input type="hidden" name="usr" value="<?=$userid;?>"> <input type=image alt="Zwiększ" src="images/up.jpg" value="<?=$bb['produktid'];?>" id="upk" onclick="return false;"/> <? /*tu ma być cudo zwiększające ilość w bazie o 1*/ ?> </td> <td align="center"><b><?=$bb['ilosc']*$bb['cena'];?> zł</b></td> <td><a href="java script: potwierdz('id=<? echo $id; ?>&del=<?=$bb['kid'];?>', 1, '', '');"><img src="./images/del.gif" alt="Usuń" align="left"></a></td> </tr> <? } ?></table> </td> </tr> </form> no i produktykk.php do którego jest odwolanie w head <? if ($_POST['przyc_u']) { $up=$DB->GetOne("SELECT k.id FROM zamowienia z LEFT JOIN koszyk k ON z.id=k.zamid WHERE z.zamowione='0' && z.userid='".$_POST['usr']."' && k.prodid='".$_POST['przyc_u']."'"); if($up) { mysql_query("UPDATE koszyk SET ilosc=ilosc+1 WHERE id='".$up."'"); } } ?> no i o tototo nie działa ![]() oczywiście kolejna rzecz to, że przycisk zwiekszający jest w pętli i zastanawiam się czy nie powinien mieć zmiennej nazwy Ten post edytował tish83 25.09.2012, 09:25:43 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 12:06 |