Opóżnione wysłanie formularza

Opóżnione wysłanie formularza
Gouda105
  • Rejestracja:ponad 7 lat
  • Ostatnio:5 dni
  • Postów:487
0

Witam,
Mam taki kod: (PHP)

Kopiuj
<form action="logout.php" method="post">
      <input type="hidden" name="monety" id="monetyPodsumowanie" value=""/>
      <input type="hidden" name="farmy" id="farmyPodsumowanie" value=""/>
      <input type="hidden" name="pola" id="polaPodsumowanie" value=""/>
      <input type="hidden" name="chatki" id="chatkiPodsumowanie" value=""/>
      <input type="hidden" name="pracownicy" id="pracownicyPodsumowanie" value=""/>
      <input type="hidden" name="kamien" id="kamienPodsumowanie" value=""/>
      <input type="hidden" name="drewno" id="drewnoPodsumowanie" value=""/>
      <input type="hidden" name="chleb" id="chlebPodsumowanie" value=""/>
      <input type="hidden" name="mieso" id="miesoPodsumowanie" value=""/>
      <input type="submit" name="wyloguj" onClick="przeslijdane()" value="Wyloguj"/>
    </form>

JS:

Kopiuj
function przeslijdane()
{
    document.getElementById("monetyPodsumowanie").value = monety;
    document.getElementById("farmyPodsumowanie").value = farmy;
    document.getElementById("polaPodsumowanie").value = pola;
    document.getElementById("chatkiyPodsumowanie").value = chatki;
    document.getElementById("kamienPodsumowanie").value = kamien;
    document.getElementById("pracownicyPodsumowanie").value = pracownicy;
    document.getElementById("drewnoPodsumowanie").value = drewno;
    document.getElementById("chlebPodsumowanie").value = chleb;
    document.getElementById("miesoPodsumowanie").value = mieso;
}

I jak mogę opóźnić wysłanie formularza, tak aby js mógł powsadzać te wartości (bo w pliku logout.php wyświetla tylko 4 pierwsze)? Wiem, że kod może jest źle napisany, ale zajmijmy się tym co w temacie :)

edytowany 1x, ostatnio: Gouda105
Delor
  • Rejestracja:ponad 6 lat
  • Ostatnio:około 2 lata
1

Hmm... takie coś może?

Kopiuj
<form action="logout.php" method="post" onsubmit="return przeslijdane()">

W przeslijdane() daj na końcu return true;.

edytowany 1x, ostatnio: Delor
Gouda105
  • Rejestracja:ponad 7 lat
  • Ostatnio:5 dni
  • Postów:487
0
Delor napisał(a):

Hmm... takie coś może?

Kopiuj
<form action="logout.php" method="post" onsubmit="return update_form()">

W update_form() zwróć true.

Takie: > onsubmit="return update_form(true)"

Czy w js zrobić funkcję update_form i tam dać true?

Delor
Poprawię przykład dla Twojego przypadku.
MasterOf
  • Rejestracja:około 7 lat
  • Ostatnio:8 miesięcy
  • Postów:466
2

A czemu tego nie wyślesz ajaxem?

Kopiuj
<form action="logout.php" method="post" id="form">
      <input type="submit" name="wyloguj" onClick="przeslijdane()" value="Wyloguj"/>
    </form>
Kopiuj
$("#form").submit(function(e) {

    e.preventDefault(); // Zapobieganie standardowego wysyłania

    var form = $(this);
    var url = form.attr('action');

    $.ajax({
           type: "POST",
           url: url,
           data: {
               monety: monety
                itp. itd
           },
           success: function(data)
           {
               alert(data); // jakbyś zwracał jakieś dane
           }
         });


});

edytowany 2x, ostatnio: MasterOf
Zobacz pozostałe 10 komentarzy
Patryk27
@Gouda105: no ale boisz się nauczyć czegoś nowego czy co, bo nie rozumiem? ;-p
Gouda105
Dobra, ale gdzie mam dać te return update_form()?
MasterOf
Nigdzie, weź wywal w ogóle tą funkcję, jest strasznie pokraczna :D. Tak się tego nie robi po prostu. Może @Patryk27 miał rację i najlepiej będzie dla ciebie to zrobić na fetch api. Napisać ci kolejny post z kodem i opisem?
Gouda105
Jeśli Ci się chce to chętnie zobaczę.
Silv
@Patryk27: dzięki za problem X/Y, nie znałem takiej nazwy na to zagadnienie. :)
MasterOf
  • Rejestracja:około 7 lat
  • Ostatnio:8 miesięcy
  • Postów:466
1

A więc z fetch api będzie to wyglądało tak. Chyba najprościej.

Kopiuj
 <button onclick="logout()">Wyloguj</button> 

Definiujesz sobie przycisk do wylogowania i robisz funkcję

Kopiuj
function logout(){
// jeśli chcesz użyc $_POST w pliku php to musisz stworzyć FormData()
var formData = new FormData();
formData.append('monety', monety);
formData.append('farmy', farmy);
//itp, dodajesz sobie ile chcesz

fetch("logout.php", {
  method: "POST",
  body: formData, 
})
.then(response => response.json())
}
edytowany 4x, ostatnio: MasterOf
Gouda105
  • Rejestracja:ponad 7 lat
  • Ostatnio:5 dni
  • Postów:487
