0
votes

Requête à PHP Tableau à table

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> xxx pré>

ceci est ma requête et ça marche Bien. P>

Le résultat dans MySQL ressemble à ceci: p> xxx pré>

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 ) ) 


5 commentaires

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 , éléments et item_class , avec le résultat souhaité de votre requête


3 Réponses :


0
votes

Considérez les éléments suivants ... XXX PRE>

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
        )

)


0 commentaires

0
votes

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>');
}
?>



0
votes

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>


1 commentaires

Sry pour la réponse tardive. Thx pour cela. Aidez-moi beaucoup à comprendre comment travailler cela avec le tableau. Merci