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

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

Δημοσ.

Γεια σας!

Υπάρχει τρόπος να πάρω τα στοιχεία από ένα αρχείο text και να τα περάσω σε μορφή object array της javascript;

 

Ο πίνακας θέλω να είναι της μορφής {"artist":"blah blah,"albul":"blah ble"} ...

 

Αν γίνεται αυτό, τότε πώς γίνεται;

Και πως πρέπει να είναι τα δεδομένα μέσα στο text αρχείο;

Δημοσ.

Για την καλύτερη λύση, πες πρώτα που βρίσκονται αρχικά τα δεδομένα που θα χρησιμοποιείς. Αν απλά τα φτιάχνεις μόνος σου, δεν καταλαβαίνω γιατί να μη φτιάξεις απευθείας ένα .js file με έτοιμα objects? (ανάλογα και με τον όγκο δεδομένων, ίσως περισσότερα από ένα που θα ζητάς όταν χρειάζεται).

Δημοσ.

Το αρχείο text που βρίσκετα; Στον server και θέλεις να το μετατρέψεις σε JSON και να το στείλεις στον client;

 

Edit: Τα μεγάλα πνεύματα... ;) :D

Δημοσ.

Αρχικά το αρχείο δεν θα έχει καν τιμές ... (θα χρησιμοποιηθεί και php για να γεμίζει το αρχείο :P)

Θα υπάρχει μια φόρμα με αρκετά text boxes και θα γίνεται κάτι σαν ψηφοφορία... για albums στην προκειμένη περίπτωση.

Αν υπάρχει ήδη στο αρχείο το album θα το εμφανίζει το autocomplete και θα αλλάζει μόνο η ψήφος (πρόσθεση κατά κύριο λόγο :P)

διαφορετικά θα γίνεται νέα προσθήκη στο αρχείο.

 

Εντάξει ξέρω ότι είναι κάπως περίπλοκο (κοιτάω μήπως γίνει με xml αν και στο τέλος θα το κάνω με mysql να ησυχάσει το κεφάλι μου :P)

Δημοσ.

Αν θέλεις η φόρμα σου να αποθηκεύει τα δεδομένα σε αρχείο text, νομίζω η μορφή csv θα σε βολέψει καλύτερα από τις εναλλακτικές (αν και το xml είναι μία καλύτερη λύση, αλλά πλεον σταματάμε να μιλάμε για text files καθεαυτά).

 

Ένα csv τώρα μετατρέπεται σχετικά εύκολα σε JSON.

Δημοσ.

Από τη στιγμή που το xml είναι καλύτερη λύση τότε θα χρησιμοποιήσουμε αυτή... το αρχείο κειμένου τελικά δεν μου φαίνεται τόσο καλή επιλογή γιατί δεν είναι και τόσο οργανωμένο όσο θα ήθελα ;)

 

Ευχαριστώ πάντως :D

 

(καλά σε λίγο θα επανέλθω με πρόβληματα περί xml αχαχαχαχα :P)

Δημοσ.

Μισό... θα το φτιάχνεις λες με 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, μην κάνεις τα εύκολα δύσκολα.

Δημοσ.

Παιδιά τελικά άρχισα να το κάνω με xml... αλλά έχω ένα πρόβλημα... και πιθανότατα δεν είναι με το xml :P

	$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

Δημοσ.

Καθώς γίνεται unset το κελί δεν πηγαίνει και μια θέση πίσω το επόμενο κελί;

Αλλά και πάλι το πρόβλημα εκεί υπάρχει και αν βγάλω το $x-- και γενικότερα όλα τα -- :P

 

Και όμως έχεις δίκιο το -- φταίει για το error αλλά και πάλι αυτά εδώ

 

if ($xml->album[$i]->title == $choices[$x]) {
$xml->album[$i]->rate = (int)$xml->album[$i]->rate + 15;

 

δεν τρέχουν ποτέ!

Δημοσ.

Περίμενε να σας δώσω πρώτα ολόκληρο τον κώδικα :P

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>

Αν ξαναστείλω τις ίδιες τιμές τότε θα έχω πάλι τα ίδια αλλά από δύο φορές :P

Δημοσ.

Τώρα άλλαξες θέμα όμως! Μιλάμε για τη δημιουργία του xml ή για την επεξεργασία του;

Μπερδεύτηκα!


Και όμως έχεις δίκιο το -- φταίει για το error αλλά και πάλι αυτά εδώ

 

if ($xml->album[$i]->title == $choices[$x]) {
$xml->album[$i]->rate = (int)$xml->album[$i]->rate + 15;

 

δεν τρέχουν ποτέ!

 

Το if δεν τρέχει ή το then?

Δημοσ.

Το xml υπάρχει εξ αρχής απλώς είναι έτσι...

<?xml version="1.0" encoding="UTF-8"?>
<vote>
</vote>

Εν συνεχεία προσθέτω κτλ :P

 

Δεν μπορώ να καταλάβω τι ακριβώς από τα δύο δεν τρέχει.... όσες δοκιμές και αν έκανα κάθε φορά με μπέρδευε περισσότερο...

 

Γιατί μόλις το έκανα ("rafinos" == $choices[$x]) { και ξανάτρεξα το όλο θέμα με rafinos μέσα το rate έγινε 30

Δημοσ.

Νομίζω ότι το έκανα :D

<?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");
	
}
?>

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

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

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

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

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

Σύνδεση

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

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