php valeurs Comment puis-je retourner les résultats de la recherche mysql où seules les colonnes avec des entrées non nulles sont affichées




sql server liste des colonnes (2)

SELECT * FROM mytable WHERE column3 IS NOT NULL;

ou que voulez-vous dire quelque chose comme ça?

SELECT * FROM mytable WHERE column3 = 'yes' AND column1 IS NOT NULL;

J'ai du mal à essayer de générer une recherche mysql comme je le souhaite. Je ne trouve pas encore de réponse à ma question précise avec beaucoup de recherche et j'espère que quelqu'un sur ce forum serait prêt à aider! Je le vois logiquement comme un processus en deux étapes.

Tout d'abord, je veux exécuter une recherche mysql où les critères de recherche sélectionnent les lignes de table où une colonne spécifique a des données:

SELECT *
FROM `mytable`
WHERE column3 = 'yes'

Cela donne un sous-ensemble de ma table avec seulement les lignes contenant 'oui' dans la colonne3.

Maintenant, pour la deuxième étape, je voudrais supprimer toutes les colonnes de ce tableau de sous-ensembles qui ne contiennent aucune information (c'est-à-dire, sont null). Je suis sûr que c'est facile pour un pro, mais essayer de couper les 'colonnes nulles' me bloque et ne semble pas avoir de réponse en ligne pour le moment. Votre aide serait grandement appréciée!


Après avoir creusé plus loin, je me suis finalement rendu compte que, bien que vous puissiez facilement filtrer certaines lignes de données en utilisant mysql, le filtrage dynamique de certaines colonnes de données est une question différente. J'avais supposé que les colonnes pouvaient être filtrées comme des lignes. J'ai trouvé une réponse à une question similaire par bleu en 2011 qui décrit ceci: https://.com/a/4748682/5033595

Maintenant que je comprends mieux le concept, j'ai encore besoin de plus d'informations pour construire le code qui va accomplir ce qui est décrit par bleu dans le lien. Je vais modifier cette réponse si je viens avec moi-même. Inversement, j'apprécierais que quelqu'un d'autre veuille apporter une réponse avec le code.

Ok, désolé pour le retard et merci à tous pour vos conseils. Après avoir enquêté sur les forums internet et essayé différentes options, j'ai finalement découvert une solution. Dans cette solution, la clé utilise array_filter () pour identifier si les données sont contenues dans un tableau ou si elles sont vides. Cela fonctionne pour les tableaux multidimensionnels, donc j'ai d'abord déplacé chaque colonne de données mysql dans son propre tableau 1 dimensionnel et utilisé le tableau array_filter () comme un outil pour décider quelles colonnes seront publiées dans la table HTML. Le code et la sortie suivent. Prendre plaisir...

CODE>>>>>>>>>>>>>>>>>>>>>>>>>>

<?php

//STEP 1:  Making and confirming a connection to the Database>>>>>>>>>>>>>>>>>>>>>>>>>>


echo "STEP 1:  MAKING A CONNECTION TO THE MYSQL DATABASE...<BR><BR>";


//make connection
$db = mysql_connect("localhost","root","urpassword"); 
if (!$db) {
die("Database connection failed miserably: " . mysql_error());
} echo "Connected successfully<BR>";


//select database
$db_select = mysql_select_db("mydatabase",$db);
if (!$db_select) {
die("Database selection also failed miserably: " . mysql_error());
} echo "Database selected successfully<BR>";


//query 
$result = mysql_query("SELECT * FROM employees2", $db);
if (!$result) {
die("Database query failed: " . mysql_error());
} echo "Database queried successfully<BR>";


//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<


//STEP 2 OUTPUTTING THE MYSQL SEARCH OF THE WHOLE DATABASE INCLUDING EMPTY COLUMN>>>>>>>>>>>>>>>>>>>>>>>>>>>>

?>



<HTML>
<HEAD>
<TITLE>Only showing table columns containing data</TITLE>
</HEAD>

<BODY>

<BR><p>STEP 2:  PLACING THE MYSQL TABLE INTO AN HTML TABLE</P><BR>

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


<TR>
<TH>Name</TH>
<TH>Age</TH>
<TH>Position</TH>
<TH>Height</TH>
<TH>Salary</TH>

</TR>

<?php

while ($row=mysql_fetch_assoc($result)) {

echo "<TR>";
echo "<TD>".$row['Name']."</TD>";
echo "<TD>".$row['Age']."</TD>";
echo "<TD>".$row['Position']."</TD>";
echo "<TD>".$row['Height']."</TD>";
echo "<TD>".$row['Salary']."</TD>";
echo "</TR>";

} //end while

?>
</TABLE>

<!-- <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< -->


<?PHP

//STEP 3 Put mysql database into 2 dimension array: I didn't know my mysql >search wasn't in an array format already!!>>>>>>>>>>>>>

echo "<BR><BR>STEP 3:  CONVERTING THE MYSQL TABLE INTO A 2-DIMENSIONNAL ARRAY<BR><BR>";


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

$results = array();

while($line = mysql_fetch_assoc($query)){
$results[] = $line;
}

print_r($results);  

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<


//STEP 4 - Fetching each column as its own array>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

echo "<BR><BR><BR>STEP 4:  FETCHING EACH ARRAY COLUMN AS ITS OWN ARRAY";


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

$results = array();

while($line = mysql_fetch_assoc($query)){
$results[] = $line;
$Name = array_column($results, 'Name');
$Age = array_column($results, 'Age');
$Position = array_column($results, 'Position');
$Height = array_column($results, 'Height');
$Salary = array_column($results, 'Salary');

}

echo "<BR><BR>"; 
print_r($Name);
echo "<br>";
print_r($Age);
echo "<br>";
print_r($Position);
echo "<br>";
print_r($Height);
echo "<br>";
print_r($Salary);
echo "<br>";

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<


//STEP 5 -  Identifying if individual column arrays contain data>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

echo "<BR><BR>STEP 5:  CONFIRMING THAT YOU CAN IDENTIFY IF A COLUMN SEPARATED INTO ITS OWN ARRAY IS EMPTY<BR><BR>";

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

$results = array();

while($line = mysql_fetch_assoc($query)){
$results[] = $line;
$Name = array_column($results, 'Name');
$Age = array_column($results, 'Age');
$Position = array_column($results, 'Position');
$Height = array_column($results, 'Height');
$Salary = array_column($results, 'Salary');
}

if(array_filter($Name)) {
echo "contains at least one non-empty element<BR>";} else echo "is empty<BR>";
if(array_filter($Age)) {
echo "contains at least one non-empty element<BR>";} else echo "is empty<BR>";
if(array_filter($Position)) {
echo "contains at least one non-empty element<BR>";} else echo "is empty<BR>";
if(array_filter($Height)) {
echo "contains at least one non-empty element<BR>";} else echo "is empty<BR>";
if(array_filter($Salary)) {
echo "contains at least one non-empty element<BR>";} else echo "is empty<BR>";
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

?>

<!-- STEP 6 - Creating table that only displays columns with data>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>  -->

<BR><p>STEP 6:  CREATING AN HTML TABLE THAT ONLY DISPLAYS COLUMNS WITH DATA</P><BR>

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

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

$results = array();

while($line = mysql_fetch_assoc($query)){
$results[] = $line;
$Name = array_column($results, 'Name');
$Age = array_column($results, 'Age');
$Position = array_column($results, 'Position');
$Height = array_column($results, 'Height');
$Salary = array_column($results, 'Salary');
}

echo "<TR>";
if(array_filter($Name)) {echo "<TH>Name</TH>";} 
if(array_filter($Age)){echo "<TH>Age</TH>";} 
if(array_filter($Position)){echo "<TH>Position</TH>";} 
if(array_filter($Height)){echo "<TH>Height</TH>";} 
if(array_filter($Salary)){echo "<TH>Salary</TH>";} 

echo "</TR>";

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

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

echo "<TR>";

if(array_filter($Name)) {echo "<TD>".$line['Name']."</TD>";} 
if(array_filter($Age)) {echo "<TD>".$line['Age']."</TD>";} 
if(array_filter($Position)) {echo "<TD>".$line['Position']."</TD>";} 
if(array_filter($Height)) {echo "<TD>".$line['Height']."</TD>";} 
if(array_filter($Salary)) {echo "<TD>".$line['Salary']."</TD>";} 


echo "</TR>";

}

