Salve a tutti!
Oggi ho un problema che non riesco a risolvere .
In pratica con jquery ho fatto un menu sortable (ordinabile...) che invia tramite ajax la posizione degli elementi.
JQuery mi crea una query string del genere:
Codice:
menulato[]=3&menulato[]=1&menulato[]=2
Così in $_GET["menulato"] avrò i dati.
Codice PHP:
<?php
error_reporting(E_ALL);
$xml = simplexml_load_file("menulato.xml");
$ids = $_GET["menulato"];
foreach($ids as $pos => $value) {
$xml->box[$pos]["id"] = $value;
}
file_put_contents("menulato.xml", $xml->asXML());
?>
Allora il file menulato.xml è strutturato:
Codice HTML:
<?xml version="1.0"?>
<menulato>
<box id="1">
<titolo>Box1</titolo>
<contenuto>Ciao mondo!</contenuto>
</box>
<box id="2">
<titolo>Box2</titolo>
<contenuto>hello world</contenuto>
</box>
<box id="3">
<titolo>Box3</titolo>
<contenuto>boh</contenuto>
</box>
</menulato>
Il problema sta in queste righe:
Codice PHP:
foreach($ids as $pos => $value) {
$xml->box[$pos]["id"] = $value;
}
Dato che l'ordine è tutto purchè quello giusto.
Non riesco a capire come fare, oppure è jquery che mi da i dati sbagliati (non penso proprio)???
http://mycarlo.altervista.org/my/menulato/
Spostate i box e ricaricate pagina, per vedere se le modifiche hanno avuto effetto.
Chiedo aiuto a voi
P.S. Per ordinare i dati faccio:
Codice PHP:
<?php
$xml = simplexml_load_file("menulato.xml");
$boxes = array();
$j = 1;
foreach($xml->box as $box) {
$boxes[(int) $box["id"]] = $box;
}
ksort($boxes);
foreach($boxes as $box) {
echo "<li id=\"menulato_{$j}\">\n<h3>{$box->titolo}</h3>\n{$box->contenuto}</li>\n";
$j++;
}
?>
P.S. 2 Ho risolto, finalmente ho capito come dovevo fare . Se può servire a qualcuno:
Codice PHP:
<?php
error_reporting(E_ALL);
$xml = simplexml_load_file("menulato.xml");
$ids = $_GET["menulato"];
foreach($ids as $position => $item) {
foreach($xml->box as $box) {
if($box["id"] == $item) {
$box["position"] = $position;
}
}
}
file_put_contents("menulato.xml", $xml->asXML());
?>
Saluti!