2017-07-19 3 views
1

Ich bin mit PHP & Charts.js ein Diagramm der Daten eine HTML erzeugen <select> Mein Problem ist, dass selbst basiert weg, wenn nichts von dem HTML ausgewählt ist <select> eine leere Tabelle in der angezeigt wird, unten auf der Seite im Gegensatz zur Anzeige der echo Anweisung in meinem else {} Block.Nur generieren Diagramm Wenn PHP Variablenwert

Wie soll ich diese Syntax neu schreiben, so dass ein Diagramm ist NUR erstellt IF eine Auswahl aus dem html gemacht wird <select>

<body> 
    <form method="POST"> 
    <p>Select Sales Name: 
      <select name="Name"> 
       <option value="">Select A Name...</option> 
       <option value="Joe">Joe</option> 
       <option value="Jack">Jack</option> 
       <option value="Jerry">Jerry</option> 
       <option value="Jimmy">Jimmy</option></select></p> 
     <input type="submit" name="submit" value="Show Me"> 
    </form> 
</body> 
<?php 
if (isset($_POST['submit'])) { 
    $whatsalesprsn = $_POST['Name']; 
    if ($whatsalesprsn == "Joe") { $region = "East"; } 
    if ($whatsalesprsn == "Jack") { $region = "West"; } 
    if ($whatsalesprsn == "Jerry") { $region = "North"; } 
    if ($whatsalesprsn == "Jimmy") { $region = "South"; } 
    if (isset($region)) { 
     $query = "Select * from salesdata where salesregion = '$region'"; 
     $db->setQuery($query); 
     $rows = $db->loadColumn(); 
     $output = array(); 
     for ($i = 0; $i <= 3; $i++) { 
     $column = $db->loadColumn($i); 
     array_push($output, $column); 
    } 
    $data = json_encode($output[0]); 
    } else { echo "PLease select a sales person to display data for."; } 
} 
?> 

<html> 
    <head> 
     <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.6.0/Chart.min.js"></script> 
    </head> 
    <body> 
     <div id="container" style="width: 75%;"> 
      <canvas id="canvas"></canvas> 
     </div><script> 
      //JavaScript to generate chart 
     </script> 
    </body> 
</html> 
+0

'if {...}' versuchen diese –

+0

@ Mr.Developer - wo Sie vorschlagen Ich füge diesen Check in meine aktuelle Syntax ein? – BellHopByDayAmetuerCoderByNigh

+0

Nach diesem '$ whatsalesprsn = $ _POST ['Name'];' –

Antwort

0

Sie müssen if statement mit empty() Funktion hinzuzufügen. (! Empty ($ whatsalesprsn)) SO wenn if statement$whatsalesprsn Variable überprüft, ob leer oder nicht durch empty() Funktion

if(!empty($whatsalesprsn)){ 
$whatsalesprsn = $_POST['Name']; 
    if ($whatsalesprsn == "Joe") { $region = "East"; } 
    if ($whatsalesprsn == "Jack") { $region = "West"; } 
    if ($whatsalesprsn == "Jerry") { $region = "North"; } 
    if ($whatsalesprsn == "Jimmy") { $region = "South"; } 
    if (isset($region)) { 
     $query = "Select * from salesdata where salesregion = '$region'"; 
     $db->setQuery($query); 
     $rows = $db->loadColumn(); 
     $output = array(); 
     for ($i = 0; $i <= 3; $i++) { 
     $column = $db->loadColumn($i); 
     array_push($output, $column); 
    } 
    $data = json_encode($output[0]); 
} 
0

Irgendwo Sie new Chart(...) Aufruf werden müssen. Wenn Sie dies tun, ohne gültige Daten zu übergeben, erstellt Chart.js ein leeres Diagramm (da Sie es ihm angewiesen haben).

Wenn Sie keine gültigen Daten haben (d. H. Nichts ist im Element <select> ausgewählt), instanziieren Sie Chart.js nicht. Etwas wie:

if (data.length) { 
    new Chart(...); 
}