dati da checkbox passati a script php via json

Luca De Franceschi

Nuovo Utente
19 Mar 2015
7
0
1
Salve, ho dei campi di tipo checkbox dove seleziono l'articolo che mi interessa
<form id="contactForm" action="php/contact-form-newsletter.php" method="POST">
<input type="checkbox" id="calendari" name="calendari[]" value="calendari da parete">
<input type="checkbox" id="calendari" name="calendari[]" value="calendari da scrivania">
<input type="checkbox" id="calendari" name="calendari[]" value="calendari tascabili">
<input type="checkbox" id="calendari" name="calendari[]" value="calendaricd">
e dei campi corrispondenti text per ognuno in cui si inserisce la quantità di ciascun articolo
<input type="text" value="" name="quantity[1]" id="productqty">
<input type="text" value="" name="quantity[2]" id="productqty">
<input type="text" value="" name="quantity[3]" id="productqty">
<input type="text" value="" name="quantity[4]" id="productqty">
ho un file js view.newsletter-new.js che controlla il form
Codice:
(function($) {

	'use strict';

	/*
	Contact Form: Basic
	*/
	$('#contactForm:not([data-type=advanced])').validate({
		submitHandler: function(form) {

			var $form = $(form),
				$messageSuccess = $('#contactSuccess'),
				$messageError = $('#contactError'),
				$submitButton = $(this.submitButton);

			$submitButton.button('loading');

			// Ajax Submit
			$.ajax({
				type: 'POST',
				url: $form.attr('action'),
				data: {
                        name: $form.find('#referente').val(),
                        email: $form.find('#email').val(),
                        products: $form.find('#articolo').is(':checked').val(),
                        subject: $form.find('#ditta').val(),
                        business: $form.find('#business').val(),
                        message: $form.find('#message').val()
				},
				dataType: 'json',
				complete: function(data) {
				
					if (typeof data.responseJSON === 'object') {
						if (data.responseJSON.response == 'success') {

							$messageSuccess.removeClass('hidden');
							$messageError.addClass('hidden');

							// Reset Form
							$form.find('.form-control')
								.val('')
								.blur()
								.parent()
								.removeClass('has-success')
								.removeClass('has-error')
								.find('label.error')
								.remove();
							$("#privacy").attr("checked", false);
							
							if (($messageSuccess.offset().top - 80) < $(window).scrollTop()) {
								$('html, body').animate({
									scrollTop: $messageSuccess.offset().top - 80
								}, 300);
							}

							$submitButton.button('reset');
							
							return;

						}
					}

					$messageError.removeClass('hidden');
					$messageSuccess.addClass('hidden');

					if (($messageError.offset().top - 80) < $(window).scrollTop()) {
						$('html, body').animate({
							scrollTop: $messageError.offset().top - 80
						}, 300);
					}

					$form.find('.has-success')
						.removeClass('has-success');
						
					$submitButton.button('reset');

				}
			});
		}
	});

	/*
	Contact Form: Advanced
	*/
	$('#contactFormAdvanced, #contactForm[data-type=advanced]').validate({
		onkeyup: false,
		onclick: false,
		onfocusout: false,
		rules: {
			'captcha': {
				captcha: false
			},
			'checkboxes[]': {
				required: false
			},
			'radios': {
				required: false
			}
		}
	});

}).apply(this, [jQuery]);
a questo script devo passare i dati delle checkbox associate al prodotto scelto e le loro rispettive quantità
come potrei fare?
lo script finale contact-form-newsletter.php(action del form) invia il tutto via email
Codice:
<?php


session_cache_limiter('nocache');
header('Expires: ' . gmdate('r', 0));

header('Content-type: application/json');

// Step 1 - Enter your email address below.
$to = '[email protected]';

// Step 2 - Enable if the server requires SMTP authentication. (true/false)
$enablePHPMailer = false;

$subject = "Richiesta Offerta";



