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
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
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
S Gestire scelta dropdown con dati da Mysql PHP 2
C Estrarre dati stringa Sql Database 1
elpirata Query per leggere dati da una tabella mysql e mostrarli a video in base a parametri passati tramite GET PHP 5
W Evitare ridondanza dei dati Classic ASP 3
MarcoGrazia Dati nulli su join tra più tabelle MySQL 1
A Inserimento dati nel database tramite form + altre operazioni PHP 18
Alex_70 sql importazione dati MySQL 0
C Aggiungere blocco dati Javascript 6
G inserire dati automaticamente in mysql PHP 0
Tommy03 Unire dati da due tabelle MySQL 5
S Trasferire dati sulle pagine del sito PHP 7
A PROBLEMA: insert mysqli con dati Tagsinput Presentati al Forum 0
L inviare i dati di un form ad un database PHP 6
Alex_70 Inserimento dati a cascata PHP 204
T Da xsd a xml ed inserimento dati in excel XML 0
G Rendere dati di una tabella mysql link PHP 22
D Chiave unica in estrazione dati da array php PHP 0
L modifica dati. PHP 1
C Problema con dati meteo xml XML 1
L risolto visualizzazione e ordinamento dati PHP 1

Discussioni simili