Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Προσωπικά δυσκολεύομαι να καταλάβω τη λογική.

 

Έχεις ένα πίνακα $_POST['choices'] με Ν στοιχεία. Σωστά;

 

Επίσης έχεις ένα ήδη έτοιμο xml στο δίσκο, το οποίο θέλεις να γεμίσεις από τον παραπάνω πίνακα ως εξής:

 - Για τα choices που υπάρχουν σαν albums, να αυξάνεις το album/rate κατά 15

 - Για αυτά που δεν υπάρχουν, να τα προσθέτεις με rate αρχικοποιημένο = 15.

 

Σωστά;

Δημοσ.

Το rate που έβαλα είναι τελείως εικονικό διαφορετικά παίρνει τιμή το rate...

Αλλά πάνω κάτω αυτό που είπες (βασικά ο κώδικας κάνει ακριβώς αυτό :P)

 

Τώρα έχω άλλο θέμα... όταν κάνω unset ένα element πως παίρνει τι θέση του το επόμενο (reindex... αλλά με την ίδια σειρά).

 

*Οκ το έκανα με $array = array_merge($array); :D

Δημοσ.

Δεν χρειάζονται 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, αλλά με λίγο διάβασμα μαθαίνεται! ;)

Δημοσ.

Οκ αφεντικό θα το τσεκάρω, αν και έχω προσθέσει αρκετά πράγματα στην προηγούμενη λύση. :)

 

Ευχαριστώ!

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...