Je suis en galère avec implode/explode pour une requête sql apportant le résultat d'une seule cellule. J' ai un fichier xmlHttpRequest chargé, il fonctionne. Un lien a permet d'appeler la function adaptée permettant de cibler le fichier php permettant l'inscription en bdd.
Je cherche a utiliser une seule cellule et ajouter chaque user dans cette cellule avec une virgule. Je dois en + récupérer la liste users déjà inscrit dans cette cellule avant d'ajouter le suivant à la fin de la chaine contenue dans cette cellule mais je suis en galère totale. La cellule peut être aussi vide. J'ai essayer plein de chose avant de vous rejoindre (consulter la doc, des tutos) mais je dois louper un truc avec les explode/implode que je ne saisit pas, et je crois que je passe à côté de quelque chose avec çà et la requête mysql.
Voici mon code en espérant un petit coup de pouce. J'utilise Wordpress.
Je suis sûr que je me complique la vie et qu'il y a moyen de raccourcir tout çà avec une boucle, je dois me mélanger pas mal les pinceau avec les implode/explode et la façon de les utiliser pour manipuler le résultat de la requête sql en elle même.
Si une âme charitable veut bien m' éclairer ? merci
subscribe.php
<?php
ini_set('display_errors','off');
//GLOBAL WORDPRESS
global $wpdb;
if(!isset($wpdb))
{
require_once('../../../wp-config.php');
require_once('../../../wp-load.php');
require_once('../../../wp-includes/wp-db.php');
}
define('WP_CALENDAR_TABLE', $wpdb->prefix . 'calendar');
//DEAL FROM REQUEST.JS
header('Content-type: text/html; charset=UTF-8');
//METHOD POST < XMLHTTPREQUEST > VALUE FOR SUBSCRIBE FUNCTION IN REQUEST.JS
$raid = $_POST["raid"];
$date = $_POST["date"];
$time = $_POST["time"];
$user = $_POST["user"];
function testDate( $date )
{
$temp = implode('-', array_reverse( explode('-',$date) ) ) ;
return preg_match( '`^\d{1,2}-\d{1,2}-\d{4}$`' , $temp ) ;
if ($temp == false){
echo 'No banana, bad monkey';
}
}
function testTime( $time )
{
$temp = ''.$time.'';
return preg_match( '`^\d{1,2}:\d{1,2}:\d{1,2}$`' , $temp ) ;
if ($temp == false){
echo 'No banana, bad monkey';
}
}
//VERIFY AND UPGRADE SUBCRIBERS LIST
$sql = $wpdb->get_results("SELECT event_subscriber FROM " . WP_CALENDAR_TABLE . " WHERE event_title='".mysql_real_escape_string($raid)."' AND event_begin='".$date."' AND event_time='".$time."'");
$subscribers = $wpdb->get_results($sql);
$table_subscriber = array();
$table_subscriber = explode(",",$subscribers);
if ($subscribers == '')
{
$sql = $wpdb->get_results("UPDATE " . WP_CALENDAR_TABLE . " SET event_subscriber=''".mysql_real_escape_string($user)."'' WHERE event_title='".mysql_real_escape_string($raid)."' AND event_begin='".$date."' AND event_time='".$time."'");
}
else
{
if (!in_array($table_subscriber[$user]))
{
$list_total = array_push($table_subscriber[$user]);
$update = implode(",",$table_subscriber);
$sql = $wpdb->get_results("UPDATE " . WP_CALENDAR_TABLE . " SET event_subscriber='".mysql_real_escape_string($update)."' WHERE event_title='".mysql_real_escape_string($raid)."' AND event_begin='".$date."' AND event_time='".$time."'");
//RESPONSE
$temp = implode('-', array_reverse( explode('-',$date) ) ) ;
echo 'You just sign up for the event "' .mysql_real_escape_string($raid).'"';
echo ' of ' .mysql_real_escape_string($temp). '';
echo ' at '.mysql_real_escape_string($time).'';
echo ' with nicename "'.mysql_real_escape_string($user).'"';
}
else
{
echo 'You are already registered for this raid "'.mysql_real_escape_string($raid).'"';
}
}
unset($raid, $date, $time, $user, $list_total);
?>
request.js// JavaScript Document
//Subscribe function
function subscribe(){
var user = document.getElementById('user').innerHTML;
var raid = document.getElementById('raid').innerHTML;
var date = document.getElementById('date').innerHTML;
var time = document.getElementById('time').innerHTML;
var xhr_object = null;
if(window.XMLHttpRequest) // Firefox
xhr_object = new XMLHttpRequest();
else if(window.ActiveXObject) // Internet Explorer
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else { // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest. Veuillez mettre à jour.");
return;
}
xhr_object.open("POST", "/wp-content/plugins/calendar/subscribe.php", true);
xhr_object.onreadystatechange = function() {
if(xhr_object.readyState == 4) alert(xhr_object.responseText);
}
xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
var data = "user="+user+"&raid="+raid+"&date="+date+"&time="+time;
xhr_object.send(data);
}
//Unsubscribe function
function unsubscribe(){
var user = document.getElementById('user').innerHTML;
var raid = document.getElementById('raid').innerHTML;
var date = document.getElementById('date').innerHTML;
var time = document.getElementById('time').innerHTML;
var xhr_object = null;
if(window.XMLHttpRequest) // Firefox
xhr_object = new XMLHttpRequest();
else if(window.ActiveXObject) // Internet Explorer
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else { // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest. Veuillez mettre à jour.");
return;
}
xhr_object.open("POST", "/wp-content/plugins/calendar/unsubscribe.php", true);
xhr_object.onreadystatechange = function() {
if(xhr_object.readyState == 4) alert(xhr_object.responseText);
}
xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
var data = "user="+user+"&raid="+raid+"&date="+date+"&time="+time;
xhr_object.send(data);
}
//Alerte for log link if not define
function nolink(){
alert("Aucun lien vers un log de donnée de raid n'a été défini.");
}
edit: correction orthographique