• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wordpress - dodawanie danych z formularza do bazy danych za pomocą js i Ajax

Object Storage Arubacloud
0 głosów
97 wizyt
pytanie zadane 23 czerwca 2020 w PHP przez damianos123 Nowicjusz (180 p.)

Hej, piszę plugin do wordpressa. Chcę dane z formularza zapisywać w bazie, bez odświeżania strony. Próbuję to zrobić za pomocą jsa i ajaxa, Wszystko by było ok, gdyby w pliku z jsem do xhr.open('POST', path, true); za patha był podany normalny String, lecz ja tutaj muszę użyć funkcji. Ktoś wie jak to zrobić lub jaki jest inny sposób, aby to rozwiązać?

HTML

<div class="tab-pane active" id="tab1">
	<a href="#open-addressee" class="btn btn-primary" >DODAJ ADRESATA</a>
	<a href="#open-receiver" class="btn btn-primary ">DODAJ ODBIORCĘ</a>
	<a href="#open-editiorial-place" class="btn btn-primary" >DODAJ MIEJSCE REDACJI PISMA</a>
	<!--<a href="#open-social-media" class="btn btn-primary" >DODAJ SOCIAL MEDIA</a>-->
	<form onsubmit="po_save_data_general_letter()" method="post" enctype="multipart/form-data" id="po_save_addresse_to_db"></form>

	<form name ="form_pismo_ogolne" onSubmit="action_form_pismo_ogolne();" target="_blank" method="POST" enctype="multipart/form-data" id="po_pdf_generate"></form>				
</div>

<div id="open-addressee" class="modal-window">
	<div>
	    <a href="#modal-close" title="Close" class="modal-close"> &times;</a>
	    <div class="modal-header">
				<div class="title text-center">Dodaj adresata</div><hr class="hr">
			</div>
	    <div >
			<div class="form-group" id="po_adresse_fields">
				<div class="checkbox">
					<label><input type="checkbox" id="po_chb_addresse_default" name="chb_addresse_default" form="po_pdf_generate">Domyślna</label>
				</div>
				<div class="checkbox">
					<label><input type="checkbox" id="po_chb_add_section_addresse" name="chb_add_section_addresse" form="po_pdf_generate po_save_addresse_to_db">Dodaj sekcję adresata pisma</label>
				</div>
				<input type="text" class="form-control" id="po_addresse_krs" name="addresse_krs" form="po_pdf_generate po_save_addresse_to_db"
						value="<?php if($po_result->krs!='') echo $po_result->krs; ?>" placeholder="KRS"><br>
		    	<input type="text" class="form-control" id="po_addresse_nip" name="addresse_nip" form="po_pdf_generate po_save_addresse_to_db"
		    	value="<?php if($po_result->nip!='') echo $po_result->nip; ;?>" placeholder="NIP"><br>
		    	<input type="text" class="form-control" id="po_addresse_region" name="addresse_region" form="po_pdf_generate po_save_addresse_to_db"
		    	value="<?php if($po_result->region!='') echo $po_result->region;?>" placeholder="REGION"><br>
		    	<input type="text" class="form-control" id="po_addresse_phone" name="addresse_phone" form="po_pdf_generate po_save_addresse_to_db"
		    	value="<?php if($po_result->phone!='') echo $po_result->phone;?>" placeholder="Tel"><br>
		    	<input type="text" class="form-control" id="po_addresse_email" name="addresse_email" form="po_pdf_generate po_save_addresse_to_db"
		    	value="<?php if($po_result->email!='') echo $po_result->email;?>" placeholder="Email"><br>
		    	<input type="text" class="form-control" id="po_addresse_web" name="addresse_web" form="po_pdf_generate po_save_addresse_to_db"
		    	value="<?php if($po_result->website!='') echo $po_result->website;?>" placeholder="Strona internetow"><br>
		    	<input type="text" class="form-control" id="po_addresse_street" name="addresse_street" form="po_pdf_generate po_save_addresse_to_db"
		    	value="<?php if($po_result->addresse_street!='') echo $po_result->addresse_street;?>" placeholder="Ulica numer posesji/numer lokalu"><br>
		      	<input type="text" class="form-control" id="po_addresse_post_code_city" name="addresse_post_code_city" form="po_pdf_generate po_save_addresse_to_db"
		      	value="<?php if($po_result->addresse_post_code_city!='') echo $po_result->addresse_post_code_city; ?>" placeholder="Kod pocztowy i miejscowość"><br>
		      	<input type="text" class="form-control" id="po_addresse_salutation" name="addresse_salutation" form="po_pdf_generate po_save_addresse_to_db"
		      	value="<?php if($po_result->addresse_salutation!='') echo $po_result->addresse_salutation; ?>" placeholder="Zwrot grzecznościowy"><br>
			    
			    <div class="form-group "> 
					<div id="po_info_signature"></div>
					<div id="po_fields"></div>
					<button type="button" class="btn btn-primary" id="po_btn_add_fields">Dodaj podpis</button>
					<button type="button" class="btn btn-danger" id="po_btn_delete_fields">Usuń podpis</button><br><br>
				</div>
				
			    <span id="po_addresse_notic" class="community_span"></span><br>
			    <div id="res"></div>
		    </div>
		    <div class="text-center">
			    <button type="button" class="btn btn-primary" id="po_adrresse_clean" id="adrresse_clean">Wyczyść pola</button>
				<!-- <a href="#modal-close"  title="Close" class="btn btn-primary" id="po_address_remember_data">Ok</a> -->
				<button type="submit"  class="btn btn-primary" form="po_save_addresse_to_db">Ok</button>
			</div>
			
	    </div>
	</div>