0

Mam takie o:

Kopiuj
$("#form").submit(function(e) {

    e.preventDefault(); // Zapobieganie standardowego wysyłania

    var form = $(this);
    var url = form.attr('action');

    $.ajax({
           type: "POST",
           url: logout.php,
           data: {
               monety: monety
           },
           success: function(data)
           {
               alert(data); // jakbyś zwracał jakieś dane
           }
         });

});

I w konsoli pokazuje - > SyntaxError: missing } after property list[Więcej informacji] (109)
note: { opened at line 108, column 17

108 linijka to ta z data {...

edytowany 3x, ostatnio: Gouda105
MasterOf
url: "logout.php"
Gouda105
  • Rejestracja:ponad 7 lat
  • Ostatnio:5 dni
  • Postów:487
0

Teraz

ReferenceError: $ is not defined

serek
  • Rejestracja:około 11 lat
  • Ostatnio:około godziny
  • Postów:1472
1

Nie masz jQuery załadowanego.

Gouda105
  • Rejestracja:ponad 7 lat
  • Ostatnio:5 dni
  • Postów:487
0

Dodałem linijkę od jQuey i nic nie pokazuje.
JS:

Kopiuj
$("#form").submit(function(e) {

    e.preventDefault(); // Zapobieganie standardowego wysyłania

    var form = $(this);
    var url = form.attr('action');

    $.ajax({
           type: "POST",
           url: "logout.php",
           data: {
               monety: monety
           },
           success: function(data)
           {
               alert(data); // jakbyś zwracał jakieś dane
           }
         });

});

PHP:

Kopiuj
echo "Monety:".$_POST['monety'];
MasterOf
No to teraz to mogą być różne przyczyny. Pokaż cały swój kod
Gouda105
  • Rejestracja:ponad 7 lat
  • Ostatnio:5 dni
  • Postów:487
0

Trochę go jest, ale ok. game.php:

Kopiuj
<?php
  session_start();

  if($_SESSION['log'] == false)
  {
    header("location: zaloguj.php");
  }
?>

<!DOCTYPE HTML>
<html lang= "pl">
<head>
  <meta charset = "utf-8" />
  <title>Gra</title>
  <meta name="description" content= "test2" />
  <meta name= "keywords"content="Cytaty.pl" />
  <link href="https://fonts.googleapis.com/css?family=Open+Sans" rel="stylesheet">
  <script src="https://code.jquery.com/jquery-3.4.0.js" integrity="sha256-DYZMCC8HTC+QDr5QNaIcfR7VSPtcISykd+6eSmBW5qo="crossorigin="anonymous"></script>
  <link href="https://fonts.googleapis.com/css?family=Marck+Script" rel="stylesheet">
  <meta http-equiv="X-UA-Compatible" content= "IE=edge,chrome=1" />
  <script type="text/javascript" src="sklep.js"></script>
  <link rel="stylesheet" href="style.css" type="text/css"/>
  <link rel="shortcut icon" href="img/miniaturka.png">
</head>
<body>
  <?php include("pobierzmaterialy.php"); ?>

  <!-- .................................................................. -->

  <!-- Przesyłanie danych do JS -->
  <script>var mieso = <?= $row['mieso'];?></script>
  <script>var chleb = <?= $row['chleb'];?></script>
  <script>var kamien = <?= $row['kamien'];?></script>
  <script>var drewno = <?= $row['drewno'];?></script>
  <script>var monety = <?= $row['monety'];?></script>
  <script>var poziom = <?= $row['poziom'];?></script>
  <script>var chatki = <?= $row['chatki'];?></script>
  <script>var pola = <?= $row['pola'];?></script>
  <script>var farmy = <?= $row['farmy'];?></script>
  <script>var pracownicy = <?= $row['pracownicy'];?></script>
  

  <!-- Informacje o użytkowniku-->
  <div id="profil">
    <form action="logout.php" method="post" id="form">
      <input type="hidden" name="monety" id="monetyPodsumowanie" value=""/>
      <input type="hidden" name="farmy" id="farmyPodsumowanie" value=""/>
      <input type="hidden" name="pola" id="polaPodsumowanie" value=""/>
      <input type="hidden" name="chatki" id="chatkiPodsumowanie" value=""/>
      <input type="hidden" name="pracownicy" id="pracownicyPodsumowanie" value=""/>
      <input type="hidden" name="kamien" id="kamienPodsumowanie" value=""/>
      <input type="hidden" name="drewno" id="drewnoPodsumowanie" value=""/>
      <input type="hidden" name="chleb" id="chlebPodsumowanie" value=""/>
      <input type="hidden" name="mieso" id="miesoPodsumowanie" value=""/>
      <input type="submit" name="wyloguj" value="Wyloguj"/>
    </form>
  </div>


  <!-- Materiały gracza -->
  <div id="panel">
    <div id="mieso">Mięso: <?php echo $row['mieso'] ?></div>
    <div id="chleb">Chleb: <?php echo $row['chleb'] ?></div>
    <div id="kamien">Kamień: <?php echo $row['kamien'] ?></div>
    <div id="drewno">Drewno: <?php echo $row['drewno'] ?></div>
    <div id="monety">Monety:</div><div id="monetyilosc"><?php echo $row['monety']?></div>
  </div>


  <!--Sklep dla gracza-->
  <div id="sklep">
    <div class="produkt">
      <div class="zdjecie"><img src="img/domek.png"/></div>
      <div class="opis">Chatka</div>
      <input type="submit" name="kup" onClick="kupchatke()" value="KUP"/>
    </div>
    <div class="produkt">
      <div class="zdjecie"><img src="img/farma.png"/></div>
      <div class="opis">Farma</div>
      <input type="submit" name="kup" onClick="kupfarme()" value="KUP"/>
    </div>
    <div class="produkt">
      <div class="zdjecie"><img src="img/pole.png"/></div>
      <div class="opis">Pole</div>
      <input type="submit" name="kup" onClick="kuppole()" value="KUP"/>
    </div>
    <div class="produkt">
      <div class="zdjecie"><img src="img/pracownik.png"/></div>
      <div class="opis">Pracownik</div>
      <input type="submit" name="kup" onClick="kuppracownika()" value="KUP"/>
    </div>
  </div>


  <!--Mapa wioski-->
  <div id="wioska">
  </div>


  <!--Informacje o wyposażeniu wioski-->
  <div id="danewioski">
    <div id="pracownicy"><img src="img/pracownik.png"/><div id="pracownicyilosc"><?php echo $row['pracownicy']?></div></div>
    <div id="farmy"><img src="img/farma.png"/><div id="farmyilosc"><?php echo $row['farmy']?></div></div>
    <div id="pola"><img src="img/pole.png"/><div id="polailosc"><?php echo $row['pola']?></div></div>
    <div id="chatki"><img src="img/domek.png"/><div id="chatkiilosc"><?php echo $row['chatki']?></div></div>
  </div>

</body>
</html>

Sklep.js

Kopiuj
$("#form").submit(function(e) {

    e.preventDefault(); // Zapobieganie standardowego wysyłania

    var form = $(this);
    var url = form.attr('action');

    $.ajax({
           type: "POST",
           url: "logout.php",
           data: {
               monety: monety
           },
           success: function(data)
           {
               alert(data); // jakbyś zwracał jakieś dane
           }
         });

});

Logout.php:

Kopiuj
<?php
	session_start();
	echo "Monety:".$_POST['monety'];
	echo "Mięso:".$_POST['mieso'];
	echo "Chleb:".$_POST['chleb'];
	echo "Kamień:".$_POST['kamien'];
	echo "Drewno:".$_POST['drewno'];
	echo "Pracownicy:".$_POST['pracownicy'];
	echo "Farmy:".$_POST['farmy'];
	echo "Chatki:".$_POST['chatki'];
	echo "Pola:".$_POST['pola'];
	/*session_destroy();
	header("Location: zaloguj.php");*/
?>

Pobierzmaterialy.php:

Kopiuj
<?php
    $login = $_SESSION['login'];
    $connect = mysqli_connect('localhost', 'root', '', 'gra');

if(isset($login))
{
    $dane = "SELECT * FROM gra WHERE login = '".htmlspecialchars($login, ENT_QUOTES)."'";
    $wynikdane = mysqli_query($connect, $dane);
    $row = mysqli_fetch_assoc($wynikdane);
}
    
?>

Wiem, że może nie jest najlepiej napisany, ale nie jestem profesjonalistą.

edytowany 2x, ostatnio: Gouda105
MasterOf
Masz to na jakimś serwerze?
Patryk27
A gdzie jest ta "linijka od jQuery"?
MasterOf
A plik logout.php gdzie masz?
Patryk27
+ mimo wszystko pokaż cały kod.
MasterOf
  • Rejestracja:około 7 lat
  • Ostatnio:8 miesięcy
  • Postów:466
0
Gouda105 napisał(a):

Logout.php:

A więc powinno być Logout.php a nie logout.php

I zrób to tak:

Gouda105 napisał(a):

Sklep.js

Kopiuj
$("#form").submit(function(e) {

    e.preventDefault(); // Zapobieganie standardowego wysyłania

    var form = $(this);
    var url = form.attr('action');

    $.ajax({
           type: "POST",
           url: url,
           data: {
               monety: monety
           },
           success: function(data)
           {
               alert(data); // jakbyś zwracał jakieś dane
           }
         });

});

A zmień adres w formularzu :)

edytowany 1x, ostatnio: MasterOf
Gouda105
Źle napisałem, z małej.
Gouda105
  • Rejestracja:ponad 7 lat
  • Ostatnio:5 dni
  • Postów:487
0

Znalazł już ktoś coś?

serek
  • Rejestracja:około 11 lat
  • Ostatnio:około godziny
  • Postów:1472
1
Gouda105 napisał(a):

Znalazł już ktoś coś?

Próbuj sam, a nie czekaj na gotowca.

Gouda105
  • Rejestracja:ponad 7 lat
  • Ostatnio:5 dni
  • Postów:487
0

Po to tu jestem - skoro sam nic nie znajduję to was pytam.

serek
  • Rejestracja:około 11 lat
  • Ostatnio:około godziny
  • Postów:1472
1
Gouda105 napisał(a):

Po to tu jestem - skoro sam nic nie znajduję to was pytam.

Jasne pytaj, po to jest to forum. Ale nic nie szkodzi, żebyś w międzyczasie sam jeszcze coś kombinował. Po prostu Twój post można zinterpretować tak, że czekasz aż ktoś poda Ci gotowe rozwiązanie :)

