php - कैसे array_column()और array_filter()को एकीकृत करें-एसक्यूएल परिणामों की गतिशील तालिका उत्पादन में ब्लॉक



sql dynamic html-table (1)

इसे इस्तेमाल करे:

DECLARE @sql NVARCHAR(MAX) = N'';

SELECT @sql += N'DROP PROCEDURE dbo.'
  + QUOTENAME(name) + ';
' FROM sys.procedures
WHERE name LIKE N'spname%'
AND SCHEMA_NAME(schema_id) = N'dbo';

EXEC sp_executesql @sql;

मैं एक एसक्यूएल-डाटाबेस से डेटा को पढ़ना चाहता हूं, जो उन्हें तालिका में दिखाता है। यह अच्छी तरह से काम करता है अब, मैं केवल उन कॉलमों को कम से कम एक मान के साथ दिखाना चाहूंगा, न खाली वाले (नल, 0, रिक्त स्ट्रिंग युक्त)। यह निम्नलिखित उदाहरण के साथ काम करता है:

enter code here

  <TABLE width="500" border="1" cellpadding="1" cellspacing="1">

  <?php
  $query = mysql_query("SELECT * FROM guestbook", $db);

  $results = array();

  while($line = mysql_fetch_assoc($query)){
  $results[] = $line;
  $Name = array_column($results, 'Name');
  $Home = array_column($results, 'Home');
  $Date = array_column($results, 'Date');
  $Emptycolumn = array_column($results, 'Emptycolumn');
  $Comment = array_column($results, 'Comment');
  $City = array_column($results, 'City');
  }

  echo "<TR>";
  if(array_filter($Name)) {echo "<TH>Name</TH>";}
  if(array_filter($Home)){echo "<TH>Home</TH>";}
  if(array_filter($Date)){echo "<TH>Date</TH>";}
  if(array_filter($Emptycolumn)){echo "<TH>Emptycolumn</TH>";}
  if(array_filter($Comment)){echo "<TH>Comment</TH>";}
  if(array_filter($City)){echo "<TH>City</TH>";}

  echo "</TR>";

  $query = mysql_query("SELECT * FROM guestbook", $db);

  while($line = mysql_fetch_assoc($query)){

  echo "<TR>";

  if(array_filter($Name)) {echo "<TD>".$line['Name']."</TD>";}
  if(array_filter($Home)) {echo "<TD>".$line['Home']."</TD>";}
  if(array_filter($Date)) {echo "<TD>".$line['Date']."</TD>";}
  if(array_filter($Emptycolumn)) {echo "<TD>".$line['Emptycolumn']."</TD>";}
  if(array_filter($Comment)) {echo "<TD>".$line['Comment']."</TD>";}
  if(array_filter($City)) {echo "<TD>".$line['City']."</TD>";}

  echo "</TR>";
  }

  ?>

  </TABLE>

चूंकि मेरी तालिका के कॉलम-नाम अत्यधिक चर (क्वेरी के आधार पर) हैं, तालिका परिणाम-सरणी के माध्यम से पार्स करके उत्पन्न होती है, पहले कॉलम-नाम, फिर पंक्तियों में मान:

enter code here

  $sql = "SELECT DISTINCT $selection FROM $tabelle WHERE  
  $whereclause"; //will be changed to PDO


  $result = mysqli_query($db, $sql) or die("<b>No result</b>"); //Running 
         the query and storing it in result
  $numrows = mysqli_num_rows($result);  // gets number of rows in result 
         table
  $numcols = mysqli_num_fields($result);   // gets number of columns in 
         result table
  $field = mysqli_fetch_fields($result); // gets the column names from the 
         result table

  if ($numrows > 0) {

  echo "<table id='myTable' >";

  echo "<thead>";
  echo "<tr>";
  echo "<th>" . 'Nr' . "</th>";

  for($x=0;$x<$numcols;$x++){
          $key = array_search($field[$x]->name, $custom_column_arr);
          if($key !== false){
              echo "<th>" . $key . "</th>";
          }else{
              echo "<th>" . $field[$x]->name . "</th>";
          }
      }

  echo "</tr></thead>";

  echo "<tbody>";

  $nr = 1;

  while ($row = mysqli_fetch_array($result)) {
  echo "<tr>";
  echo "<td>" . $nr . "</td>";
    for ($k=0; $k<$numcols; $k++) {    //  goes around until there are no 
    columns left
          echo "<td>" . $row[$field[$k]->name] . "</td>"; //Prints the data
    }
  echo "</tr>";
  $nr = $nr + 1;


  }     // End of while-loop

  echo "</tbody></table>";
  }
  }

  mysqli_close($db); 

अब, मैंने array_column () और array_filter () को एकीकृत करने की कोशिश की - ऊपर दिए गए उदाहरणों के छोरों में, लेकिन दुर्भाग्य से, यह काम नहीं करता। मुझे यकीन है, यह एक पेशेवर के लिए आसान है और मैं बहुत आभारी होंगे, अगर कोई मुझे इस समस्या से मदद कर सकता है!

अग्रिम बहुत बहुत धन्यवाद!!





php sql dynamic html-table