[RESOLU] Poster la valeur d'une checkbox dans un outil CRM

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Poster la valeur d'une checkbox dans un outil CRM

Re: [RESOLU] Poster la valeur d'une checkbox dans un outil C

par benji_solve » 18 nov. 2012, 19:52

Ca me parait être la moindre des choses.
Si t'étais à côté de moi, j'irai te payer un coup :D

Ben

Re: [RESOLU] Poster la valeur d'une checkbox dans un outil C

par Saian » 18 nov. 2012, 19:50

De rien Ben, ça fait toujours plaisir de pouvoir aider et d'autant plus quand on a droit à des remerciements. ;)
Bonne continuation à toi !

Re: Poster la valeur d'une checkbox dans un outil CRM

par benji_solve » 18 nov. 2012, 19:45

Là je comprends :)
Super Saian (aucun jeu de mot :lol: )

Merci encore pour tout, en tout cas !! =D>

Bonne continuation
Ben

Re: Poster la valeur d'une checkbox dans un outil CRM

par Saian » 18 nov. 2012, 19:40

En fait tu avais ça :
$noteData = array(
'details' => nl2br($requestData['note'])
);

$details = $_POST["note"]; 
Sauf que la variable $details (qui doit être vide vu que $_POST['note'] n'existe pas) tu ne t'en sers pas.
C'est le $noteData que tu utilises. Et la valeur vient de $requestData['note'] qui est alimenté plus haut avec :
$requestData = array();
parse_str($_SERVER['QUERY_STRING'], $requestData);

Re: Poster la valeur d'une checkbox dans un outil CRM

par benji_solve » 18 nov. 2012, 19:16

J'ai bien compris frf2.
Ce que j'expliquais et qui du coup m'a un peu embrouillé, c'est que j'utilise un POST sur cette ligne et que ça fonctionne, la valeur est bien récupérée et envoyée, bien que la method de mon formulaire soir un GET.

Je voulais juste comprendre pourquoi dans ce cas, ça fonctionnait ? rien de + ;)

Merci
Ben

Re: Poster la valeur d'une checkbox dans un outil CRM

par frf2 » 18 nov. 2012, 19:11

Tu utilises GET au lieu de POST dans ton Form comme on te la cité dans une des réponses ci-dessus...
$details = $_GET["note"];
echo $details;

Re: Poster la valeur d'une checkbox dans un outil CRM

par benji_solve » 18 nov. 2012, 18:42

Ca marche !!!!!!

J'ai finalement changé:

if (isset($_POST["categorybox"]))
$categories[] = $_POST["categorybox"][0];

en

if (isset($_GET["categorybox"]))
$categories[] = $_GET["categorybox"][0];


et ça fonctionne impec' =D> =D> :D

et du coup, question subsidiaire, un peu plus loin dans le code, il y a une autre valeur du formulaire que je récupère. C'est celle qui correspond à mon champ hidden "note" dans le formulaire.
Pour récupérer sa valeur, j'utilise pourtant un _POST depuis le début et celà fonctionnait bien pourtant. C'est là que je ne comprends pas tout.

J'ai ça dans mon code, et je récupère bien la valeur du champ note:
$details = $_POST["note"];

En tout cas, je ne sais vraiment pas comment te remercier pour ton aide Saian, ainsi qu'à tous les autres membres !!! Tu peux pas savoir comme ça me prenait la tête. VRAIMENT MERCI DU FOND DU COEUR !!!!

Ben

Re: Poster la valeur d'une checkbox dans un outil CRM

par Saian » 18 nov. 2012, 18:30

Ah ben non en fait en prenant le temps de vérifier ton form la method n'est pas bonne.
Tu utilises la method GET et recherche la variable dans $_POST.
Donc soit tu mets ton form en method POST soit tu récupères la variable dans $_GET.
Sinon utilise le $_REQUEST qui contient les paramètres de $_POST et de $_GET. Ainsi même si tu changes la method du formulaire ton code fonctionne toujours.

Re: Poster la valeur d'une checkbox dans un outil CRM

par Saian » 18 nov. 2012, 18:26

