Αντιστοίχηση id με άρθα

Κώδικας, πληροφορίες, ερωτήσεις και απαντήσεις σχετικές με την JavaScript.

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
Άβαταρ μέλους
dj_kostas_pro
Δημοσιεύσεις: 210
Εγγραφή: 10 Οκτ 2007 16:54
Τοποθεσία: Πιερία

Αντιστοίχηση id με άρθα

Δημοσίευση από dj_kostas_pro » 07 Νοέμ 2014 20:59

Γειά σας.

Θα ήθελα την βοήθεια σας για το παρακάτω εγχείρημα μου.
Δεν είμαι επαγγελματίας απλά ψάχνομαι και μαθαίνω οπότε μπορεί ο κώδικας παρακάτω να έχει λάθη αλλά λειτουργεί για την δουλειά μου.

Αυτός είναι ο κώδικας.

Κώδικας: Επιλογή όλων

	$(function(){
		setSurface();
		var oRefresh;
		oRefresh = window.setInterval("RefreshTitles()", 25000);
	});

	function setSurface(){
		RefreshTitles();
	}

	function addTimeStamp(){
		tstmp = new Date();    
		return tstmp.getTime();
	}

	function RefreshTitles(){   
	  $.ajax({
		type: "GET",
		url&#58; "<?php echo get_template_directory_uri&#40;&#41;; ?>/script/jazler/NowOnAir.xml?timestamp="+addTimeStamp&#40;&#41;,
		dataType&#58; "xml",
		success&#58; ShowNowOnAir
	  &#125;&#41;;
	  
	  $.ajax&#40;&#123;
		type&#58; "GET",
		url&#58; "<?php echo get_template_directory_uri&#40;&#41;; ?>/script/jazler/AirPlayHistory.xml?timestamp="+addTimeStamp&#40;&#41;,
		dataType&#58; "xml",
		success&#58; ShowAirPlayHistory
	  &#125;&#41;;
	  
	  $.ajax&#40;&#123;
		type&#58; "GET",
		url&#58; "<?php echo get_template_directory_uri&#40;&#41;; ?>/script/jazler/AirPlayNext.xml?timestamp="+addTimeStamp&#40;&#41;,
		dataType&#58; "xml",
		success&#58; ShowAirPlayNext
	  &#125;&#41;;
	&#125;

	function ShowAirPlayNext&#40;xml&#41;&#123;
		var tmpNextSongs="";

		$&#40;xml&#41;.find&#40;"Song"&#41;.each&#40;function&#40;&#41;
		&#123;
			tmpNextSongs = tmpNextSongs + $&#40;this&#41;.find&#40;"Info"&#41;.attr&#40;"JazlerID"&#41;+ "<br>";
		&#125;&#41;;
		$&#40;"#nextid"&#41;.html&#40;tmpNextSongs&#41;;
	&#125;


	function ShowNowOnAir&#40;xml&#41;&#123;
		$&#40;xml&#41;.find&#40;"Song"&#41;.each&#40;function&#40;&#41;&#123;
			$&#40;"#jaznowonairid"&#41;.html&#40;$&#40;this&#41;.find&#40;"Jazler"&#41;.attr&#40;"ID"&#41;&#41;;
		&#125;&#41;;
	&#125;


	function ShowAirPlayHistory&#40;xml&#41;&#123;
		var tmpLastSongs="";
		$&#40;xml&#41;.find&#40;"Song"&#41;.each&#40;function&#40;&#41;&#123;
			tmpLastSongs = tmpLastSongs + $&#40;this&#41;.find&#40;"Info"&#41;.attr&#40;"JazlerID"&#41;+ "<br>";
		&#125;&#41;;
		$&#40;"#lastsongs"&#41;.html&#40;tmpLastSongs&#41;;
	&#125;
Στην ουσία παίρνει το τραγούδι από τα xml και τα εκτυπώνει στην σελίδα μου. Στο συγκεκριμένο κώδικα τραβάω το id δηλαδή τον μοναδικό αριθμό που έχει το κάθε τραγούδι μέσα στο πρόγραμμα για το εγχείρημα που θέλω να κάνω.

Όλα δουλεύουν ρολόι οπότε σκέφτηκα να το πάω ένα επίπεδο παραπάνω...

Η ιστοσελίδα μου είναι φτιαγμένη στην πλατφόρμα Wordpress οπότε σκέφτηκα γιατί να μην τραβάω τα στοιχεία του κάθε τραγουδιού μέσα από τα άρθρα που δημοσιεύονται για το κάθε τραγούδι ξεχωριστά. Αυτό θα έχει σαν αποτέλεσμα να μπορώ να τραβάω τον τίτλο του τραγουδιού στα Ελληνικά (όπως είναι γραμμένος στο άρθρο) επίσης θα μπορώ να τραβάω τους στίχους το εξώφυλλο και πολλές άλλε πληροφορίες...

Στην ουσία θα πρέπει το κάθε id του τραγουδιού να αντιστοιχείτε με το id του άρθρου (τραγουδιού).

Εδώ αρχίζουν τα προβλήματα.
1) Με την if else θα πρέπει να καταχωρώ κάθε φορά το id του τραγουδιού και το id του άρθρου (για να γίνεται η αντιστοίχηση). Αλλά η βάση των τραγουδιών μέσα στο πρόγραμμα είναι 2000 τραγούδια οπότε εάν το αρχείο που θα έχει 2000 else if θα έχει πρόβλημα στην αντιστοίχηση λόγο του μεγάλου όγκου?

2)Μετά πάμε στο θέμα ότι πως θα γίνει η αντικατάσταση του id του τραγουδιού και του id του άρθρου μιας και υπάρχουν 3 xml (1ο για το επόμενο 2ο το τραγούδι που παίζει τώρα 3ο τι τραγούδι παίχτηκε).

3) Εκτός αυτών τα 2 xml έχουν πολλά τραγούδια πως θα μπορέσω να εμφανίζω ένα ένα ξεχωριστά τα id των τραγουδιών και όχι όλα μαζί όπως τα κάνει τώρα ο κώδικας.