?>


</TABLE>
<BR><BR><BR><BR>

</BODY>

</HTML>

<?php
//closing mysql database
mysql_close($db);
?>

CODE<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<




OUTPUT>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

STEP 1: MAKING A CONNECTION TO THE MYSQL DATABASE...

Connected successfully
Database selected successfully
Database queried successfully

STEP 2: PLACING THE MYSQL TABLE INTO AN HTML TABLE

Name    Age     Position    Height  Salary
Chris Mogan 25  Assistant Programmer        170000
Emily Grant 25  Accountant      120000
James Daniel    27  Lead Programmer     210000
Jessica Pam 28  Group Head      250000
Mike Pablo  23  Head Designer       200000
Nick Meyers 24  Assistant Designer      150000


STEP 3: CONVERTING THE MYSQL TABLE INTO A 2-DIMENSIONNAL ARRAY

Array ( [0] => Array ( [Name] => Chris Mogan [Age] => 25 [Position] => Assistant Programmer [Height] => [Salary] => 170000 ) [1] => Array ( [Name] => Emily Grant [Age] => 25 [Position] => Accountant [Height] => [Salary] => 120000 ) [2] => Array ( [Name] => James Daniel [Age] => 27 [Position] => Lead Programmer [Height] => [Salary] => 210000 ) [3] => Array ( [Name] => Jessica Pam [Age] => 28 [Position] => Group Head [Height] => [Salary] => 250000 ) [4] => Array ( [Name] => Mike Pablo [Age] => 23 [Position] => Head Designer [Height] => [Salary] => 200000 ) [5] => Array ( [Name] => Nick Meyers [Age] => 24 [Position] => Assistant Designer [Height] => [Salary] => 150000 ) )


