FORUM SPX

Aide au projet spx : plugins pour pluxml - Forums pluxml

Vous n'êtes pas identifié(e).

#1 2014-07-15 18:16:58

paysan hardi
Membre
Inscription : 2014-01-30
Messages : 28
Site Web

problème de data number=""

Bonjour J.E.

je prend l'exemple d'une table contenant 10 entrées ici
j'enregistre uniquement coté client (pas par l'admin)
j'ai fait la modif comme expliquée sur http://secretsitebox.fr/forumspx/viewto … d=730#p730
le php de la page statique est déjà affiché sur ce site mais je peux le remettre si nécessaire

aucun problème en création,
aucun problème en modification
...sauf lorsqu'il s'agit du dernier enregistrement  : le fichier .xml est réécrit avec un data number=""

- idem que je sois enregistré ou pas
- var_dump($o) confirme que le tableau est bien renseigné, notamment $o['id']
- j'ai testé en supprimant des enregistrements (dès fois qu'une simple ou double quote dans un champ plante la réécriture).
- je pensais à une limite au 51ème enregistrement, mais la version en ligne attesterai que c'est sur le dernier record que ça plante (ligne test5)
- j'ai parcouru setData, posé des var_dump() un peu partout...et revu mon niveau en php à la baisse pour l'occasion.
là où c'est dingue, c'est qu'il arrive que ça marche pour le 250ème enregistrement et pas le 251ème (d'où le fait que j'aie d'abord mis en cause mes données)

[edit]
en fait ça marche les 10/20 premières minutes puis basta, la variable SESSION n'est pourtant pas modifiée mais on dirait un timer qui planterai l'écriture après x minutes
[/edit]

une suggestion ?
merci de m'avoir lu, bonne soirée

Dernière modification par paysan hardi (2014-07-16 05:38:44)

Hors ligne

#2 2014-07-26 21:52:34

je-evrard
Responsable du projet
Lieu : Pau
Inscription : 2014-01-24
Messages : 206
Site Web

Re : problème de data number=""

Hello,

Essaye de mettre à jour spxdatas avec la version 1.60 stp.

Tu me tiens au courant.

jéjé


Petit à petit l'oiseau fait son nid.
creation de site web : http://secretsitebox.fr/ - création artistique : http://art.je-evrard.net

Hors ligne

#3 2014-08-03 14:57:04

paysan hardi
Membre
Inscription : 2014-01-30
Messages : 28
Site Web

Re : problème de data number=""

Bonjour Jéjé, merci de ta réponse.
C'est une bonne idée d'avoir allégé la partie administration, hélas je n'ai pas plus de succès avec cette version.

Au final j'utilise getData, delData et setData uniquement pour un nouvel enregistrement.
J'ai un bout de code qui fonctionne bien pour les modifs, même si je suis obligé d'alourdir mon code d'une variable contenant le fichier xml.

[== PHP ==]
if(isset($_POST['modif'])){
		# méthode qui marche en frontend, ! penser à changer variables
		$fichier='data/xmlperso/data/'.$table.'.xml'; 
		$client=(isset($_POST['client']))? 1:"";
		# méthode qui charge $fichier dans le string $contenu 
		$contenu = implode('',file($fichier));
		$parser = xml_parser_create(PLX_CHARSET);
		xml_parser_set_option($parser,XML_OPTION_CASE_FOLDING,0);
		xml_parser_set_option($parser,XML_OPTION_SKIP_WHITE,0);
		xml_parse_into_struct($parser,$contenu);
		xml_parser_free($parser);
		# chaîne à remplacer 
		$A=explode('<data number="'.$id.'"',$contenu);
		$B=explode('<data',$A[1]);
		$original='<data number="'.$id.'"'.$B[0];
		# chaîne de remplacement
		$C=explode('<parameter',$original); //récupérer l'original de <data... jusqu'à <column>
		$xml = $C[0];
		# tableau des ![CDATA
		$column=array("nom","personne","fixe","mobile","idgroupe","mail","ip","site","adresse","rem"); 
		for ($i=0;$i<count($column);$i++){
			if(isset($_POST[$column[$i]])){
				$xml.= '<parameter name="'.$column[$i].'" type="cdata"><![CDATA['.plxUtils::strCheck($_POST[$column[$i]]).']]></parameter>'."\n\t\t";
			}
		}
		# strings
		$xml.= '<parameter name="client" type="string">'.$client.'</parameter>'."\n";
		$xml.= "\t</column>\n";
		$xml.= "</data>\n";
		# replacement segment xml
		$xml = str_replace($original,$xml,$contenu);
		# vérifie si </document> existe à la fin sinon le rajouter (# cas dernier record supprimé)
		$xml.= (strpos(substr($xml,-20,20), '</document>')) ? "" : "</document>";
		# écriture
		plxUtils::write($xml,$fichier);		
		# actualise la page
		echo '<script>window.location.replace("'.$url.'&id='.$id.'");</script>';		
}