if(isset($_POST['email'])) {
$products = $_POST['products'];	
foreach($products as $cac) {
		$prod .= $cac. "<br>\n";
	}
 
	$name = $_POST['referente'];
	$email = $_POST['email'];


	$fields = array(
		0 => array(
			'text' => 'Nome',
			'val' => $_POST['referente']
		),
		1 => array(
			'text' => 'Email',
			'val' => $_POST['email']
		),
        	2 => array(
			'text' => 'articoli',
			'val' => $prod
		),
		3 => array(
			'text' => 'Messaggio',
			'val' => $_POST['message']
		)
	);
if(isset($_POST['email'])) {
	$message = "";

}
	foreach($fields as $field) {
		$message .= $field['text'].": " . htmlspecialchars($field['val'], ENT_QUOTES) . "<br>\n".$prod;
	}
if($_POST['ids']){
   foreach($_POST['ids'] as $item){
  $items = $item." <br />";
   }
   }
	// Simple Mail
	if(!$enablePHPMailer) {

		$headers = '';
		$headers .= 'From: ' . $to . ' <' . $to . '>' . "\r\n";
		$headers .= "Reply-To: " .  $email . "\r\n";
		$headers .= "MIME-Version: 1.0\r\n";
		$headers .= "Content-Type: text/html; charset=UTF-8\r\n";

		if (mail($to, $subject, $message, $headers)){
			$arrResult = array ('response'=>'success');
		} else{
			$arrResult = array ('response'=>'error');
		}

	// PHP Mailer Library - Docs: https://github.com/PHPMailer/PHPMailer
	} else {

		include("php-mailer/PHPMailerAutoload.php");

		$mail = new PHPMailer;

		$mail->IsSMTP();                                      // Set mailer to use SMTP
		$mail->SMTPDebug = 0;                                 // Debug Mode

		// Step 3 - If you don't receive the email, try to configure the parameters below:

		//$mail->Host = 'mail.yourserver.com';				  // Specify main and backup server
		//$mail->SMTPAuth = true;                             // Enable SMTP authentication
		//$mail->Username = 'username';             		  // SMTP username
		//$mail->Password = 'secret';                         // SMTP password
		//$mail->SMTPSecure = 'tls';                          // Enable encryption, 'ssl' also accepted

		$mail->From = $email;
		$mail->FromName = $_POST['referente'];
		$mail->AddAddress($to);								  // Add a recipient
		$mail->AddReplyTo($email, $name);

		$mail->IsHTML(true);                                  // Set email format to HTML

		$mail->CharSet = 'UTF-8';

		$mail->Subject = $subject;
		$mail->Body    = $message;

		if(!$mail->Send()) {
		   $arrResult = array ('response'=>'error');
		}

		$arrResult = array ('response'=>'success');

	}

	echo json_encode($arrResult);

} else {

	$arrResult = array ('response'=>'error');
	echo json_encode($arrResult);

}
?>
la pagina in questione è on line qui:http://www.gasparella.it/newsletter.php ed è impostato in maniera non corretta sia il form che i js che il php.
grazie di eventuali spunti
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao, consiglio a te e a tutti quelli che devono inviare un form via ajax di provare la funzione serialize() di jquery
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
certo, è molto semplice
Codice:
data: $("#contactForm").serialize(),
crea la stringa necessaria con tutti i campi del form indicato nel selettore, senza bisogno di scrivere tutto a mano.
Un altro consiglio per tutti : in fase di sviluppo mettete un var_dump($_REQUEST) nella pagina php richiamata in modo da vedere subito se ci sono tutti i parametri che servono.
ps:
nel tuo caso che richiedi un json puoi usare console.log(data) nel javascript e vedere nella consle del browser cosa restituiisce
 

ans66

Utente Attivo
27 Ago 2011
158
0
16
ho usato un alert e ho allegato l'immagine che ritorna. Purtroppo io non ho un #contactForm


json.png
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Scusa ma pensavo di rispondere a Luca, ho visto la tua richiesta più tardi gli do un occhiata ma non c'entra con questa discussione.
 
Discussioni simili
Autore Titolo Forum Risposte Data
M [Visual Basic] Cambiare lo stato in checked delle checkbox richiamando dati dal database Visual Basic 6
M Inserimento dati checkbox multipli in db da ajax a php PHP 1
M Inserire nel DB i dati provenienti da checkbox e recuperarli poi dal DB per la pagina di edit PHP 20
D Quesito TOSTO - lista di checkbox flaggati in base ai dati di una tabella PHP 0
M Recuperare dati checkbox in diverse pagine PHP 1
R checkbox e memorizzazione dati PHP 1
P Problemi inserimento dati con checkbox multiplo PHP 17
S Modifica dati su db tramite checkbox PHP 14
Athene Come nascondere i dati della checkbox in php PHP 2
S ComboBox, radioButton, CheckBox...passagio dati FLASH-PHP!!! Flash 0
max75 query su due tabelle e dati doppioni MS Access 2
K Form che manda dati doppi PHP 1
T problemi con dati menu a tendina HTML e CSS 2
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
D Risultati diversi elaborazione dati fra localhost e Altervista PHP 0
C Creare Tabella Dati Meteo prelevandoli da dei Tags in un altro foglio PHP 27
M Invio dati database via email php PHP 0
K [php]form invio dati PHP 0
peppe0703 Come Estrarre dati da db wordpress e richiamarli in html esterno HTML e CSS 0
V dati scomparsi dal sito HTML e CSS 3
M Memorizzare i dati nei campi prima dell'invio al db PHP 4
A Stampare dati da form PHP 8
E Estrarre dati da doppia tabella, banale ma non sempre PHP 1
Couting95 inserire dati da un file di testo in una tabella in php PHP 1
F Scrivere dei dati in word con php PHP 0
otto9due $_FILE non passa i dati dal form PHP 1
N dati tabella non presi PHP 1
M Riportare in tabella HTML dati estratti con query SQL MySQL 0
I Assegnare dati fetch request ad una variabile globale Javascript 0
L PHPSpreadsheet inserire dati da file .xlsx/.xls su database PHP 2
L Ricezione dei dati su file php da modulo html PHP 6
L inserimento form dati multipli ? PHP 0
S Leggere dati da API e visualizzarli PHP 0
S problema con recupero dati tabella mysql PHP 2
E Progressbar estrazione dati da tabella mySQL Ajax 9
A invio massivo dati a file php Javascript 4
M Inviare dati nel db dopo risposta alert PHP 0
A recuperare i dati passati nel post PHP 1
L Estrazione dati php Database 6
L Estrazione dati casuali non doppioni MySQL 1
F Leggere e aggiornare dati di campi <input text> su file di test PHP 0
J Form inserimento dati in database Ajax 1
D Recupero dati da HDD esterno Hardware 0
L non duplicare dati in stato "aggiornamento" PHP 6
L inserire dati multi livello PHP 8
L input (rilevare cambio dati) PHP 3
L input dati con inser into select ? PHP 4
W Invio Dati ad un altra pagina Classic ASP 1
A Mostrare dati database per pagine PHP 2
Samuele Ronzani Sposta dati in una tabella eliminandolo MySQL 6

Discussioni simili