2017-04-18 6 views
0

Vielleicht stelle ich nicht die richtige Frage, aber ich muss etwas Einfaches vermissen. Meine Kurzcodes werden angezeigt, wenn ich eine Sportgruppe, sagen wir "NFL", auf einer Seite plaziere, aber sobald ich eine zweite Sportgruppe hinzufüge, sagen wir "Baseball", die generierten Tabellen, die die drei Arten von Daten anzeigen ($ data_type == "aktuell", $ data_type == "zurück", $ data_type == "detailliert") in der php-Datei memberresults-Funktion, die ich unten für diese Sportgruppe angegeben habe, wird nicht angezeigt. Außerdem werden die Daten, die für die erste Gruppe von Funktionscodes, in diesem Fall "NFL", erzeugt werden, zufällig aus einer der Gruppen/Sportarten ausgewählt.Code-Konflikt. Wie kann ich jede Gruppe unabhängig voneinander laden?

Wie kann ich alle diese Kurzcodes abrufen, um die 3 Datentypen pro Sport alle auf einer Seite anzuzeigen und zu laden, ohne dass sie miteinander in Konflikt stehen? Um zu sehen, was auf der Seite selbst passiert, kannst du hier nach dem Login gehen: https://wsplays-members.com/short-code-test/ Login mit diesem temporären Benutzernamen "test" Passwort "password". Als Referenz werde ich meinen Code unten anzeigen. Vielen Dank im Voraus.

Short Code eingegeben in Wordpress Seite

[get_biddata type='current' sport='NFL Football'] 
[get_biddata type='past' sport='NFL Football'] 
[get_biddata type='detailed' sport='NFL Football'] 

[get_biddata type='current' sport='NCAA Football'] 
[get_biddata type='past' sport='NCAA Football'] 
[get_biddata type='detailed' sport='NCAA Football'] 

[get_biddata type='current' sport='CFL Football'] 
[get_biddata type='past' sport='CFL Football'] 
[get_biddata type='detailed' sport='CFL Football'] 

[get_biddata type='current' sport='NBA Basketball'] 
[get_biddata type='past' sport='NBA Basketball'] 
[get_biddata type='detailed' sport='NBA Basketball'] 

[get_biddata type='current' sport='NCAA Basketball'] 
[get_biddata type='past' sport='NCAA Basketball'] 
[get_biddata type='detailed' sport='NCAA Basketball'] 

[get_biddata type='current' sport='MLB Baseball'] 
[get_biddata type='past' sport='MLB Baseball'] 
[get_biddata type='detailed' sport='MLB Baseball'] 

PHP-Datei memberresults