Oué en fait $_POST["categorybox"] ne doit pas être défini et donc ça ne rentre pas dans ton if.

Donc à mon avis (sans avoir vérifié tout ton code alors je me trompe peut être) sur ta checkbox dans le name ajoute [] comme ceci :
<label>Newsletter</label> <input type="checkbox" name="categorybox[]" value="56442629" />
Et modifie la ligne la suivante comme ceci :
$categories[] = $_POST["categorybox"][0];

Re: Poster la valeur d'une checkbox dans un outil CRM

par benji_solve » 18 nov. 2012, 18:22

OK, merci Saian,

Voilà ce qu'il me retourne.

Pour : echo 'categorybox = '.$_POST["categorybox"].'<br/>';

J'ai: categorybox =

Pour: <?php echo '<pre>';
print_r($categories);
echo '</pre>'; ?></b></p>

J'ai: Array
(
[0] => 21683000
[1] => 55209873
[2] => 62861157
)


Moi, ce que j'aimerais, ce serait voir apparaitre en plus: [3] => 56442629

Merci
Ben

Re: Poster la valeur d'une checkbox dans un outil CRM

par Saian » 18 nov. 2012, 18:14

echo c'est pour les variables. Pour un tableau ou un objet tu as le print_r !

Donc par exemple pour vérifier la variable en post :
echo 'categorybox = '.$_POST["categorybox"].'<br/>';
Pour vérifier le tableau $categories :
echo '<pre>';
print_r($categories);
echo '</pre>';

Re: Poster la valeur d'une checkbox dans un outil CRM

par benji_solve » 18 nov. 2012, 18:11

et voilà le formulaire html
-------------------------------------------------
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
label, input, textarea { display: block; float: left; width: 150px; margin: 5px; }
label { clear: left; text-align: right; }
input[type="submit"] { width: 60px; margin: 10px 0 0 165px; clear: left; }
</style>
</head>
<body>
<h2>Formulaire test</h2>
<form action="Solve360ContactSave.php" method="GET">
<label>Prénom*</label> <input type="text" name="firstname" value="" />
<label>Nom*</label> <input type="text" name="lastname" value="" />
<label>Profession*</label> <input type="text" name="custom5341956" value="" />
<label>Téléphone*</label> <input type="text" name="businessphonedirect" value="" />
<label>Email*</label> <input type="text" name="businessemail" value="" />
<label>Remarques</label> <textarea name="custom5679527" cols="4" rows="4"></textarea>
<label>Newsletter</label> <input type="checkbox" name="categorybox" value="56442629" />
<input type="hidden" name="note" value="form1">
<input type="submit" value="Envoyer" />
</form>

</body>

</html>

Re: Poster la valeur d'une checkbox dans un outil CRM

par benji_solve » 18 nov. 2012, 18:09

<?php

// version 2.2.2

// Paramaters you change begin with "your" e.g. [email protected], yourSolve360Token,
// yourOwnership, yourCategoryId, yourTemplateId should be replaced with your own values

// REQUIRED Edit with the email address you login to Solve360 with
define('USER', 'XXXXXXXXXXXXXXXXXXXX');
// REQUIRED Edit with token, Solve360 menu > My Account > API Reference > API Token
define('TOKEN', 'XXXXXXXXXXXXXXXXXXXX');

// Get request data
$requestData = array();
parse_str($_SERVER['QUERY_STRING'], $requestData);

// Configure service gateway object
require 'Solve360Service.php';
$solve360Service = new Solve360Service(USER, TOKEN);

//
// Preparing the contact data
//
$contactFields = array(
// field name in Solve360 => field name as specified in html form
'firstname' => 'firstname',
'lastname' => 'lastname',
'custom5341956' => 'custom5341956',
'businessphonedirect' => 'businessphonedirect',
'businessemail' => 'businessemail',
'custom5679527' => 'custom5679527',
);

$categories = array(21683000,55209873,62861157);
if (isset($_POST["categorybox"]))
$categories[] = $_POST["categorybox"];
$contactData = array(
'ownership' => 55208024,
'categories' => array(
'add' => array('categorybox' => $categories)
)
);