Κώδικας: Επιλογή όλων

<Event status="happened"><Song title="IDIA MATIA"><Artist name="ANASTASIADHS" ID="335763">
   </Artist><Info StartTime="19&#58;45&#58;17" JazlerID="3881" PlayListerID=""/></Song><Song title="Casablanca"><Artist name="Low Deep T" ID="336487">
   </Artist><Info StartTime="19&#58;48&#58;39" JazlerID="3766" PlayListerID=""/></Song><Song title="Pedio Maxis"><Artist name="VEGKAS" ID="335766">
   </Artist><Info StartTime="19&#58;52&#58;25" JazlerID="3644" PlayListerID=""/></Song><Song title="KATI THA SYMVEI"><Artist name="EYSTATHIA" ID="336538">
   </Artist><Info StartTime="19&#58;56&#58;05" JazlerID="3865" PlayListerID=""/></Song><Song title="TI HMOYNA GIA SENA"><Artist name="REMOS" ID="336170">
   </Artist><Info StartTime="20&#58;05&#58;14" JazlerID="3938" PlayListerID=""/></Song><Song title="THELO NA ME NIOSEIS"><Artist name="VERTHS" ID="335890">
   </Artist><Info StartTime="20&#58;07&#58;56" JazlerID="3947" PlayListerID=""/></Song><Song title="ELA KONTA"><Artist name="VANDH" ID="335690">
</Event>
Επειδή η ιδέα είναι δύσκολο να αποτυπωθεί από το μυαλό στο κομπιούτερ εάν θεωρείται ότι πρέπει να αλλάξω στο κείμενο κάτι για να είναι πιο κατανοητό στείλτε μου μνμ.

Άβαταρ μέλους
giannis17
Honorary Member
Δημοσιεύσεις: 1215
Εγγραφή: 06 Ιαν 2005 19:50
Τοποθεσία: Παγκράτι - Αθήνα
Επικοινωνία:

Αντιστοίχηση id με άρθα

Δημοσίευση από giannis17 » 08 Νοέμ 2014 02:28

Υπάρχει πολύ πιο εύκολος τρόπος από αυτό.

Σε κάθε article μπορείς να προσθέσεις custom fields. Θα φτιάξεις ένα custom field "song" και στο value θα βάλεις το ID του τραγουδιού που θες.

Έπειτα με τον παρακάτω κώδικα μπορείς να πάρεις το ID του άρθρου στο θέμα σου με βάση το τραγούδι που θα του δώσεις.

Κώδικας: Επιλογή όλων

function getPostfromSong&#40;$song&#41;&#123;
  $q = 'SELECT ID FROM $wpdb->posts LEFT JOIN $wpdb->postmeta ON $wpdb->posts.ID = $wpdb->postmeta.post_id WHERE post_status = "publish" AND meta_key="song" AND meta_value="'.$song.'" LIMIT 1';
  return $wpdb->get_var&#40;$q&#41;;
&#125;
Το οποίο μπορείς να προσθέσεις στις functions του θέματος σου.
"There is only one problem with common sense; it’s not very common."
&#8211; Milt Bryce