funktionieren
<?php 
function memberresults($sport_val,$data_type){ 
global $wpdb; 
    $bidsys_options = get_option('bidsys_options'); 
    for($i=1;$i<11;$i++){ 
     if($bidsys_options->sportsstatus[$i]!="Disabled"){ 
      if($sport_val==$bidsys_options->sportsname[$i]) 
      $sport = $i; 
    }} 
    $user = get_current_user_id(); 
    $currentsportaccess = get_user_meta($user,"sport_".$sport ,true); 
    if($currentsportaccess=="No"){ 
     ?> 
     <div class="pmpro_content_message">Your access plan is valid but does not give you access to view this section.<br /> You may <a href="<?=home_url();?>/purchase/">purchase another access plan here</a>.</div> 
     <?php 

    } else { 


    if($data_type=="current"){ 
     if (pmpro_hasMembershipLevel()) { 
    ?> 
    <script type='text/javascript'> 
jQuery(document).ready(function(){ 
    memberresults("current","<?php echo $sport;?>",""); 
}); 
</script> 
<h1 class="post-title"><?php echo $sport_val; ?> Picks</h1> 
<h2 class="post-title">Current Season</h2> 
<table class='inner_result'> 
<td colspan='5' > 
<table id='member_<?=$data_type;?>season_vals_inner' class='hdr_3 inner_result'> 
</table> 
</td> 
</table> 
    <?php 
     } else { 

      ?> 
     <h1 class="post-title"><?php echo $sport_val; ?> Picks</h1> 
     <h2 class="post-title">Current Season Record</h2> 
     <div class="pmpro_content_message">You must be logged in to view this section. Please <a href="<?=home_url();?>/login/">log in</a> or <a href="<?=home_url();?>/register/">register here</a>.</div> 
     <?php 

     } 
    } else if($data_type=="past"){ 
    if (pmpro_hasMembershipLevel()) { 

    $result = "SELECT * FROM ".$wpdb->prefix."bidsys_sport_seasons WHERE sport= '".$sport."' AND current_season = 'NO' ORDER BY start_date DESC"; 
    $newmeta = $wpdb->get_results($result); 
    ?> 
<script type='text/javascript'> 
jQuery(document).ready(function(){ 
    memberresults("past","<?php echo $sport;?>","season_<?php echo $newmeta[0]->id;?>"); 
}); 
</script> 
<h1 class="post-title"><?php echo $sport_val; ?> Picks</h1> 
<h2 class="post-title">Previous Seasons</h2> 
    <form action='' method='post' class="f_p_filter_frm outside_table"> 
    <select name='f_p_filter' class="f_p_filter" onchange='memberresults("past","<?php echo $sport; ?>",this.value)' > 
    <?php $i = 0; foreach($newmeta as $seasons){ 
     if($i == 0){ $sel = 'selected=""'; } else { $sel = ""; } 
     ?> 
    <option value='season_<?php echo $seasons->id;?>' <?php echo $sel;?>><?php echo $seasons->season_name;?></option> 
    <?php $i++; } ?> 
    </select> 
    </form> 

<table class='inner_result'> 
<td colspan='5' > 
<table id='member_<?=$data_type;?>season_vals_inner' class='hdr_3'> 
</table> 
</td> 
</table> 
    <?php 
     } else { 

      ?> 
     <h1 class="post-title"><?php echo $sport_val; ?> Picks</h1> 
     <h2 class="post-title">Previous Seasons Records</h2> 
     <div class="pmpro_content_message">You must be logged in to view this section. Please <a href="<?=home_url();?>/login/">log in</a> or <a href="<?=home_url();?>/register/">register here</a>.</div> 
     <?php 

     } 

    } else if($data_type=="detailed"){ 
    if (pmpro_hasMembershipLevel()) { 
    ?> 
    <script type='text/javascript'> 
jQuery(document).ready(function(){ 
    memberresults("detailed","<?php echo $sport;?>","yesterday"); 
}); 
</script> 
<style> 
.imgwin { 
    background: url('/wp-content/plugins/bid-sys/customgif/winningPick.gif'); 
    height: 16px; width: 16px; margin:8px; 
} 
.imgloss { 
    background: url('/wp-content/plugins/bid-sys/customgif/losingPick.gif'); 
    height: 16px; width: 16px; margin:8px; 
} 
.imgpush { 
    background: url('/wp-content/plugins/bid-sys/customgif/pushedPick.gif'); 
    height: 16px; width: 16px; margin:8px; 
} 

</style> 
<h1 class="post-title"><?php echo $sport_val; ?> Picks</h1> 
<h2 class="post-title">Detailed History</h2> 
<form action='' method='post' class="f_p_filter_frm outside_table"> 
    <select name='f_p_filter' class="f_p_filter" onchange='memberresults("detailed","<?php echo $sport; ?>",this.value)' > 
    <?php 
    $result = "SELECT * FROM ".$wpdb->prefix."bidsys_sport_seasons WHERE sport= '".$sport."' AND current_season = 'NO' ORDER BY start_date DESC"; 
    $newmeta = $wpdb->get_results($result); 

    foreach($newmeta as $seasons){ 
     ?> 
    <option value='season_<?php echo $seasons->id;?>' ><?php echo $seasons->season_name;?></option> 
    <?php } 
    ?> 
    <option value='playoftheday30' >Play of the Day (L30 Days)</option> 
    <option value='playoftheday365' >Play of the Day (L365 Days)</option> 
    <option value='latebreakingplay30' >VIP Late Info Play (L30 Days)</option> 
    <option value='latebreakingplay365' >VIP Late Info Play (L365 Days)</option> 
    <option value='vipplays30' >VIP Plays (L30 Days)</option> 
    <option value='vipplays365' >VIP Plays (L365 Days)</option> 
    <option value='yesterday' selected="">Yesterday</option> 
    <!--<option value='thisweek' >This Week</option>--> 
    <option value='past7days' >Past 7 Days</option> 
    <!--<option value='thismonth' >This Month</option>--> 
    <option value='past30days' >Past 30 Days</option> 
    <!-- <option value='thisyear' >This Year</option> --> 
    <option value='current' >Current Season</option> 
    <option value='past365days' >Past 365 Days</option> 
    </select> 
    </form> 
<div style="width: 56px; float: right; background: #F8F8F8;"><img src="/wp-content/plugins/bid-sys/customgif/pushedPick.gif" /> Push</div><div style=" margin: -2px 3% 0; padding-bottom: 2px; float: right;">|</div> 
<div style="width: 56px; float: right; background: #F8F8F8;"><img src="/wp-content/plugins/bid-sys/customgif/losingPick.gif" /> Loss</div><div style=" margin: -2px 3% 0; padding-bottom: 2px; float: right;">|</div> 
<div style="width: 48px; float: right; background: #F8F8F8;"><img src="/wp-content/plugins/bid-sys/customgif/winningPick.gif" /> Win</div> 
<table class='inner_result detailed_history'> 
<tr class="hdr_2"> 
<td>Game Date</td> 
<td colspan="2">Game/Pick Details</td> 
<td>Result</td> 
<td>Unit Change</td> 
</tr> 
<table id='member_<?=$data_type;?>season_vals_inner' class='hdr_3'> 
</table> 
</table> 
    <?php 
     } else { 

      ?> 
     <h1 class="post-title"><?php echo $sport_val; ?> Picks</h1> 
     <h2 class="post-title">Detailed History</h2> 
     <div class="pmpro_content_message">You must be logged in to view this section. Please <a href="<?=home_url();?>/login/">log in</a> or <a href="<?=home_url();?>/register/">register here</a>.</div> 
     <?php 

     } 

    } else if($data_type=="pending"){ 
     if (pmpro_hasMembershipLevel()) { 
    ?> 
<script type='text/javascript'> 
jQuery(document).ready(function(){ 
    memberresults("pending","<?php echo $sport;?>",""); 
}); 
</script> 
<h1 class="post-title">Today's <?php echo $sport_val; ?> Picks</h1> 
<table id='member_<?=$data_type;?>season_vals_inner' class='hdr_3'> 
</table> 
    <?php 
     } 
     } else if($data_type=="unauthorized"){ 
      if (pmpro_hasMembershipLevel()) { 
     ?> 
<h1 class="post-title">Today's <?php echo $sport_val; ?> Picks</h1> 
<div class="members-only"> 
Picks posted here are for <strong>PAID MEMBERS ONLY</strong>.<br> Your current membership level is not authorized to view this section.</strong><br> <a href="<?=home_url();?>/subscription-options/">Click Here</a> to upgrade your membership and view today's <?php echo $sport_val; ?> picks.</p></div> 
     <?php 
     } 
     } 

     else if($data_type=="defaultMessage"){ 
      if (pmpro_hasMembershipLevel()) { 
     ?> 
     <!--INTENTIONALLY LEFT BLANK SO WHEN A MEMBER LOGS IN THE MESSAGE BELOW DISAPPEARS--> 
     <?php 

     } else { 

     ?> 
<div class="loggedout-members-only"> 
<p>Picks posted here are for <strong>PAID MEMBERS ONLY</strong>.<br> 
<a href="http://wsplays-members.com/login/">Log In</a> &nbsp;-<strong>or</strong>-&nbsp; <a href="http://wsplays-members.com/subscription-options/">View/Purchase Subscriptions Here</a>.</p> 
<p><a href="http://wsplays-members.com/membership-account/membership-checkout/?level=23">Click Here</a> to register for <strong>FREE PICKS</strong> and gain <strong>FREE ACCESS</strong><br> to our Pick History &amp; Detailed Records </p> 
</div> 
     <?php 
     } 
     } 
    } 
} 
?> 