STEP 4: FETCHING EACH ARRAY COLUMN AS ITS OWN ARRAY

Array ( [0] => Chris Mogan [1] => Emily Grant [2] => James Daniel [3] => Jessica Pam [4] => Mike Pablo [5] => Nick Meyers )
Array ( [0] => 25 [1] => 25 [2] => 27 [3] => 28 [4] => 23 [5] => 24 )
Array ( [0] => Assistant Programmer [1] => Accountant [2] => Lead Programmer [3] => Group Head [4] => Head Designer [5] => Assistant Designer )
Array ( [0] => [1] => [2] => [3] => [4] => [5] => )
Array ( [0] => 170000 [1] => 120000 [2] => 210000 [3] => 250000 [4] => 200000 [5] => 150000 )


STEP 5: CONFIRMING THAT YOU CAN IDENTIFY IF A COLUMN SEPARATED INTO ITS OWN ARRAY IS EMPTY

contains at least one non-empty element
contains at least one non-empty element
contains at least one non-empty element
is empty
contains at least one non-empty element

STEP 6: CREATING AN HTML TABLE THAT ONLY DISPLAYS COLUMNS WITH DATA

Name    Age Position    Salary
Chris Mogan 25  Assistant Programmer    170000
Emily Grant 25  Accountant  120000
James Daniel    27  Lead Programmer 210000
Jessica Pam 28  Group Head  250000
Mike Pablo  23  Head Designer   200000
Nick Meyers 24  Assistant Designer  150000

OUTPUT<<<<<<<<<<<<<<<<<<<<<<<<<<<<<




phpmyadmin