rafinos Δημοσ. 6 Ιουλίου 2014 Δημοσ. 6 Ιουλίου 2014 Γεια σας! Υπάρχει τρόπος να πάρω τα στοιχεία από ένα αρχείο text και να τα περάσω σε μορφή object array της javascript; Ο πίνακας θέλω να είναι της μορφής {"artist":"blah blah,"albul":"blah ble"} ... Αν γίνεται αυτό, τότε πώς γίνεται; Και πως πρέπει να είναι τα δεδομένα μέσα στο text αρχείο;
alou Δημοσ. 6 Ιουλίου 2014 Δημοσ. 6 Ιουλίου 2014 Για την καλύτερη λύση, πες πρώτα που βρίσκονται αρχικά τα δεδομένα που θα χρησιμοποιείς. Αν απλά τα φτιάχνεις μόνος σου, δεν καταλαβαίνω γιατί να μη φτιάξεις απευθείας ένα .js file με έτοιμα objects? (ανάλογα και με τον όγκο δεδομένων, ίσως περισσότερα από ένα που θα ζητάς όταν χρειάζεται).
geomagas Δημοσ. 6 Ιουλίου 2014 Δημοσ. 6 Ιουλίου 2014 Το αρχείο text που βρίσκετα; Στον server και θέλεις να το μετατρέψεις σε JSON και να το στείλεις στον client; Edit: Τα μεγάλα πνεύματα...
rafinos Δημοσ. 6 Ιουλίου 2014 Μέλος Δημοσ. 6 Ιουλίου 2014 Αρχικά το αρχείο δεν θα έχει καν τιμές ... (θα χρησιμοποιηθεί και php για να γεμίζει το αρχείο ) Θα υπάρχει μια φόρμα με αρκετά text boxes και θα γίνεται κάτι σαν ψηφοφορία... για albums στην προκειμένη περίπτωση. Αν υπάρχει ήδη στο αρχείο το album θα το εμφανίζει το autocomplete και θα αλλάζει μόνο η ψήφος (πρόσθεση κατά κύριο λόγο ) διαφορετικά θα γίνεται νέα προσθήκη στο αρχείο. Εντάξει ξέρω ότι είναι κάπως περίπλοκο (κοιτάω μήπως γίνει με xml αν και στο τέλος θα το κάνω με mysql να ησυχάσει το κεφάλι μου )
geomagas Δημοσ. 6 Ιουλίου 2014 Δημοσ. 6 Ιουλίου 2014 Αν θέλεις η φόρμα σου να αποθηκεύει τα δεδομένα σε αρχείο text, νομίζω η μορφή csv θα σε βολέψει καλύτερα από τις εναλλακτικές (αν και το xml είναι μία καλύτερη λύση, αλλά πλεον σταματάμε να μιλάμε για text files καθεαυτά). Ένα csv τώρα μετατρέπεται σχετικά εύκολα σε JSON.
rafinos Δημοσ. 6 Ιουλίου 2014 Μέλος Δημοσ. 6 Ιουλίου 2014 Από τη στιγμή που το xml είναι καλύτερη λύση τότε θα χρησιμοποιήσουμε αυτή... το αρχείο κειμένου τελικά δεν μου φαίνεται τόσο καλή επιλογή γιατί δεν είναι και τόσο οργανωμένο όσο θα ήθελα Ευχαριστώ πάντως (καλά σε λίγο θα επανέλθω με πρόβληματα περί xml αχαχαχαχα )
alou Δημοσ. 6 Ιουλίου 2014 Δημοσ. 6 Ιουλίου 2014 Μισό... θα το φτιάχνεις λες με php(?) και ίσως από τη βάση(?) αν ναι, στο αρχείο που τρέχει η σελίδα που θες να χρησιμοποιήσεις το js object (υποθέτω ότι είναι php) θα φτιάξεις ένα php array με key - value pairs για ότι δεδομένα χρειάζεσαι και θα το κάνεις echo json_encode($array_name) μέσα σε script tags, πχ <?php $whatever = array(); foreach ($query_result as $item){ $whatever[] = $item; } ?> <script> <?php echo 'var myJsonObject = '.$json_encode($whatever).';'; ?> </script> που απλά θα έχει δηλωθεί πριν το ζητήσεις. Λίγη προσοχή στη δομή μόνο. Δεν υπάρχει λόγος για μετατροπές και parsing από txt / xml / csv, μην κάνεις τα εύκολα δύσκολα.
rafinos Δημοσ. 6 Ιουλίου 2014 Μέλος Δημοσ. 6 Ιουλίου 2014 Παιδιά τελικά άρχισα να το κάνω με xml... αλλά έχω ένα πρόβλημα... και πιθανότατα δεν είναι με το xml $choices = []; $choices_length = count($_POST['choices']); for($i = 0; $i<$choices_length; $i++){ echo $_POST['choices'][$i]." <br />"; $choices[$i] = $_POST['choices'][$i]; } $choices_length = count($choices); $xml=simplexml_load_file("test.xml"); //echo $xml->album[0]->title; if(count($xml->album) > 0){ for($x=0; $x<$choices_length; $x++){ for($i=0; $i<count($xml->album); $i++){ if ($xml->album[$i]->title == $choices[$x]) { $xml->album[$i]->rate = (int)$xml->album[$i]->rate + 15; unset($choices[$x]); $x--; $choices_length--; } } } } Το πρόβλημα είναι εδώ if ($xml->album[$i]->title == $choices[$x]) { και είναι του στυλ Notice: Undefined offset: -1
rafinos Δημοσ. 7 Ιουλίου 2014 Μέλος Δημοσ. 7 Ιουλίου 2014 Καθώς γίνεται unset το κελί δεν πηγαίνει και μια θέση πίσω το επόμενο κελί; Αλλά και πάλι το πρόβλημα εκεί υπάρχει και αν βγάλω το $x-- και γενικότερα όλα τα -- Και όμως έχεις δίκιο το -- φταίει για το error αλλά και πάλι αυτά εδώ if ($xml->album[$i]->title == $choices[$x]) {$xml->album[$i]->rate = (int)$xml->album[$i]->rate + 15; δεν τρέχουν ποτέ!
rafinos Δημοσ. 7 Ιουλίου 2014 Μέλος Δημοσ. 7 Ιουλίου 2014 Περίμενε να σας δώσω πρώτα ολόκληρο τον κώδικα for($i=0; $i<$choices_length; $i++){ $temp_xml = $xml->addchild('album'); $temp_xml->addchild('title', $choices[$i]); $temp_xml->addchild('rate','15'); } $xml->asXML("test.xml"); αυτό είναι το κομμάτι που δεν υπάρχει πάνω (βρίσκεται στο τέλος)... τρέχει κανονικά και μου περνάει αυτά που θέλω όπως τα θέλω στο xml αρχείο απλώς αν για παράδειγμα έχω το album "rafinos" και ξαναγράψω "rafinos" στα textboxes θέλω να ενημερωθεί μόνο το rate και να μην ξαναδημιουργεί και άλλο node ορίστε και ένα παράδειγμα του xml <?xml version="1.0" encoding="UTF-8"?> <vote> <album> <title>rafinos</title> <rate>15</rate> </album> <album> <title>geomagas</title> <rate>15</rate> </album> <album> <title>alou</title> <rate>15</rate> </album> <album> <title>allou gia allou</title> <rate>15</rate> </album> <album> <title>AEK</title> <rate>15</rate> </album> <album> <title>123456</title> <rate>15</rate> </album> <album> <title>654321</title> <rate>15</rate> </album> <album> <title>123456789</title> <rate>15</rate> </album> <album> <title>65497</title> <rate>15</rate> </album><album> <title>445588558899</title> <rate>15</rate> </album> </vote> Αν ξαναστείλω τις ίδιες τιμές τότε θα έχω πάλι τα ίδια αλλά από δύο φορές
geomagas Δημοσ. 7 Ιουλίου 2014 Δημοσ. 7 Ιουλίου 2014 Τώρα άλλαξες θέμα όμως! Μιλάμε για τη δημιουργία του xml ή για την επεξεργασία του; Μπερδεύτηκα! Και όμως έχεις δίκιο το -- φταίει για το error αλλά και πάλι αυτά εδώ if ($xml->album[$i]->title == $choices[$x]) {$xml->album[$i]->rate = (int)$xml->album[$i]->rate + 15; δεν τρέχουν ποτέ! Το if δεν τρέχει ή το then?
rafinos Δημοσ. 7 Ιουλίου 2014 Μέλος Δημοσ. 7 Ιουλίου 2014 Το xml υπάρχει εξ αρχής απλώς είναι έτσι... <?xml version="1.0" encoding="UTF-8"?> <vote> </vote> Εν συνεχεία προσθέτω κτλ Δεν μπορώ να καταλάβω τι ακριβώς από τα δύο δεν τρέχει.... όσες δοκιμές και αν έκανα κάθε φορά με μπέρδευε περισσότερο... Γιατί μόλις το έκανα ("rafinos" == $choices[$x]) { και ξανάτρεξα το όλο θέμα με rafinos μέσα το rate έγινε 30
rafinos Δημοσ. 7 Ιουλίου 2014 Μέλος Δημοσ. 7 Ιουλίου 2014 Νομίζω ότι το έκανα <?php header("Content-type: text/html;charset=UTF-8"); if($_POST['submit']){ $choices = []; $choices_length = count($_POST['choices']); $remove_pos = []; $counter = 0; for($i = 0; $i<$choices_length; $i++){ echo $_POST['choices'][$i]." <br />"; $choices[$i] = $_POST['choices'][$i]; } $xml=simplexml_load_file("test.xml"); //echo $xml->album[0]->title; if(count($xml->album) > 0){ for($x=0; $x<$choices_length; $x++){ for($i=0; $i<count($xml->album); $i++){ if ((string)$xml->album[$i]->title == $choices[$x]) { $xml->album[$i]->rate = (int)$xml->album[$i]->rate + 15; $remove_pos[$counter] = $x; $counter++; } } } } for($i=0; $i<$counter; $i++){ unset($choices[$remove_pos[$i]]); } $choices_length = count($choices); for($i=0; $i<$choices_length; $i++){ $temp_xml = $xml->addchild('album'); $temp_xml->addchild('title', $choices[$i]); $temp_xml->addchild('rate','15'); } $xml->asXML("test.xml"); } ?>
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα