Page 1 sur 1

Probleme d'afichage au premier chargement d'une page (methode ajax de jquery)

Posté : 22 juil. 2016, 11:51
par floflo
Bonjour,

j'utilise la methode $_POST en ajax de query pour mes fonctionnalités de recherches sur un tableau.

Mon problème c est que je n'arrive pas à charger initialement la liste de toute les données dans mon tableau au premier chargement. Je souhaiterait que toutes les infos s'affiche dans mon tableau avant que l'utilisateur fasse des recherches.

Pouvez vous m'eclairer??
Ci dessous mes 2 fichier
fichier de traitement avec mes requête vers ma bdd
<?php
if(isset($_POST)) {
 
    include_once("_secure3.php");
    $today = date("Y-m-d");
 
    var_dump($_POST);
    if (!empty($_POST) && $_POST != "ras") {
//        $req = 'SELECT * FROM mould WHERE';
        $req = 'SELECT mould.id_mould AS idm,type,part_number,tool_number,place,status,cycle_quantity,last_use,customer_code,storage_date,alert15m,alert18m,MAX(first_alert_mail_date) AS maxfirst,MAX(last_email_alert_date) AS maxlast,MAX(email_invoice_date) AS maxemail_invoice,tool_number FROM mould LEFT JOIN invoice ON mould.id_mould=invoice.id_mould WHERE';
        foreach ($_POST as $keyliste => $liste) {
            if (is_array($liste) && count($liste) > 0)
            {
 
                foreach ($liste as $val) {
 
                    $verif = trim($val);
 
                    if ($verif != "ras") {
                        $req .= ' ( ' . $keyliste . '  LIKE  '. "'%".$verif."%') ";
//                        $req .= ' ' . $keyliste . '="' . $verif . '"';
                        $req .= " AND";
 
                    } else if ($verif == "ras") {
 
                        $req .= "";
 
 
 
                    }else {
                        $req .= 'SELECT mould.id_mould AS idm,type,part_number,tool_number,place,status,cycle_quantity,last_use,customer_code,storage_date,alert15m,alert18m,MAX(first_alert_mail_date) AS maxfirst,MAX(last_email_alert_date) AS maxlast,MAX(email_invoice_date) AS maxemail_invoice,tool_number FROM mould LEFT JOIN invoice ON mould.id_mould=invoice.id_mould WHERE mould.actif=0 AND alert_process_inv=0 GROUP BY mould.id_mould  ORDER BY tool_number ASC';
 
                    }
 
                }
            }
//            else
//            {
////                $req .= ' mould.actif=0 AND alert_process_inv=0 GROUP BY mould.id_mould  ORDER BY tool_number ASC';
//            }
 
        }
//        $req .= 'AND';
        $req = rtrim($req, ' AND');
 
        $req .= ' AND alert_process_inv=0 GROUP BY mould.id_mould  ORDER BY tool_number ASC';
 
        var_dump($req);
 
    }
    elseif (empty($_POST))
    {
        $req = 'SELECT mould.id_mould AS idm,type,part_number,tool_number,place,status,cycle_quantity,last_use,customer_code,storage_date,alert15m,alert18m,MAX(first_alert_mail_date) AS maxfirst,MAX(last_email_alert_date) AS maxlast,MAX(email_invoice_date) AS maxemail_invoice,tool_number FROM mould LEFT JOIN invoice ON mould.id_mould=invoice.id_mould WHERE mould.actif=0 AND alert_process_inv=0 GROUP BY mould.id_mould  ORDER BY tool_number ASC';
 
    }
 
    else
    {
        $req = 'SELECT mould.id_mould AS idm,type,part_number,tool_number,place,status,cycle_quantity,last_use,customer_code,storage_date,alert15m,alert18m,MAX(first_alert_mail_date) AS maxfirst,MAX(last_email_alert_date) AS maxlast,MAX(email_invoice_date) AS maxemail_invoice,tool_number FROM mould LEFT JOIN invoice ON mould.id_mould=invoice.id_mould WHERE mould.actif=0 AND alert_process_inv=0 GROUP BY mould.id_mould  ORDER BY tool_number ASC';
 
    }
 
 
    $query = $mysqli->query($req);
 
    $nb = $query->num_rows;
    if ($nb > 0) {
 
        while($data = $query->fetch_array())
        {
et ci dessous mon fichier qui fait appel a mon fichier traitement
<?php
include_once("_secure3.php");
?>
<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title>Training</title>
    <link rel="stylesheet" type="text/css" href="style/style.css">
    <script src="js/jquery1.12.2-min.js"></script>
    <script>
        $(function(){
            //Variable pour la recherche (initialement on veut tout)
            var quoi = 'all';
 
            var requete;
 
            $("form").change(function(){
                var values = $(this).serialize();
 
                requete = $.ajax({
                    type:"POST",
                    url:"new_traitement_mould_list.php",
                    data:values,
                    success:function(data){
                        $("#colG").html(data);
                    }
                });
 
            });
        });
         
    </script>
</head>
 
<body>
<div id="superglobal">
<div id="global">
    <?php
        include_once("_menu_mould.php");
        ?>
        <div id="titre">
            <div id="titre2">
                <h2>MOLDS LIST</h2>
 
                <ul id="sous_menu">
                    <li id="recherche">
                    </li>
                </ul>
            </div>   
        </div>
 
    <form action="#">
 
<table class="status">
 
    <thead>
        <th><a href="#"title="tri" id="btnTool">Tool Number</a></th>
        <th><a href="#"title="tri" id="btnType">Type #</a></th>
        <th>Edit</th>
        <!--<th>Edit</th>-->
        <th><a href="#"title="tri" id="btnCustomercode">Customer Code #</a></th>
        <th><a href="#"title="tri" id="btnPartnumber">Part Number #</a></th>
        <th><a href="#"title="tri" id="btnPlace">Storage Place</a></th>
        <th><a href="#"title="tri" id="btnStatus">Mold Status</a></th>
        <th><a href="#"title="tri" id="btnLastuse">Last Use</a></th>
        <th><a href="#"title="tri" id="btnStoragedate">Storage Date</a></th>
        <th><a href="#"title="tri" id="btnAlarm15m">Invoice alarm +15 M</a></th>
        <th><a href="#"title="tri" id="btnAlarm18m">Invoice alarm +18 M</a></th>
        <th><a href="#"title="tri" id="btnCyclequantity">Production Quantity</a></th>
    </thead>
     
   <thead>
    <th>
        <input type="text" name="tool_number[]" id="tool_number1" placeholder="ex: DAN0801.T2">
    </th>
 
 
 
            <?php
 
 
            //Construire le select sans doublon
            $query  =   $mysqli ->   query("SELECT * FROM mould WHERE actif = 0 GROUP BY type");
            $nb         = $query -> num_rows;
            if($nb > 0)
            {
                echo "<th>";
 
                echo "<select name=\"type[]\" id=\"type\">";
                echo "<option value=\"ras\">Select</option>";
                while($row = $query -> fetch_array())
                {
                    $id = $row["id_mould"];
                    $type= $row["type"];
                    echo "<option value=\"$type\">".utf8_encode($type)."</option>";
                }
                echo "</select>";
 
                echo "</th>";
            }
 
 
            //Construire les cases à cocher sans doublon
            echo "<th></th>";
            echo "<th>";

Re: Probleme d'afichage au premier chargement d'une page (methode ajax de jquery)

Posté : 22 juil. 2016, 15:08
par moogli
salut,

as tu tester le service seul ? (le fichier php qui répond à la requête serveur).
Pour cela prend un client rest (par exemple boomerang dans les extensions chrome) et execute la requête sans et avec paramètre pour vérifier le fonctionnement.

Ensuite ton bout de JS ne fonctionne que sur un changement du formulaire.
Le code d'affichage du formulaire n'est pas fournit donc je ne peux pas plus t'aider.

Perso je mettrais l'action JS (requête serveur + init de la datable) dans une fonction js et je jouerais cette fonction sur le onReady et dans le change du formulaire.
Il faut bien sur que ton script serveur prenne en compte que le formulaire peux ne pas être soumis mais qu'il faut quand même fournir des données ;).

coté php le var_dump doit foutre la merde pour JS
if(isset($_POST)) { => inutile $_POST existe toujours, par contre le tableau est vide si pas de méthode POST sur l'appel HTTP

@+