Ma méthode peut paraitre sauvage mais elle marche. Ton plugin est magnifique, je doute que tu doives te donner plus de mal pour la console d'administration car je me rends compte, à l'usage, que rien ne vaut un bon vieux formulaire en page statique pour administrer la base. Ne serait-ce que pour obtenir un optgroup ou disposer d'un incontournable champ de recherche.

En espérant que tu profites du soleil qu'il fait aujourd'hui, bonne journée.
Steph

Hors ligne

#4 2014-08-03 15:52:17

paysan hardi
Membre
Inscription : 2014-01-30
Messages : 28
Site Web

Re : problème de data number=""

En lisant spxdatas.php pour reporter mes modifs, notamment les "/n/t" qui m'aident à mieux lire mon xml, je découvre spxdatasXmlmanager et spxdatasJsonmanager.
Se pourrait-il que mon bug vienne des décalages et saut de ligne dans la structure du .xml ?

tant que j'y suis je te donne mes autres modifs :

[== PHP ==]
# ajout pour accéder directement au 999ème enregistrement (méthode bancale avant que j'utilise les formulaires)
public function initconfiguration() {
		
		if (isset($_GET['data_id'])and $_GET['data_id']!=""){
			$this->setParam('nb_data_pagination','1000','numeric');
			$this->setParam('data_id',$_GET['data_id'],'numeric');
			$this->setParam('pager',($_GET['data_id']/30+1),'numeric');
 		}
				
	}

# select multicolonne bibi
		case "liste":
			$table = $aoption[1];
			$column = $aoption[2];
			$column1="";
			$column2="";
			$column3="";
			if(stristr($column, "|")!=false){
				$col=explode('|', $column); 
				$column=$col[0];
				$column1=$col[1];
				$column2=$col[2];
				$column3=$col[3];
			}
			else {$column=$aoption[2];}
			$data = $this->aDatas[$table];
			$printarray = array();
			foreach($data as $val) {
				$valliste = $val["data"][$column]["value"];
				if($column1!=""){$valliste.= "|".htmlspecialchars(stripcslashes(trim($val["data"][$column1]["value"])))."|";} #title
				if($column2!=""){$valliste.= " - ".$val["data"][$column2]["value"];} #bibi
				if($column3!=""){$valliste.= " - ".$val["data"][$column3]["value"];} #bibi
				$idliste = $val["number"];
				$printarray[$idliste]=$valliste;
			}
			natsort($printarray);
			return (spxdatasUtils::printSelect ($name.'[]', $printarray,$value));
		break;

case "date":	
			$id = "id_".$name.$number_id;
			$s= spxdatasUtils::printInput2 ($id,$name."[]", $value, 'text', "10-10",$reado);
			$s.="\n\t".'<script>';
			$s.="\n\t".'$(document).ready(function() {';
			//$s.="\n\t".'$("#'.$id.'").datepicker();'; #original
			$s.="\n\t".'$("#'.$id.'").datepicker({ dateFormat: "yy-mm-dd" });'; #bibi

Ces modifs mineures n'ont aucun rapport avec mon problème, j'ai cependant le doute concernant les sauts de ligne ?
En espérant t'avoir donné le maximum d'éléments.

Hors ligne

Pied de page des forums