edytowany 1x, ostatnio: serek
Gouda105
No ciągle szukam innych rozwiązań.
Gouda105
  • Rejestracja:ponad 7 lat
  • Ostatnio:5 dni
  • Postów:487
0

Dziękuję wszystkim za pomoc. Udało się problem rozwiązać. Winowajcą była literówka w funkcji.

MasterOf
Gdzie ta literówka ?
Gouda105
  • Rejestracja:ponad 7 lat
  • Ostatnio:5 dni
  • Postów:487
0

W tym moim pierwszym:

Kopiuj
document.getElementById("chatkiyPodsumowanie").value = chatki;

chatkiy

MasterOf
... Dobra, szkoda komentowac
Z2
  • Rejestracja:około 6 lat
  • Ostatnio:prawie 6 lat
  • Postów:28
0
Kopiuj
$("#form").submit(function(e) {

    e.preventDefault(); // Zapobieganie standardowego wysyłania

    var form = $(this);
    var url = form.attr('action');

    $.ajax({
           type: "POST",
           url: url,
           data: {
               nazwa_pola_1: nazwa_pola_1,
nazwa_pola_2: nazwa_pola_2,
           },
           success: function(data)
           {
               alert(data); // jakbyś zwracał jakieś dane
           }
         });

});

Jak przekazac przez ten przyklad dwie nazwy z pola formularza (select) ? Potrzebuje tego do sortowania w poliku index.php. W ten sposob nie dziala

