Je joue autour de MySQL et je suis resté coincé.
J'ai une table d'objets et une table avec des attributs et des valeurs. p> ceci est ma requête et ça marche Bien. P> Le résultat dans MySQL ressemble à ceci: p> Mon problème est maintenant, comment puis-je l'obtenir dans une table qui ressemble à ceci: P> Array ( [0] => Array ( [Item] => Rohr 1 [attrib] => diameter [Value] => 16 ) [1] => Array ( [Item] => Rohr 1 [attrib] => Fluid Code [Value] => FW ) [2] => Array ( [Item] => Rohr 1 [attrib] => From [Value] => 3 ) [3] => Array ( [Item] => Rohr 1 [attrib] => To [Value] => 2 ) [4] => Array ( [Item] => Rohr 1 [attrib] => Subcontractor [Value] => 1 ) [5] => Array ( [Item] => Rohr 1 [attrib] => Paint [Value] => A3 ) [6] => Array ( [Item] => Rohr 1 [attrib] => Insulation [Value] => HS ) [7] => Array ( [Item] => Rohr 2 [attrib] => diameter [Value] => 80 ) [8] => Array ( [Item] => Rohr 2 [attrib] => Fluid Code [Value] => FW ) [9] => Array ( [Item] => Rohr 2 [attrib] => From [Value] => 1 ) [10] => Array ( [Item] => Rohr 2 [attrib] => To [Value] => 3 ) [11] => Array ( [Item] => Rohr 2 [attrib] => Subcontractor [Value] => 1 ) [12] => Array ( [Item] => Rohr 2 [attrib] => Paint [Value] => A3 ) [13] => Array ( [Item] => Rohr 2 [attrib] => Insulation [Value] => HS ) )
3 Réponses :
Considérez les éléments suivants ... Sorties: P> Array
(
[Rohr 1] => Array
(
[diameter] => 16
[Fluid Code] => FW
[From] => 3
[Insulation] => HS
[Paint] => A3
[Subcontractor] => 1
[To] => 2
)
[Rohr 2] => Array
(
[diameter] => 80
[Fluid Code] => FW
[From] => 1
[Insulation] => HS
[Paint] => A3
[Subcontractor] => 1
[To] => 3
)
)
Avant d'afficher les résultats, vous devez vous connecter à la base de données et exécuter la requête. Pour connecter yoiu peut utiliser PDO , mysqli .
Pour afficher les résultats SQL, vous pouvez utiliser la boucle de
Exemple pour votre cas:
<?php
// make connect to database
$db_host = 'localhost';// This MySQL host, for XAMPP/LAMPP/etc. that will be 'localhost'
$db_user = 'my_user';// This is user for your DB, you authorize in PHPMyAdmin with this user
$db_password = 'qwerty';// This is password for your DB, you authorize in PHPMyAdmin with this password
$db_name = 'item_attrib_values';// This is your DB name
$db = new mysqli($db_host, $db_user, $db_password, $db_name);
if ($db->connect_errno) {
// if you script can't connect to database will be abort execution and displayed message 'Connection failed'
exit('Connection failed');
}
// before execute query you need make "prepare", this will be analyze SQL query
// instead of data you should use `?` this is placeholder, MySQLi understand what instead of this symbol should be real data
// Important notice: don't wrap placeholder `"?"`, `'?'` - this is string data but `?` - placeholder
$stmt = $db->prepare("SELECT i.name, ia.name, iav.value FROM `item_attrib_values` iav
JOIN item_atributs ia ON iav.ia_ID = ia.ID
JOIN items i ON iav.i_ID = i.ID
JOIN item_class ic ON ic.ID = i.ic_ID
WHERE ic.ID = ?");
if(!$stmt) {
// if you script doesn't make "prepare" for SQL query will be abort script execution and displayed message 'Preparation failed'
exit('Preparation failed');
}
// You completed preparation, but now MySQLi doesn't know about data for execute
// Let's get data for MySQLi
if(!$stmt->bind_param("i", 1)){
// binding data for MySQLi, first argument is type ("i" that's integer) and second argument is data
// if bind not executed You abort script and get error message
exit('Binding failed');
}
$results = null;
$row = null;
// That's all, you can run execution
if(!$stmt->execute();) {
// Run execution, if execution failed $result will be `false`
exit('Execution failed');
} ele {
// If execution success you can get results
$results = $stmt->get_result();
}
$stmt->close();// Closing statement, that's good practice
// OK, you have $result, but now you can't get data, you need convert this to array
$result
if(!is_null($result)) {
// check, if you can results
echo('<table>');
while ($row = $result->fetch_all()) {
// this loop will be execute while you have results
// print "rows"
echo('<tr>');
foreach ($row as &$value) {
// print "columns" with your data
echo('<td>'.$value.'</td>');
}
echo('</tr>');
}
echo('</table>');
}
?>
Vous devez arrêter de vérifier manuellement des erreurs. Veuillez lire: Devrions-nous jamais vérifier manuellement les erreurs MySQLI_Connect ()? et Devrais-je vérifier manuellement des erreurs lors de l'appel" mysqli_stmt_prepare "?
Obtenez votre résultat et transformez-le en une matrice où chaque élément est un élément avec tous les attributs. Rassemblez tous les en-têtes, puis construisez la table à l'aide de ces en-têtes sous forme de colonnes - de cette façon, même si l'un des attributs est manquant pour certaines lignes, il sera toujours affiché correctement.
<table><tr><th>item</th><th>Fluid Code</th><th>From</th><th>To</th><th>Subcontractor</th><th>Paint</th><th>Insulation</th><th>diameter</th></tr><tr><td>Rohr 1</td><td>FW</td><td>3</td><td>2</td><td>1</td><td>A3</td><td>HS</td><td>-</td></tr><tr><td>Rohr 2</td><td>FW</td><td>1</td><td>3</td><td>1</td><td>A3</td><td>HS</td><td>80</td></tr></table>
Sry pour la réponse tardive. Thx pour cela. Aidez-moi beaucoup à comprendre comment travailler cela avec le tableau. Merci
S'il vous plaît voir: Pourquoi devrais-je fournir un MCRE pour ce qui me semble être une requête SQL très simple?
Qu'est-ce que je rate? Mon i`ve poseet la requête et le résultat et la matrice ma question est, comment puis-je trier la matrice afin que je puisse obtenir la table
Si je dois expliquer le lien, cela semble plutôt diminuer le point de fournir le lien, n'est-ce pas d'accord?
Je ne sais pas quelles créez et sélectionnez pourrait vous aider à trier un tableau PHP que j'ai affiché.
Eh bien, j'irais avec créer et insérer des instructions pour
item_atributts code>,éléments code> etitem_class code>, avec le résultat souhaité de votre requête