Rajouter une ligne a un tableau dans wordpress

Résolu/Fermé
hypo - 30 nov. 2020 à 08:04
 hypo - 30 nov. 2020 à 09:03
Bonjour,

Alors j'ai un formulaire qui est sensé rajouter une ligne dans la liste de mes sliders avec ajax,
J'arrive bien a la créer dans ma BDD mais je n'arrive pas a l'afficher directement dans ma page de gestion de slider:

mon code:

PHP:

function Netlib_add_slider(){
	check_ajax_referer( 'Netlib' );
	require_once plugin_dir_path( __FILE__ ) . 'admin/class/Manage_sliders.php';
	if (isset($_POST['slider_datas'])){
		$tab = array();
		foreach ($_POST['slider_datas'] as $datasArray) {
			$tab[$datasArray['name']] = $datasArray['value'];
		}
		$newSliderId = Manage_sliders::add_slider($tab['slider_name'], $tab['slider_type'], $tab['slider_cat']);
		$newTabRow = '<tr data-index="'.$newSliderId.'" data-position="0">
										<td>'.$newSliderId.'</td>
										<td>'.$tab['slider_name'].'</td>
										<td>'.$tab['slider_type'].'</td>
										<td>'.$tab['slider_cat'].'</td>
										<td>1</td>
										<td>0</td>
									</tr>';
		echo $newTabRow;
	}
}


JS:
$(document).ready(function (){
    $('form.Netlib_addslider').on('submit', function (e) {
      var slider_datas = $( this ).serializeArray();
      e.preventDefault();
      $.ajax({
        type: 'post',
        url: netlib_custom_ajax.ajax_url,
        dataType: 'text',
        data: {
          slider_datas: slider_datas,
          _ajax_nonce: netlib_custom_ajax.nonce,
          action: 'Netlib_add_slider'
        },
        success: function (response) {
          $('#sliders tbody tr:last').append(response);
          console.log(response);
        }
      });
    });
  });


HTML:

<table class="table" id="sliders">
      <thead>
        <tr>
          <th scope="col">#</th>
          <th scope="col">Nom</th>
          <th scope="col">Type</th>
          <th scope="col">Categorie de Produits</th>
          <th scope="col">Status</th>
        </tr>
      </thead>
      <tbody>
        <ul id="sliders" class="list-group">
          <?php
            foreach($sliders as $slider) {
              echo '<tr data-index="'.$slider->id.'" data-position="'.$slider->Position.'">';
              foreach($slider as $val){
                echo '<td>'.$val;
              }
              echo '</tr>';
            }
          ?>
        </ul>
      </tbody>
    </table>

    <form method="post" class="Netlib_addslider">
      <div class="row">
        <div class="col">
          <input type="text" class="form-control" placeholder="Nom ou text de présentation du slider" name="slider_name">
        </div>
        <div class="col">
          <select class="custom-select mr-sm-2" name="slider_type">
            <option selected>Type de Slider</option>
            <option value="1">Livres</option>
            <option value="2">Papeterie</option>
            <option value="3">Presse</option>
          </select>
        </div>
        <div class="col">
          <input type="text" class="form-control" placeholder="ID de la categorie de produits a afficher" name="slider_cat">
        </div>
        <div class="col">
          <input type="submit" name="creat_slider" value="Créer">
        </div>
      </div>
    </form>



Donc le but est d'ajouter une ligne a la fin du tableau "sliders". Dans mon JS le console.log(response) revois bien la nouvelle ligne, mais pour une raison qui m'est inconnue le $('#sliders tbody tr:last').append(response); ne fonctionne pas.

Merci de votre aide !
Configuration: Windows / Firefox 84.0
A voir également:

1 réponse

jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 717
30 nov. 2020 à 08:36
Bonjour

L'append, tu veux le faire sur le tableau pour ajouter une ligne ?
Et donc pas sur la dernière ligne, lui ajouter du contenu...

ça serait donc plutot
$('#sliders tbody').append(response);


de plus, ton UL n'a rien à faire là....
ce n'est pas la strucutre "normale" d'un tableau...
Soit tu fais une liste ( ul li )
soit tu fais un tableau ...


1
Oh mince sérieux, c'etait l'ul qui merdé, merci du coups de pouce !
0