edytowany 1x, ostatnio: zdun2
MasterOf
  • Rejestracja:około 7 lat
  • Ostatnio:8 miesięcy
  • Postów:466
0

data:{ nazwa_jeden: "test", nazwa_dwa: "test, nazwa_trzy: "test" }

Twój przykład też jest dobry ale definiujesz gdzieś te wartości które chcesz przesłać?
Czyli nazwa_pola_2 i nazwa_pola_1

edytowany 3x, ostatnio: MasterOf
Z2
  • Rejestracja:około 6 lat
  • Ostatnio:prawie 6 lat
  • Postów:28
0

To moze inaczej
.Probuje zrobic przyklad ktory wysle dwie zmienne do pliku i posortje dane wzgledem wyboru. Plik ma nazwe 'tabela.php'/ Sam formularz jest rowniez w tym pliku.
To zwykly formularz z dwoma polami select. W tagu <form mam tylko padac id? bez action ??? i url pliku ???

Kopiuj
        $(document).ready(function() {

                $('#submit').click(function() {
					
			

                    $.ajax({

                        type: "GET",

                        url: "tabela.php",

                        cache: 'false',

                       data: $("#form").serialize(),

                        beforeSend: function() {

                            $('.ajax').html('<img class="loader" />').show();

                        },

                        dataType: "html",

                        success: function(result) {

                            $("#error_message").html(result);

                            	$(".ajax").fadeOut("slow");

				  

                        },
                        error: function(xhr, ajaxOptions, thrownError) {

      alert('Something went wrong. Please try again.');


                            	$(".ajax").fadeOut("slow");

                        }
                    });


                    return false;

                });

            });

Na dole strony mam diva

Niby loader sie kreci ale nic sie nie wykonuje.

Kopiuj
<input type="submit"  class="btn btn-primary active" id=submit  value="Finish">
Kopiuj
<form method="post" ACTION="" id=form>";

Jest mozliwosc aby to zwrocilo wynik bez odswiezania ?

edytowany 4x, ostatnio: zdun2
MasterOf
  • Rejestracja:około 7 lat
  • Ostatnio:8 miesięcy
  • Postów:466
0

<form method="post" ACTION="" id="form"> powinno być

No a skoro nie używasz method i action to bez sensu to dawać.
<form id="form"> będzie coś takiego

Kod js też pasowałoby poprawić. Powinno być

Kopiuj
$("#form").submit(function(e) {
    e.preventDefault();
...

zamiast

Kopiuj
$('#submit').click(function() {
...
edytowany 5x, ostatnio: MasterOf
Z2
  • Rejestracja:około 6 lat
  • Ostatnio:prawie 6 lat
  • Postów:28
0

Dałem

Kopiuj
<form method="post" id="form">

ale nic sie nie przekazuje. Wpisałem na samym poczatku pliku

Kopiuj
echo  $_POST['zmiena'];

Zeby wyłapac wartosc ale nic nie ma:
Notice: Undefined index: SortType in C:\xampp\htdocs\edycja_usuwanie_ajax\tabela.php on line 43

edytowany 1x, ostatnio: zdun2
MasterOf
  • Rejestracja:około 7 lat
  • Ostatnio:8 miesięcy
  • Postów:466
0

No to pokaż plik tabela.php
Fajnie byłoby jakbyś pokazał też formularz.
A byłoby super jakbyś pokazał wszystko :)

Z2
  • Rejestracja:około 6 lat
  • Ostatnio:prawie 6 lat
  • Postów:28
0

tabela.php

Kopiuj

<?php
include('required/header.php');
include('core/functions.php');
?>

<div id="wrapper">

<?php


$host="localhost";
$username="root@localhost";
$password="pwd";
$databasename="odswiezenie";
$conn=mysqli_connect($host,$username,$password);
$db=mysqli_select_db($conn, $databasename);

$ReturnSortValues = @$_GET['SortName'];
$ReturnSortType = @$_GET['SortType'];

$ReturnSortType = htmlspecialchars(addslashes($ReturnSortType));
$ReturnSortValues = htmlspecialchars(addslashes($ReturnSortValues));


(empty($ReturnSortValues)) ? $ReturnSortValues = 'bookingdate' : $ReturnSortValues = $ReturnSortValues;
(empty($ReturnSortType)) ? $ReturnSortType = 'ASC' : $ReturnSortType = $ReturnSortType;


$sql = "SELECT id, destination, ticketnumber, name, surename, phone, origin, tripday, bookingdate, bookedby FROM wycieczki ORDER BY " . $ReturnSortValues . " " . $ReturnSortType;
$result = mysqli_query($conn,$sql);


?>
<div class="container-fluid">

<?php

print $_POST['SortType'];

?>
  <div class="jumbotron">
    <h1>Orders control panel.</h1>
    <p>Edit and delete database records details live option. That option include an extra form fields where you can additional new database row with new tickets details. Option located end of page.</p>
  </div>

  
<?php
print ShowSortingForm( $argObj = true, $TabSortValues = array('destination', 'ticketnumber', 'name', 'surename', 'phone', 'origin', 'tripday', 'bookingdate', 'bookedby'), $TabSortType = array('ASC', 'DESC') );
?>

<table align="center" cellpadding="5" border="1" id="user_table" class="table table-hover" width=100%>
<tr>
<th>No.:</th>
<th>Destination</th>
<th>Ticket number</th>
<th>Name</th>
<th>Surename</th>
<th>Phone</th>
<th>Origin</th>
<th>Trip day</th>
<th>Booking date</th>
<th>Booked by</th>
<th>Action</th>
</tr>
<?php
$count = 1;
while ($row=mysqli_fetch_array($result)) 
{
 ?>
 <tr id="row<?php echo $row['id'];?>">
 <td width=10 class="table_orders"><?php echo $count;?></td>
  <td  class="table_orders" id="destination_val<?php echo $row['id'];?>"><?php echo $row['destination'];?></td>
  <td  class="table_orders" id="ticketnumber_val<?php echo $row['id'];?>"><?php echo $row['ticketnumber'];?></td>
  <td  class="table_orders" id="name_val<?php echo $row['id'];?>"><?php echo $row['name'];?></td>
  <td  class="table_orders" id="surename_val<?php echo $row['id'];?>"><?php echo $row['surename'];?></td>
  <td  class="table_orders" id="phone_val<?php echo $row['id'];?>"><?php echo $row['phone'];?></td>
  <td  class="table_orders" id="origin_val<?php echo $row['id'];?>"><?php echo $row['origin'];?></td>
  <td  class="table_orders" id="tripday_val<?php echo $row['id'];?>"><?php echo $row['tripday'];?></td>
  <td  class="table_orders" id="bookingdate_val<?php echo $row['id'];?>"><?php echo $row['bookingdate'];?></td>
  <td  class="table_orders" id="bookedby_val<?php echo $row['id'];?>"><?php echo $row['bookedby'];?></td>
  <td style="text-align:center">
   <input type='button' class="btn btn-primary" id="edit_button<?php echo $row['id'];?>" value="edit" onclick="edit_row('<?php echo $row['id'];?>');">
   <input type='button' class="btn btn-success" id="save_button<?php echo $row['id'];?>" value="save" onclick="save_row('<?php echo $row['id'];?>');">
   <input type='button' class="btn btn-danger" id="delete_button<?php echo $row['id'];?>" value="delete" onclick="if(confirm('Are you sure?')) delete_row('<?php echo $row['id'];?>');" >
  </td>
 </tr>
 <?php
 $count++;
}
?>

<tr id="new_row">
<td></td>
 <td><input type="text" class="form-control" id="new_destination" value="Type destination value"></td>
 <td><input type="text" class="form-control" id="new_ticketnumber"  value="Type ticket number value"></td>
 <td><input type="text"  class="form-control" id="new_name" value="Type name value"></td>
 
 <td><input type="text"  class="form-control"  id="new_surename" value="Type surename value"></td>
 <td><input type="text"  class="form-control"  id="new_phone" value="Type phone value"></td>
 <td><input type="text"  class="form-control"  id="new_origin" value="Type origin value"></td>
 
 <td><input type="text"  class="form-control"  id="new_tripday" value="Type trip day value"></td>
 <td><input type="text"  class="form-control"  id="new_bookingdate" value="Type booking date value"></td>
 <td><input type="text"  class="form-control"  id="new_bookedby" value="Type booked by value"></td>
 
 <td><input type="button" value="Insert new ticket details" class="btn btn-success" onclick="confirmR();"></td>
</tr>
</table>


</div>

<div class="ajax"></div>
<br><br><br><br>
</body>
</html>
<?php
mysqli_close($conn);
?>



plik: functions.php

Kopiuj
<?php

				
					function ShowSortingForm($argObj, $TabSortValues, $TabSortMethod): string
					{
						$argObj  = "<div class=\"row\"><div class=\"col-md-2 col-sm-2 col-xs-12\"><form method=\"post\" id=form>";
						$argObj .= "<select name=\"SortName\" class=\"form-control input-sm\">";
						
						foreach($TabSortValues as $key1)
						{
							$argObj .= "<option value=" . $key1 . ">" . $key1 . "</option>";
						}
						
						$argObj .= "</select></div>";
						$argObj .= "<div class=\"col-md-2 col-sm-2 col-xs-12\"><select name=\"SortType\" class=\"form-control input-sm\"  style=\"width=100px;\">";
						
						foreach($TabSortMethod as $key2)
						{
							$argObj .= "<option value=" . $key2 . ">" . $key2 . "</option>";
						}
						
						$argObj .= "</select></div>";
						$argObj .= "<div class=\"col-md-2 col-sm-2 col-xs-12\"><input type=\"submit\" id=submit  class=\"btn btn-primary\">Sort data</button></div></div></form><br><br>";
						
						return $argObj;
					}
				
				
				
?>

W pliku tabela.php jest odwolanie do tej funkcji z formularzem

Kopiuj
  
<?php
print ShowSortingForm( $argObj = true, $TabSortValues = array('destination', 'ticketnumber', 'name', 'surename', 'phone', 'origin', 'tripday', 'bookingdate', 'bookedby'), $TabSortType = array('ASC', 'DESC') );
?>

modify_records.js

Kopiuj
function edit_row(id)
{
 var destination=document.getElementById("destination_val"+id).innerHTML;
 var ticketnumber=document.getElementById("ticketnumber_val"+id).innerHTML;
 var name=document.getElementById("name_val"+id).innerHTML;
 
 var surename=document.getElementById("surename_val"+id).innerHTML;
 var phone=document.getElementById("phone_val"+id).innerHTML;
 var origin=document.getElementById("origin_val"+id).innerHTML;
 
 var tripday=document.getElementById("tripday_val"+id).innerHTML;
 var bookingdate=document.getElementById("bookingdate_val"+id).innerHTML;
 var bookedby=document.getElementById("bookedby_val"+id).innerHTML;

 document.getElementById("destination_val"+id).innerHTML="<input type='text' class='form-control' id='destination_text"+id+"' value='"+destination+"'>";
 document.getElementById("ticketnumber_val"+id).innerHTML="<input type='text' class='form-control' id='ticketnumber_text"+id+"' value='"+ticketnumber+"'>";
 document.getElementById("name_val"+id).innerHTML="<input type='text' class='form-control' id='name_text"+id+"' value='"+name+"'>";
 
 document.getElementById("surename_val"+id).innerHTML="<input type='text' class='form-control' id='surename_text"+id+"' value='"+surename+"'>";
 document.getElementById("phone_val"+id).innerHTML="<input type='text' class='form-control' id='phone_text"+id+"' value='"+phone+"'>";
 document.getElementById("origin_val"+id).innerHTML="<input type='text' class='form-control' id='origin_text"+id+"' value='"+origin+"'>";
 
 document.getElementById("tripday_val"+id).innerHTML="<input type='text' class='form-control' id='tripday_text"+id+"' value='"+tripday+"'>";
 document.getElementById("bookingdate_val"+id).innerHTML="<input type='text' class='form-control' id='bookingdate_text"+id+"' value='"+bookingdate+"'>";
 document.getElementById("bookedby_val"+id).innerHTML="<input type='text' class='form-control' id='bookedby_text"+id+"' value='"+bookedby+"'>";
	
 document.getElementById("edit_button"+id).style.display="none";
 document.getElementById("save_button"+id).style.display="inline";
}

function save_row(id)
{
 var destination=document.getElementById("destination_text"+id).value;
 var ticketnumber=document.getElementById("ticketnumber_text"+id).value;
 var name=document.getElementById("name_text"+id).value;
 
 var surename=document.getElementById("surename_text"+id).value;
 var phone=document.getElementById("phone_text"+id).value;
 var origin=document.getElementById("origin_text"+id).value;
 
 var tripday=document.getElementById("tripday_text"+id).value;
 var bookingdate=document.getElementById("bookingdate_text"+id).value;
 var bookedby=document.getElementById("bookedby_text"+id).value;
	
 $.ajax
 ({
  type:'post',

  url:'modify_records.php',
  data:{
   edit_row:'edit_row',
   row_id:id,
   destination_val:destination,
   ticketnumber_val:ticketnumber,
   name_val:name,
   surename_val:surename,
   phone_val:phone,
   origin_val:origin,
   tripday_val:tripday,
   bookingdate_val:bookingdate,
   bookedby_val:bookedby
  },
  success:function(response) {
   if(response=="success")
   {
    document.getElementById("destination_val"+id).innerHTML=destination;
    document.getElementById("ticketnumber_val"+id).innerHTML=ticketnumber;
	document.getElementById("name_val"+id).innerHTML=name;
	
	document.getElementById("surename_val"+id).innerHTML=surename;
    document.getElementById("phone_val"+id).innerHTML=phone;
	document.getElementById("origin_val"+id).innerHTML=origin;
	
	document.getElementById("tripday_val"+id).innerHTML=tripday;
    document.getElementById("bookingdate_val"+id).innerHTML=bookingdate;
	document.getElementById("bookedby_val"+id).innerHTML=bookedby;
	
    document.getElementById("edit_button"+id).style.display="inline";
    document.getElementById("save_button"+id).style.display="none";
   }
  }
 });
}

function delete_row(id)
{
 $.ajax
 ({
  type:'post',
  url:'modify_records.php',
  data:{
   delete_row:'delete_row',
   row_id:id,
  },
  success:function(response) {
   if(response=="success")
   {
    var row=document.getElementById("row"+id);
    row.parentNode.removeChild(row);
	document.location.reload();
	
   }
  }
 });

}

function insert_row()
{
 var destination=document.getElementById("new_destination").value;
 var ticketnumber=document.getElementById("new_ticketnumber").value;
 var name=document.getElementById("new_name").value;
 
 var surename=document.getElementById("new_surename").value;
 var phone=document.getElementById("new_phone").value;
 var origin=document.getElementById("new_origin").value;
 
 var tripday=document.getElementById("new_tripday").value;
 var bookingdate=document.getElementById("new_bookingdate").value;
 var bookedby=document.getElementById("new_bookedby").value;

 $.ajax
 ({
  type:'post',
  url:'modify_records.php',
  data:{
   insert_row:'insert_row',
   destination_val:destination,
   ticketnumber_val:ticketnumber,
   name_val:name,
   surename_val:surename,
   phone_val:phone,
   origin_val:origin,
   tripday_val:tripday,
   bookingdate_val:bookingdate,
   bookedby_val:bookedby
  },
 
  success:function(response) {
	
   if(response!="")
   {
    var id=response;
    var table=document.getElementById("user_table");
    var table_len=(table.rows.length)-1;
    var row = table.insertRow(table_len).outerHTML="<tr id='row"+id+"'><td id='destination_val"+id+"'>"+destination+"</td><td id='ticketnumber_val"+id+"'>"+ticketnumber+"</td><td id='name_val"+id+"'>"+name+"</td><td id='surename_val"+id+"'>"+surename+"</td><td id='phone_val"+id+"'>"+phone+"</td><td id='origin_val"+id+"'>"+origin+"</td><td id='tripday_val"+id+"'>"+tripday+"</td><td id='bookingdate_val"+id+"'>"+bookingdate+"</td><td id='bookedby_val"+id+"'>"+bookedby+"</td><td><input type='button' class='edit_button' id='edit_button"+id+"' value='edit' onclick='edit_row("+id+");'/><input type='button' class='save_button' id='save_button"+id+"' value='save' onclick='save_row("+id+");'/><input type='button' class='delete_button' id='delete_button"+id+"' value='delete' onclick='delete_row("+id+");'/></td></tr>";

    document.getElementById("new_destination").value="";
    document.getElementById("new_ticketnumber").value="";
	document.getElementById("new_name").value="";
	
	document.getElementById("new_surename").value="";
    document.getElementById("new_phone").value="";
	document.getElementById("new_origin").value="";
	
	document.getElementById("new_tripday").value="";
    document.getElementById("new_bookingdate").value="";
	document.getElementById("new_bookedby").value="";
  }
  }
 });
}

function confirmR()
{
   if(confirm('Would you like additional table row ? \n If you can\'t see changes or can\'t edit or delete just generated record after clicking OK, please refresh the page.'))
   {
      insert_row();
	  setTimeout(function(){
      window.location.reload(); 
     }, 10);
	  
   }
}

Ten plik .js dolanczam w pliku header.php

Kopiuj
<script type="text/javascript" src="modify_records.js"></script>

jak rowniez url do biblioteki jquery.
Plik "modify_records.php" okreslony w tym pliku .js sluzy do edycji, dodania i usuniecia rekordu z bazy danych. Ogolnie chodzi mi o to sortowanie.
Nie wiem jak przekazac tw dwie zmienne z formularza

edytowany 5x, ostatnio: zdun2
MasterOf
  • Rejestracja:około 7 lat
  • Ostatnio:8 miesięcy
  • Postów:466
0
[zdun2 napisał(a)]

Plik "modify_records.php" okreslony w tym pliku .js sluzy do edycji, dodania i usuniecia rekordu z bazy danych. Ogolnie chodzi mi o to sortowanie.
Nie wiem jak przekazac tw dwie zmienne z formularza

Te co są w select?
Jeśli tak to możesz to łatwo zrobić za pomocą jQuery.
$("select[name=SortName] option:checked").val()

edytowany 2x, ostatnio: MasterOf
ZD
  • Rejestracja:około 6 lat
  • Ostatnio:prawie 6 lat
  • Postów:20
0
MasterOf napisał(a):
[zdun2 napisał(a)]

Plik "modify_records.php" okreslony w tym pliku .js sluzy do edycji, dodania i usuniecia rekordu z bazy danych. Ogolnie chodzi mi o to sortowanie.
Nie wiem jak przekazac tw dwie zmienne z formularza

Te co są w select?
Jeśli tak to możesz to łatwo zrobić za pomocą jQuery.
$("select[name=SortName] option:checked").val()

Dobrodzieju. Mógłbyś mi ten mój przykład uzupełnić tak aby zadziałał ? Chodzi mi o to żeby podczas oczekiwania na posortowanie wyświetlił się loader. Wiem ze to ułamek sekundy czasami i mało w tym sensu ale po pierwsze taki bajer a po drugie czasem serwer moze nie odpowiadac i byłoby milo chociaz pokazac ze "cos sie robi"
W tym momencie loader sie pokazuje i znika (wiec wykonuje sie SUCCES) ale nie przekazuja sie zmienne z formularza.a co za tym idzie nic sie nie sortuje

edytowany 3x, ostatnio: zdun
MasterOf
Pewnie. Mogę pomóc, ale nie wiem o której dzisiaj będę w domu :) Ostatnie posty to pisałem z telefonu :D
ZD
Super.Dziekuję z góry i pozdrawiam. Ps. Ja raczej dzisiaj nie będe na necie i odpisze jutro dopiero wieczorem ale proszę napisac.
ZD
Jestem a Ty ?
MasterOf
  • Rejestracja:około 7 lat
  • Ostatnio:8 miesięcy
  • Postów:466
1

Po pierwsze zmień wszędzie id, nie wstawiasz ". Na przykład:
<form method=\"post\" id=form> => <form method=\"post\" id=\"form\">
Ogólnie to możesz całość pozmieniać, żeby ci było wygodniej
"<div class=\"row\"><div class=\"col-md-2 col-sm-2 col-xs-12\"><form method=\"post\" id=form>"
=>
'<div class="row"><div class="col-md-2 col-sm-2 col-xs-12"><form method="post" id="form">'

Kopiuj
$("#form").submit(function(e) {

                    e.preventDefault();

                    $.ajax({
                        type: "POST",
                        url: "tabela.php",
                        data: {
                            SortType: $("select[name=SortName] option:checked").val()
                        }
                        beforeSend: function() {
                            $('.ajax').html('<img class="loader" />').show();
                        },
                        success: function(result) {
                                $(".ajax").fadeOut("slow");
                                //result to odpowiedz z tabela.php
                                console.log(result);
                        },
                        error: function(xhr, ajaxOptions, thrownError) {
                                alert('Something went wrong. Please try again.');
                                $(".ajax").fadeOut("slow");
                        }
                    });
                });
edytowany 4x, ostatnio: MasterOf
ZD
Super. Tylko am jest jeszcze jedna zmienna - SortType
MasterOf
A, no to sobie pozmieniaj już. Chyba dasz rade
ZD
cienko z tym
Z2
  • Rejestracja:około 6 lat
  • Ostatnio:prawie 6 lat
  • Postów:28
0
MasterOf napisał(a):

Po pierwsze zmień wszędzie id, nie wstawiasz ". Na przykład:
<form method=\"post\" id=form> => <form method=\"post\" id=\"form\">
Ogólnie to możesz całość pozmieniać, żeby ci było wygodniej
"<div class=\"row\"><div class=\"col-md-2 col-sm-2 col-xs-12\"><form method=\"post\" id=form>"
=>
'<div class="row"><div class="col-md-2 col-sm-2 col-xs-12"><form method="post" id="form">'

Kopiuj
$("#form").submit(function(e) {

                    e.preventDefault();

                    $.ajax({
                        type: "POST",
                        url: "tabela.php",
                        data: {
                            SortType: $("select[name=SortName] option:checked").val()
                        }
                        beforeSend: function() {
                            $('.ajax').html('<img class="loader" />').show();
                        },
                        success: function(result) {
                                $(".ajax").fadeOut("slow");
                                //result to odpowiedz z tabela.php
                                console.log(result);
                        },
                        error: function(xhr, ajaxOptions, thrownError) {
                                alert('Something went wrong. Please try again.');
                                $(".ajax").fadeOut("slow");
                        }
                    });
                });

Niestety nie działa. Tzn nie działa loader kiedy jest ta linijka:
`` data: {
SortType: $("select[name=SortType] option:checked").val()
}`
ale za to przekazują się te dwie zmienne. Natomiast kiedy ją usunę to loader działa ale znowu nie przekazują się zmienne c oza tym idzie nie mam danych potrzebnych do zapytania bazy danych.

edytowany 1x, ostatnio: zdun2
MasterOf
A no tak. Tak to jest pisać w edytorze na forum a nie w IDE :D Zapomniałem przecinka :) Daj go przed beforeSend
Z2
  • Rejestracja:około 6 lat
  • Ostatnio:prawie 6 lat
  • Postów:28
0

Nie wiem co jest nie tak ale teraz jak usune te linijke z data {} to nie działa juz loader a wczensiej był. Nic nie robilem z tym.

<form method=\"post\" id=\"form\">

i plik .js

Kopiuj
$("#form").submit(function(e) {

                    e.preventDefault();

                    $.ajax({
                        type: "POST",
                        url: "tabela.php",
                        data: {
                            SortType: $("select[name=SortType] option:checked").val()
 SortName: $("select[name=SortName] option:checked").val()
                        },
                        beforeSend: function() {
                            $('.ajax').html('<img class="loader" />').show();
                        },
                        success: function(result) {
                                $(".ajax").fadeOut("slow");
                            
                                console.log(result);
                        },
                        error: function(xhr, ajaxOptions, thrownError) {
                                alert('Something went wrong. Please try again.');
                                $(".ajax").fadeOut("slow");
                        }
                    });
                });

Co jest źle ?

edytowany 2x, ostatnio: zdun2
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)