मुझे एक समस्या है, इंटरनेट पर पैकेट ट्रैक करने के लिए एक छोटी सी स्क्रिप्ट बनाएं।

यह ठीक से काम करता है, समस्या यह है कि क्लाइंट अपना गाइड नंबर भेजने से पहले टेबल पहले से ही प्रदर्शित (खाली) होती है और एक बार गाइड डालने के बाद, एपीआई से खींचने वाला डेटा पहले से ही दिखाई देता है।

क्या कोई तरीका है कि जब तक भेजें बटन दबाया नहीं जाता है और कोई प्रतिक्रिया होती है तो टेबल नहीं देखी जाएंगी?

मैं चाहता हूं कि वे केवल तभी दिखाई दें जब आपके पास पहले से प्रदर्शित करने के लिए डेटा हो।

साइट का कोड यह है:

<body>
<div class="container">
    <div class="row">
    <div class="col-sm-8 col-sm-offset-2 col-md-6 col-md-offset-3">
                    <div class="panel-body">
                        <div class="form-container">
                            <div id="messages"></div>
                            <form action="" method="post" enctype="multipart/form-data" accept-charset="UTF-8" id="form-app">
<fieldset class="row">

<!-- Heading -->
<div class="col-xs-12">
    <h3 class="legend">Rastreo de Paquetes</h3>
</div>


<!-- Select List -->
<div class="col-xs-12">
    <div class="form-group required-control">
        <label  class="control-label" for="carrier">Paquetería</label>
        <select id="carrier" name="carrier" data-alias=""  class="form-control" required  >
            <option value="UPS" >UPS</option>
            <option value="Redpack" >Redpack</option>
            <option value="Estafeta" >Estafeta</option>
            <option value="DHL" >DHL</option>
            <option value="99 Minutos" >99 Minutos</option>
            <option value="FedEx" >FedEx</option>
            <option value="iVoy" >iVoy</option>
        </select>
    </div>
</div>

<!-- Number -->
<div class="col-xs-12">
    <div class="form-group required-control">
        <label  class="control-label" for="number">Número de guía o ID de Envío</label>
        <input type="text" id="shipment" name="shipment" value="" data-alias="" data-integer-only="true"  class="form-control"  required>
    </div>
</div>

<!-- Button -->
<div class="col-xs-12">
     <div class="form-action">
        <button type="submit" id="button_1" name="button_1" class="btn btn-primary">Enviar</button>
    </div>
</div>
</fieldset>
<div class="" style="display:none"><label class="control-label" for="_email">Disculpe, pero deje este campo en blanco</label><input type="text" id="_email" class="form-control" name="_email"></div> </form>
<div id="respuesta"></div>

<?php

include_once "key.php";
$shipment_number=$_POST["shipment"];
$carrier=$_POST["carrier"];

$params = array(
  "api_key" => $API_KEY,
  "carrier" => $carrier,
  "shipment_number" => $shipment_number
);
$headers = array(
  "api_key=".$API_KEY
);
curl_setopt_array($ch = curl_init(), array(
  CURLOPT_URL => "https://envios.corporativomarva.mx/api/v1/trackings",
  CURLOPT_SSL_VERIFYPEER => 0,
  CURLOPT_POST => 1,
  CURLOPT_POSTFIELDS => http_build_query($params),
  CURLOPT_RETURNTRANSFER => 1
));
$response = curl_exec($ch);
curl_close($ch);

$respuesta = json_decode($response);
//Show the response on HTML format with tables
echo "<table border='1'>";
echo "<tr><td>Estado del Envío</td><td>".$respuesta->shipment_status."</td></tr>";
echo "<tr><td>Evento</td><td>".$respuesta->event_description."</td></tr>";
echo "<tr><td>Guía</td><td>".$respuesta->carrier_tracking_number."</td></tr>";
echo "<tr><td>ID de Envio</td><td>".$respuesta->enviaya_shipment_number."</td></tr>";
echo "<tr><td>Fecha de envio</td><td>".$respuesta->pickup_date."</td></tr>";

//Show checkpoints data in a table
echo "<tr><td colspan='2'><table border='1'>";
echo "<tr><td>Checkpoint</td><td>Fecha</td><td>Código</td><td>Descripción</td><td>Ciudad</td><td>Estado</td><td>País</td><td>Comentarios</td></tr>";
foreach($respuesta->checkpoints as $checkpoint){
  echo "<tr><td>".$checkpoint->description."</td><td>".$checkpoint->date."</td><td>".$checkpoint->code."</td><td>".$checkpoint->description."</td><td>".$checkpoint->city."</td><td>".$checkpoint->state."</td><td>".$checkpoint->country."</td><td>".$checkpoint->comments."</td></tr>";
}
echo "</table></td></tr>";
echo "</table>";
?>


                            
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
</body>
</html>

पहले मैंने इसे एक अलग फ़ाइल के साथ संभाला था ताकि एपीआई क्वेरी बनाई गई हो लेकिन उसने मुझे केवल टेबल के साथ एक खाली पृष्ठ दिखाया और यह बहुत बदसूरत लग रहा था, मैं चाहता हूं कि यह उसी पृष्ठ पर देखा जाए जो क्लाइंट केवल नीचे अपना गाइड रखता है और मैं केवल यही लेकर आया था कि मैंने नहीं सोचा था कि तालिका हर समय प्रदर्शित होगी।

1
Armando Vázquez 5 जिंदा 2022, 03:42
जांचें कि क्या आपका पोस्ट सेट है .. अगर यह है .. तालिका बनाएं: if ( isset( $_POST["carrier"] ) ){
 – 
Zak
5 जिंदा 2022, 03:46

1 उत्तर

सबसे बढ़िया उत्तर

POST सेट है या नहीं यह जांचने के लिए एक साधारण if स्टेटमेंट -- फिर अपनी टेबल बनाएं...:

<?php

if (isset($_POST["carrier"])) {


    include_once "key.php";
    $shipment_number = $_POST["shipment"];
    $carrier = $_POST["carrier"];

    $params = array(
        "api_key" => $API_KEY,
        "carrier" => $carrier,
        "shipment_number" => $shipment_number
    );
    $headers = array(
        "api_key=" . $API_KEY
    );
    curl_setopt_array($ch = curl_init(), array(
        CURLOPT_URL => "https://envios.corporativomarva.mx/api/v1/trackings",
        CURLOPT_SSL_VERIFYPEER => 0,
        CURLOPT_POST => 1,
        CURLOPT_POSTFIELDS => http_build_query($params),
        CURLOPT_RETURNTRANSFER => 1
    ));
    $response = curl_exec($ch);
    curl_close($ch);

    $respuesta = json_decode($response);
    //Show the response on HTML format with tables
    echo "<table border='1'>";
    echo "<tr><td>Estado del Envío</td><td>" . $respuesta->shipment_status . "</td></tr>";
    echo "<tr><td>Evento</td><td>" . $respuesta->event_description . "</td></tr>";
    echo "<tr><td>Guía</td><td>" . $respuesta->carrier_tracking_number . "</td></tr>";
    echo "<tr><td>ID de Envio</td><td>" . $respuesta->enviaya_shipment_number . "</td></tr>";
    echo "<tr><td>Fecha de envio</td><td>" . $respuesta->pickup_date . "</td></tr>";

    //Show checkpoints data in a table
    echo "<tr><td colspan='2'><table border='1'>";
    echo "<tr><td>Checkpoint</td><td>Fecha</td><td>Código</td><td>Descripción</td><td>Ciudad</td><td>Estado</td><td>País</td><td>Comentarios</td></tr>";
    foreach ($respuesta->checkpoints as $checkpoint) {
        echo "<tr><td>" . $checkpoint->description . "</td><td>" . $checkpoint->date . "</td><td>" . $checkpoint->code . "</td><td>" . $checkpoint->description . "</td><td>" . $checkpoint->city . "</td><td>" . $checkpoint->state . "</td><td>" . $checkpoint->country . "</td><td>" . $checkpoint->comments . "</td></tr>";
    }
    echo "</table></td></tr>";

    echo "</table>";

}
?>
0
Zak 5 जिंदा 2022, 03:50
यह पूरी तरह से काम किया, बहुत बहुत धन्यवाद।
 – 
Armando Vázquez
5 जिंदा 2022, 04:01