Άβαταρ μέλους
dj_kostas_pro
Δημοσιεύσεις: 210
Εγγραφή: 10 Οκτ 2007 16:54
Τοποθεσία: Πιερία

Αντιστοίχηση id με άρθα

Δημοσίευση από dj_kostas_pro » 08 Νοέμ 2014 14:11

Έφαγα σκάλωμα ...

Οκ στο πεδίο που θα δημιουργήσω στο άρθρο με την ονομασία πχ jazlerid θα βάζω το id του τραγουδιού έτσι όπως είναι καταχωρημένο στο πρόγραμμα. (Eάν βάζω id απλά και μόνο για την αντιστοίχηση είναι δώρων άδωρον λόγο του ότι το κάθε άρθρο στο wordpress έχει δικό του μοναδικό id).

Το θέμα είναι όμως πως μέσω του jazlerid θα τραβάω τον τίτλο κτλ του άρθρου μιας και ο κώδικας για να τα εμφανίζω χρειάζεται το id του άρθρου και όχι το id του πεδίου που έχω δημιουργήσει. Στην ουσία πως με το εντοπίζει το id του jazlerid να μου δίνει σαν αποτέλεσμα το id του άρθρου για να τραβήξω τα στοιχεία...

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

Άβαταρ μέλους
giannis17
Honorary Member
Δημοσιεύσεις: 1215
Εγγραφή: 06 Ιαν 2005 19:50
Τοποθεσία: Παγκράτι - Αθήνα
Επικοινωνία:

Αντιστοίχηση id με άρθα

Δημοσίευση από giannis17 » 08 Νοέμ 2014 14:24

Επειδή προφανώς δεν θα είναι όλα τα άρθρα περιγραφές τραγουδιών αλλά θα έχεις και νέα κ.α. για αυτό πρότεινα να το κάνεις με custom field. Επίσης το ID του άρθρου χρησιμοποιείται σε 3-4 πίνακες οπότε το να κάνεις τα άρθρα να παίρνουν το ID του τραγουδιού από το jazτέτοιο δεν είναι η καλύτερη λύση (κάτι σίγουρα κάποια στιγμή θα πάει στραβά).

Αν έχεις δυνατότητα να αλλάξεις το id στα τραγούδια με βάση τα άρθρα μπορεί να γίνει κάποιο αυτοματοποιημένο script σε python εφόσον ο τίτλος του άρθρου είναι ΙΔΙΟΣ με τον τίτλο του τραγουδιού και το jazτέτοιο χρησιμοποιεί κάποιο XML, sqllite, access που αποθηκεύει αυτές τις πληροφορίες και φυσικά αν έχεις και ελληνικά τραγούδια (η γενικά τίτλους που δεν είναι στα αγγλικά) τότε εκεί θα παίξουν και προβλήματα με το encoding.

Από ότι κατάλαβες δεν γνωρίζω πως λειτουργεί το πρόγραμμα που παίζεις μουσική οπότε αν χρειαστείς περαιτέρω βοήθεια θα χρειαστεί αν μας δείξεις κάποια live παραδείγματα.
"There is only one problem with common sense; it’s not very common."
&#8211; Milt Bryce

Άβαταρ μέλους
dj_kostas_pro
Δημοσιεύσεις: 210
Εγγραφή: 10 Οκτ 2007 16:54
Τοποθεσία: Πιερία

Αντιστοίχηση id με άρθα

Δημοσίευση από dj_kostas_pro » 08 Νοέμ 2014 14:43

Εδώ είναι το αρχείο που μου δίνει το πρόγραμμα με το τραγούδι που παίζει τώρα.

Κώδικας: Επιλογή όλων

<Schedule System="Jazler">
  <Event status="happening" startTime="14&#58;29&#58;42" eventType="song">
  <Announcement Display=""/>
    <Song title="KENO">
      <Artist name="REK"></Artist>
      <Jazler ID="3577"/>
      <PlayLister ID=""/>
      <Media runTime="00&#58;03&#58;05"/>
      <Expire Time="14&#58;32&#58;47"/>
    </Song>
  </Event>
</Schedule>
Επειδή από ότι κατάλαβα για να γίνει κάτι τέτοιο είναι πολύ περίπλοκο θέλει να αρχίσω να μαθαίνω περισσότερο javascript και php γιατί μπαίνουμε σε λημέρια που αρχίζω να χάνω τα αυγά και τα πασχάλια...

Απάντηση

Επιστροφή στο “JavaScript και Frameworks”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 2 επισκέπτες