</div>

 

JS

document.getElementById('po_save_addresse_to_db').addEventListener('submit', event =>{
	
	event.preventDefault();
	if(document.getElementById("po_chb_addresse_default").checked == true)
	{
		const xhr=new XMLHttpRequest();

		xhr.onload=function()
		{
			if(this.status===200)
			{
				document.querySelector('#res').innerHTML=this.responseText;
			}
		}
		const po_addr_krs = document.getElementById("po_addresse_krs");
		const po_addr_nip = document.getElementById("po_addresse_nip");
		const po_addr_region = document.getElementById("po_addresse_region");
		const po_addr_phone = document.getElementById("po_addresse_phone");
		const po_addr_email = document.getElementById("po_addresse_email");
		const po_addr_web = document.getElementById("po_addresse_web");
		const po_addr_street = document.getElementById("po_addresse_street");
		const po_addr_post_code_city = document.getElementById("po_addresse_post_code_city");
		const po_addr_salutation = document.getElementById("po_addresse_salutation");

		const path='<?php echo plugins_url() ;?>/converter_form_to_pdf/database/test.php';
		//const path='<?php po_save_data_general_letter() ;?>';
		xhr.open('POST', path, true);
		xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		xhr.send(encodeURI(
			'krs='+po_addr_krs.value+
			'&nip='+po_addr_nip.value+
			'&region='+po_addr_region.valuev+
			'&phone='+po_addr_phone.value+
			'&email='+po_addr_email.value+
			'&website='+po_addr_web.value+
			'&addresse_street='+po_addr_street.value+
			'&addresse_post_code_city='+po_addr_post_code_city.value+
			'&addresse_salutation='+po_addr_salutation.value
			));		
	}
});

PHP

<?php

function po_save_data_general_letter()
{
	global $wpdb;

	require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
	//Adrresse form fields
	$addresse_krs=$_POST['krs'];
	$addresse_nip=$_POST['nip'];
	$addresse_region=$_POST['region'];
	$addresse_phone=$_POST['phone'];
	$addresse_email=$_POST['email'];
	$addresse_web=$_POST['website'];
	$addresse_street=$_POST['addresse_street'];
	$addresse_post_code_city=$_POST['addresse_post_code_city'];
	$addresse_salutation=$_POST['addresse_salutation'];

	$po_addr = $wpdb->prefix . "addressee_of_the_general_letter";

	$user_id=get_current_user_id();

	$wpdb->update($po_addr, array(
		'krs'=>$addresse_krs,
		'nip'=>$addresse_nip,
		'region'=>$addresse_region,
		'phone'=>$addresse_phone,
		'email'=>$addresse_email,
		'website'=>$addresse_web,
		'addresse_street'=>$addresse_street,
		'addresse_post_code_city'=>$addresse_post_code_city,
		'addresse_salutation'=>$addresse_salutation	 	
	), array(
		'id_user'=>$user_id
	));
	echo "oooooook";
}
?>

 

komentarz 23 czerwca 2020 przez Tomek Sochacki Ekspert (227,510 p.)
nie mogę nie wiem czemu rozwinąć tych bloczków z kodem na mobile, ale generalnie jak masz tam podać string, który jak rozumiem ma być jakoś obliczany dynamicznie to po prostu zrób sobie funkcję, zwracającą string i użyj jej w tym miejscu:

function getPath(): string {}

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
2 odpowiedzi 1,686 wizyt
0 głosów
1 odpowiedź 360 wizyt
pytanie zadane 25 czerwca 2020 w PHP przez Tomcio2287 Nowicjusz (220 p.)
0 głosów
1 odpowiedź 1,180 wizyt

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,960 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...