PHP-Datei Short

include('ajax_member_support.php'); 
function ajax_member_support($atts) { 
    extract(shortcode_atts(array(
     'sport' => '', 
     'type' => '', 
    ), $atts)); 

    $sport_val = $sport; 
    $data_type = $type; 

ob_start(); 
memberresults($sport_val,$data_type); 
$output_string=ob_get_contents();; 
ob_end_clean(); 

return $output_string; 

} 
add_shortcode('get_biddata', 'ajax_member_support'); 

Javascript

Datei 210

Antwort

1

Das Problem ist, dass das Plugin Tabellen-IDs member_currentseason_vals_inner, member_pastseason_vals_inner usw. erstellt. Das Rendern 6 von jedem bedeutet 6 doppelte IDs, während IDs eindeutig sein sollten! Der Ajax legt sein Ergebnis in die erste Tabelle, die er mit dieser ID findet, so dass alle Ergebnisse in die "NFL Football" -Tabellen gehen.

Die Zufälligkeit, die Sie sehen, ist, weil für jedes Sport die Mitgliederergebnisse separat über Ajax abgerufen werden, die asynchron ist, dh der Inhalt wird so wiedergegeben, wie es im Browser ankommt. Irgendwelche der Ergebnisse können zuletzt ankommen, und das sehen Sie in den NFL-Tabellen.

Dies könnte mit einem Wrapper behoben werden, der als Kontext für js/jquery dient, um die richtige Tabelle zu finden, aber es ist besser, die eindeutigen IDs zu reparieren. Da ich glaube nicht, dass Sie wollen, dass jeder Sport mehr als einmal angezeigt wird, schlage ich vor, die Nummer des php $sport an die Tabellen-IDs anzuhängen und die js anzupassen, um das zu verwenden. Das js memberresults() erhält diese Nummer bereits als zweiten Parameter.

in der PHP memberresults Funktion ändern, um die folgende Zeile, 4mal:

<table id='member_<?=$data_type;?>season_vals_inner' class='hdr_3 inner_result'> 

zu:

<table id='member_<?=$data_type;?>season_vals_inner<?=$sport;?>' class='hdr_3 inner_result'> 

in der JavaScript memberresults folgende Änderung, 2mal:

jQuery("#member_" + seasontype + "season_vals_inner").html ... 

zu:

jQuery("#member_" + seasontype + "season_vals_inner" + sport).html ... 
+0

JA! Danke dass du dir die Zeit nimmst! Das hat den Trick gemacht. Habe viel daraus gelernt. Nochmals, sehr geschätzt :) – kma1289

Verwandte Themen