geomagas Δημοσ. 7 Ιουλίου 2014 Δημοσ. 7 Ιουλίου 2014 Προσωπικά δυσκολεύομαι να καταλάβω τη λογική. Έχεις ένα πίνακα $_POST['choices'] με Ν στοιχεία. Σωστά; Επίσης έχεις ένα ήδη έτοιμο xml στο δίσκο, το οποίο θέλεις να γεμίσεις από τον παραπάνω πίνακα ως εξής: - Για τα choices που υπάρχουν σαν albums, να αυξάνεις το album/rate κατά 15 - Για αυτά που δεν υπάρχουν, να τα προσθέτεις με rate αρχικοποιημένο = 15. Σωστά;
rafinos Δημοσ. 7 Ιουλίου 2014 Μέλος Δημοσ. 7 Ιουλίου 2014 Το rate που έβαλα είναι τελείως εικονικό διαφορετικά παίρνει τιμή το rate... Αλλά πάνω κάτω αυτό που είπες (βασικά ο κώδικας κάνει ακριβώς αυτό ) Τώρα έχω άλλο θέμα... όταν κάνω unset ένα element πως παίρνει τι θέση του το επόμενο (reindex... αλλά με την ίδια σειρά). *Οκ το έκανα με $array = array_merge($array);
geomagas Δημοσ. 7 Ιουλίου 2014 Δημοσ. 7 Ιουλίου 2014 Δεν χρειάζονται unsets ούτε πολλά-πολλά iterations. Δες αυτό, που κάνει την ίδια δουλειά, και με καναδυό ελέγχους παραπάνω: <?php $xml=simplexml_load_file("test.xml"); if(isset($_POST['choices'])) { foreach($_POST['choices'] as $choice) if($choice) { $x=$xml->xpath("//title[.='$choice']/parent::*"); if($x&&count($x)) foreach($x as $album) $album->rate+=15; else { $album=$xml->addChild('album'); $album->addChild('title',$choice); $album->addChild('rate',15); } } $xml->asXML("test.xml"); } ?> <!DOCTYPE html> <html> <head> </head> <body> <textarea style="height:300px;width:100%;"><?php echo $xml->asXML(); ?></textarea> <form method='post'> <?php for($i=0;$i<5;$i++): ?> <input type='text' name='choices[]'> <?php endfor; ?> <input type='submit'> </form> </body> </html> Το tricky part είναι η xpath, αλλά με λίγο διάβασμα μαθαίνεται!
rafinos Δημοσ. 7 Ιουλίου 2014 Μέλος Δημοσ. 7 Ιουλίου 2014 Οκ αφεντικό θα το τσεκάρω, αν και έχω προσθέσει αρκετά πράγματα στην προηγούμενη λύση. Ευχαριστώ!
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα