Proszę mi podrzucić jakiś fajny przykład albo najlepiej gotowiec, ewentualnie proszę odesłać mnie do jakiegoś fajnego kursu. Dziękuje.
Kuba
Wątek przeniesiony 2020-12-17 09:20 z PHP przez cerrato.
Proszę mi podrzucić jakiś fajny przykład albo najlepiej gotowiec, ewentualnie proszę odesłać mnie do jakiegoś fajnego kursu. Dziękuje.
Kuba
@TomRiddle: Moze cos z tego... jak to przerobic zeby AJAX dopisywal mi do bazy...
<div id="demo">
<h1>The XMLHttpRequest Object</h1>
<button type="button" onclick="loadDoc()">Change Content</button>
</div>
<script>
function loadDoc() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("demo").innerHTML =
this.responseText;
}
};
xhttp.open("GET", "ajax_info.txt", true);
xhttp.send();
}
</script>
No to teraz musisz mieć server, który obsłuży żądanie GET ajax_info.txt
, i zapisze tego like'a gdzieś. Tam skąd potem Twoja strona sobie go wczyta.
@TomRiddle: No wiec wystrugalem taki plik...
<!DOCTYPE html>
<html>
<script type="text/javascript">
var likes = 1;
function like() {
document.getElementById("show").innerHTML = likes;
likes=likes+1;
var xhttp;
xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("txtHint").innerHTML = this.responseText;
}
};
xhttp.open("GET", "zapisLajka.php?q="+likes, true);
xhttp.send();
}
</script>
<button id="button" onclick="like()">Like <a type="text" id="show" style="color:black;"></a></button>
<p type="text" id="show" style="color:black;"></p>
</html>
Dodalem do funkcji doliczajacej lajki, fragment kodu ktory poprzez GET i AJAXa na bieżąco bedzie dopisywal mi kazda zmiane do bazy danych. Czy to mniej wiecej dobrze wyglada? Teraz jeszcze tylko musze zrobic plik zapisLajka.php Prosze o jakis komentarz. Dziekuje.
Kuba
Ps. I mam jeszcze takie jedno male pytanie. Na swoim blogu mam duzo wpisow i komentow do tych wpisow. Chcialbym zrobic tak, zeby mozna bylo lajkowac zarowno wpisy jak i komenty. Jednym slowoem bedzie wielki bajzel. I pytanie. W jaki sposob strona powinna pobierac lajki juz nabite przy ladowaniu sie. Tj. tez AJAXem mam to zrobic? Czy po prostu PHPem?
James Prada napisał(a):
<!DOCTYPE html> <html> <script type="text/javascript"> var likes = 1; function like() { document.getElementById("show").innerHTML = likes; likes=likes+1; var xhttp; xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { document.getElementById("txtHint").innerHTML = this.responseText; } }; xhttp.open("GET", "zapisLajka.php?q="+likes, true); xhttp.send(); } </script> <button id="button" onclick="like()">Like <a type="text" id="show" style="color:black;"></a></button> <p type="text" id="show" style="color:black;"></p> </html>
Dodalem do funkcji doliczajacej lajki, fragment kodu ktory poprzez GET i AJAXa na bieżąco bedzie dopisywal mi kazda zmiane do bazy danych. Czy to mniej wiecej dobrze wyglada?
Wygląda jak g**no.
likes
to zmienna globalna, którą potem modyfikujesz w like()
.like()
nie przyjmuje żadnych parametrów, więc nie wiadomo co ona like'uje tak na prawdę.getElementById("show")
, czyli ma ukryty efekt ubocznylike()
jednocześnie update'uje dane i zmienia widok, czyli robi dwie rzeczy na raz.zapisLajka.php
dostaje ilość like'ów. CZyli ja np mógłbym sobie zrobić reuqest i ustawić 1000 lajkó, albo 0. Powinno być tak że zapisLajka.php
po prostu zwiększa wartość z bazy o jeden.Teraz jeszcze tylko musze zrobic plik zapisLajka.php Prosze o jakis komentarz. Dziekuje.
Zrób żeby nie dostawał nowej ilości like'ów, tylko niech zwiększa aktualną o jeden.
Ps. I mam jeszcze takie jedno male pytanie. Na swoim blogu mam duzo wpisow i komentow do tych wpisow. Chcialbym zrobic tak, zeby mozna bylo lajkowac zarowno wpisy jak i komenty. Jednym slowoem bedzie wielki bajzel. I pytanie. W jaki sposob strona powinna pobierac lajki juz nabite przy ladowaniu sie. Tj. tez AJAXem mam to zrobic? Czy po prostu PHPem?
Lepiej wrenderować przy ładowaniu strony aktualną ilość like'ów.
@TomRiddle: Mam tu takie coś w JQuery. Kiedyś robiłem mini czacik i... w końcu zadziałał. Wywaliłem go ze swojej strony bo... mi trochę zawadzał i oprócz tego, że mi ktoś go raz shakował nic się specjalnego nie stało. No więc jedziemy z tematem. Oto fragment kodu wysyłający coś i uruchamiający przy okazji funkcjię.
<div class='chatBottom'>
<form action='#' onSubmit='return false;' id='chatForm'>
<input type='hidden' id='name' value='<?php echo $user; ?>'/>
<input type='text' name='text' id='text' value='' placeholder='type your chat message' />
<input type='submit' name='submit' value='Post' />
</form>
</div>
Co my tu mamy. Nie przejmujcie się detalami bo to tylko przykład. id=chatForm id=name i mamy tam VALUE. Odpowiednio skonfigurowanym Value w PHP mógłbym sobie identyfikowac poszczegolne wpisy i komentarze. Jeszcze nie wiem jak, ale jakos na pewno się da. Oto funkcja odpierajaca. Trzeba ja przerobic bo nie ma wysylac kolejnej linijki czata tylko dodawac jednego lajka po klikenięciu.
<opowiesci script>
$(function(){
$(document).on("submit","#chatForm",function(){
var text = $.trim($("#text").val());
var name = $.trim($("#name").val());
if(text !== "" && name !== "") {
$.post("ChatPoster.php",{text: text, name: name}, function(data){
$(".chatMessages").append(data);
});
}else{
alert("Data missing");
}
});
</script>
Jest tu jakas funkcja trim ktora chyba wyciaga wartosci INPUTOW oznakowanych odpowienim ID. W kazdym badz razie fukcja odpala ChatPoster.php za kazdym razem jak user kliknie SEND button. Misja jest taka, zeby przerobic SEND button na LIKEa. Jakies sugestie i podpowiedzi? Bardzo prosze.
Aha no i jeszcze mamy tutaj coś takiego jak function(data) - wskazujacy na odpowiednia .CLASS i mamy tam append(data) - to chyba chodzi o to, żeby w czacie pojawialo sie od razu to co zostalo dopisane do bazy. Nie wiem. Tym można by było zmienić numerek o 1 za kazdym razem jak USER kliknie LIKE.
HELP!
No to zaczynamy...
<!DOCTYPE html>
<html>
<script type="text/javascript">
var likes = 1;
function like() {
document.getElementById("show").innerHTML = likes;
likes=likes+1;
// OTO NASZ PLIK WYJSCIOWY TUTAJ BEDZIEMY MONTOWAC CALA RESZTE...
</script>
<button id="button" onclick="like()">Like <a type="text" id="show" style="color:black;"></a></button>
</html>
Masz jakiś server postawiony? Mówiłeś coś o php?
Staram sie polaczyc to co juz dziala... z JQuery,,, ale to dopiero szkice. Pierwsze pytanie czy do BUTTONa można przypisać ACTION # ?
<!DOCTYPE html>
<html>
<title>Chat</title>
<meta charset="utf-8">
<script type="text/javascript">
var likes = 1;
function like() {
document.getElementById("show").innerHTML = likes;
likes=likes+1;
// OTO NASZ PLIK WYJSCIOWY TUTAJ BEDZIEMY MONTOWAC CALA RESZTE...
}
</script>
<body>
<!-- Pamiętaj, że jquery musi ładować się zawsze przed css! -->
<script src="jquery.js"></script>
<script>
$( document ).ready(function() {
alert( "Wygląda na to, że jQuery się ładnie uruchamia! Pozdrawiam!" );
});
$( function() {
$( "#dialog" ).dialog();
} );
$(function(){
$(document).on("submit","#chatForm",function(){
var text = $.trim($("#text").val());
var name = $.trim($("#name").val());
if(text !== "" && name !== "") {
$.post("ChatPoster.php",{text: text, name: name}, function(data){
$(".chatMessages").append(data);
});
}else{
alert("Data missing");
}
});
function getMessages(){
$.get( "GetMessages.php", function( data ) {
$( ".chatMessages" ).html( data );
});
}
setInterval(function(){
getMessages()
}, 500);
});
</script>
<button action="#" onSubmit="return false;" id="chatForm" onclick="like()" value='<?php echo $jakiesPHPDaneInValue; ?>'/>Like <a type="text" id="show" style="color:black;"></a></button>
</body>
</html>
Jak to póki co wygląda możecie zobaczyć tutaj:
http://prada.fun/test.php
@James Prada: No i oczywiście skupiamy się na tym fragmencie...
$(function(){
$(document).on("submit","#chatForm",function(){
var text = $.trim($("#text").val());
var name = $.trim($("#name").val());
if(text !== "" && name !== "") {
$.post("ChatPoster.php",{text: text, name: name}, function(data){
$(".chatMessages").append(data);
});
}else{
alert("Data missing");
}
});
Wiadomo... jak to przerobić, żeby naliczające się lajki zoastały dopisane do BAZY...
Coś takiego byłoby ok:
Render
Likes: <span id="like-welcome"><?= file_get_contents("like-welcome.txt") ?></span>
<button type="button" onclick="like('welcome')">
Like
</button>
JS:
function like(group) {
$.post("like.php", {group:group}, function onSuccess(data) {
$("#likes- " + group).text(data.likes);
});
}
I ten plik like.php
<?php
$group = // tutaj odczytaj sobie parametr grop
$currentLikes = file_get_contents("like-$group.txt");
$newLikes = $currentLikes + 1;
file_put_contents("like-$group.txt", $newLikes);
echo json_encode(['likes' => $newLikes]);
James Prada napisał(a):
Wiadomo... jak to przerobić, żeby naliczające się lajki zoastały dopisane do BAZY...
No to żeby to zrobić dobrze, żeby zapisywało się do bazy to musialbyś odseparować warstwę PHP'a która czyta dane z bazy, od tej która renderuje widok. Musiałbyś trochę przerobić tą apke.
@TomRiddle: Momento. Nie do końca to kminie. Z tego co widzę to dla każdy lajk będzie przechowywany w osobnym pliku txt. Czy tak?
<?= to chyba po prostu <?php albo <?, tak? No i co to jest to? json_encode Po prostu szybki odczyt i zapis do tablicy? Hmm... No dobra... Nic z tego i tak nie rozumiem. Poza tym zależy mi na tym, żeby te lajki bujały mi się w bazie danych. Mam posty i komenty do postów i jakoś to muszę zidentyfikować. Rozumiem, że tutaj zrobiłeś coś w stylu group:group. To znaczy powiedzmy post:komenty - Hmm... I co to jest ten wewnętrzny ewent onSuccess? Hmm... Czy mogę prosić o dodatkowe wyjaśnienia zanim to wszystko zacznę lutować. Dziekuję serdecznie! :-)Tak myślałem. Nic nie działa i wszystko jest z...
James Prada napisał(a):
@TomRiddle: Momento. Nie do końca to kminie. Z tego co widzę to dla każdy lajk będzie przechowywany w osobnym pliku txt. Czy tak?
Tak, ale możesz przerobić na osobny np record w bazie.
<?= to chyba po prostu <?php albo <?, tak?
<?=
to to samo co <?php echo
/ <? echo
.
No i co to jest to? json_encode Po prostu szybki odczyt i zapis do tablicy?
To jest po to żebyś mógł odczytać obiekt w JavaScript. Tutaj masz info: https://www.w3schools.com/js/js_objects.asp Możesz to zignorować, jeśli chcesz wysłać jedną wartość, ale gdybyś chciał wysłać więcej to niezbędne.
Hmm... No dobra... Nic z tego i tak nie rozumiem. Poza tym zależy mi na tym, żeby te lajki bujały mi się w bazie danych. Mam posty i komenty do postów i jakoś to muszę zidentyfikować. Rozumiem, że tutaj zrobiłeś coś w stylu group:group. To znaczy powiedzmy post:komenty - Hmm...
{group: group}
to jest właśnie obiekt JavaScript, możesz o nich przeczytać tutaj: https://www.w3schools.com/js/js_objects.asp
I co to jest ten wewnętrzny ewent onSuccess? Hmm...
onSuccess
, tak po prostu nazwałem sobie funkcje którą przekazałem do $.post()
, mogłeś go nazwać inaczej albo wgl (tak jak u Ciebie).
@TomRiddle: $group = // tutaj odczytaj sobie parametr grop To jeszcze proszę powiedz mi jak mam sobie odczytać parametr group? Próbowałem $_POST['group']; i nic
Zrób sobie
var_dump($_POST);
var_dump($_GET);
i zobacz jakie wartości tam są, kiedy robisz @.post()
.
@TomRiddle: echo $_GET['likes']; ? Jak odświeżam to się samo nabija o jedno. Tak?
Dobra mam coś takiego i nie wiem w ogóle co to jest!
<!DOCTYPE html>
<html>
<title>Chat</title>
<meta charset="utf-8">
<script type="text/javascript">
var likes = 1;
function like() {
document.getElementById("show").innerHTML = likes;
likes=likes+1;
function like(group) {
$.post("like.php", {group:group}, function onSuccess(data) {
$("#likes- " + group).text(data.likes);
});
}
}
</script>
<body>
Likes: <span id="like-welcome"><?php file_get_contents("like-welcome.txt") ?></span>
<button type="button" onclick="like('welcome')">
Like
</button>
<!-- Pamiętaj, że jquery musi ładować się zawsze przed css! -->
<script src="jquery.js"></script>
<script>
$( document ).ready(function() {
alert( "Wygląda na to, że jQuery się ładnie uruchamia! Pozdrawiam!" );
});
$( function() {
$( "#dialog" ).dialog();
} );
$(function(){
$(document).on("submit","#chatForm",function(){
var text = $.trim($("#text").val());
var name = $.trim($("#name").val());
if(text !== "" && name !== "") {
$.post("ChatPoster.php",{text: text, name: name}, function(data){
$(".chatMessages").append(data);
});
}else{
alert("Data missing");
}
});
function getMessages(){
$.get( "GetMessages.php", function( data ) {
$( ".chatMessages" ).html( data );
});
}
setInterval(function(){
getMessages()
}, 500);
});
</script>
<button action="#" onSubmit="return false;" id="chatForm" onclick="like()" value='<?php echo $jakiesPHPDaneInValue; ?>'/>Like <a type="text" id="show" style="color:black;"></a></button>
</body>
</html>
I zrobił mi się jakiś plik like-.txt i nie wiem co to jest. Niby tam zapamiętuje jak odświeżam like.php. Dobra... nic z tego nie wiem. Pytanie jest jeszcze jedno. W jaki sposób mam załadować ilość lajków na początku?
Mam nadzieje, że na tym forum nie ma małych dziewczynek:
<?php
$group = // tutaj odczytaj sobie parametr grop
$currentLikes = file_get_contents("like-$group.txt");
$newLikes = $currentLikes + 1;
file_put_contents("like-$group.txt", $newLikes);
echo json_encode(['likes' => $newLikes]);
Do kur*** jebanej nędzy. [CIACH!] $group - co to prostytutka mać jebanego jest?
Dlaczego się do to kur*** jebanej nie przekazuje? Co mam prostytutka plik tekstowy
nazywać like-234234234.txt i prostytutka tyle ile laków będzie tak się będzie nazywał
tej kochany inaczej plik tekstowy. [CIACH!] prostytutka takie pisanie programów. Pies jebał
ten system laków.
Kto za niech kliknie lajka, kto przeciw niech wypierdala.
Wniosek formalny o perełkę!
@p_agon: Poproszę o gotowca. Like button z możliwością nieskończonego nabijania. Wnioskować możecie o podywżkę.
@James Prada: Wniosek formalny pedały [CIACH!] - o usunięcie mnie z tego pedalskiego grona. Dziękuję do niezobaczenia prostytutka nigdy. Won! Zapraszam na Prada.fun za jakiś czas będziecie mogli tam kliknąć lajk. Fuck You!