// adding not empty fields
foreach ($contactFields as $solve360FieldName => $requestFieldName) {
if ($requestData[$requestFieldName]) {
$contactData[$solve360FieldName] = $requestData[$requestFieldName];
}
}

//
// Saving the contact
//
// If there was business email provided:
// check if the contact already exists by searching for a matching email address.
// if a match is found update the existing contact, otherwise create a new one.
//
if ($contactData['businessemail']) {
$contacts = $solve360Service->searchContacts(array(
'filtermode' => 'byemail',
'filtervalue' => $contactData['businessemail'],
));
}
if (isset($contacts) && (integer)$contacts->count > 0) {
$contactId = (integer)current($contacts->children())->id;
$contactName = (string)current($contacts->children())->name;
$contact = $solve360Service->editContact($contactId, $contactData);
} else {
$contact = $solve360Service->addContact($contactData);
$contactName = (string)$contact->item->name;
$contactId = (integer)$contact->item->id;
}

if (isset($contact->errors)) {
// Email the error
mail(
USER,
'Error while adding contact to Solve360',
'Error: ' . $contact->errors->asXml()
);
die ('System error');
} else {
// Email the result
mail(
USER,
'Contact posted to Solve360',
'Contact "' . $contactName . '" https://secure.solve360.com/contact/' . $contactId . ' was posted to Solve360'
);
}

//
// OPTION Adding a activity
//

/*
* You can attach an activity to the contact you just posted
* This example creates a Note, to enable this feature just uncomment the following request
*
*/


// Preparing data for the note

$noteData = array(
'details' => nl2br($requestData['note'])
);

$details = $_POST["note"];

$note = $solve360Service->addActivity($contactId, 'note', $noteData);


// Email the result
mail(
USER,
'Note was added to "' . $contactName . '" contact in Solve360',
'Note with id ' . $note->id . ' was added to the contact with id ' . $contactId
);
// End of adding note activity


//
// OPTION Inserting a template of activities
//

/*
* You can also insert a template directly into the contact you just posted
* You will find a list of IDs for templates in Solve360 menu > My Account > API Reference
* To enable this feature just uncomment the following request
*
*/

/*
// Start of template request
$templateId = 21855844;
$template = $solve360Service->addActivity($contactId, 'template', array('templateid' => $templateId));

// Email the result
mail(
USER,
'Template was added to "' . $contactName . '" contact in Solve360',
'Template with id ' . $templateId . ' was added to the contact with id ' . $contactId
);
// End of template request
*/

?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
</head>
<body>
<h2>Resulat</h2>

<p>Merci, <b><?php echo $contactName ?></b></p>
<p>Merci, <b><?php echo $categories ?></b></p>

<p>Informations sauvegardées</p>
<p>Page de remerciement ici.</p>
</body>
</html>

Re: Poster la valeur d'une checkbox dans un outil CRM

par benji_solve » 18 nov. 2012, 18:08

Quand je rajoute un :

<?php echo $categories ?></b></p

il m'affiche Array. J'imagine donc qu'il ne remonte que les valeurs associées à $categories = array(21683000,55209873,62861157);

Quand je retire cette ligne, le écho n'affiche rien. Ce qui signifie qu'il ne récupère pas la valeur de ma checkbox. Je pense que le fond de mon problème est là. Pourquoi n'arrive-t-il pas à faire le lien avec la checkbox cochée, et récupérer sa valeur ?

@Moogli,j'ai posté un php info et à la ligne "error_reporting" , j'ai 6135.Qu'est ce que ça veut dire ?
Où dois je ajouter un var_dump($categories); ?

Je poste tout le formulaire ci dessous
merci pour votre aide c'est cool !

Ben

Re: Poster la valeur d'une checkbox dans un outil CRM

par Saian » 18 nov. 2012, 17:48

Tu "supposes que" benji_solve hors tu ne devrais pas supposer mais vérifier (un simple echo suffit).
Et si la valeur n'est pas bonne ben tu as déjà un problème à ce niveau là avant de chercher ailleurs.
En revanche si la valeur est bonne, alors tu es sûr que le problème ne vient pas de là et tu peux continuer à chercher ailleurs.