Requête sql basique mais au final pas si simple
Résolu
SM05
Messages postés
10
Date d'inscription
Statut
Membre
Dernière intervention
-
SM05 -
SM05 -
A voir également:
- Requête sql basique mais au final pas si simple
- Iphone 14 simple - Guide
- Simple pdf - Télécharger - PDF
- Simple ocr - Télécharger - Bureautique
- Simple file locker - Télécharger - Sécurité
- Simple comic - Télécharger - Vie quotidienne
11 réponses
<section id="corps"> <!-- Le corps --> <?php $query = " SELECT b.version, c.version, a.logiciel from logiciel a join version b on b.id = a.V_mini join version c on c.id = a.V_maxi "; try { $pdo_select = $pdo->prepare($query); // Prépare une requête à l'exécution $pdo_select->execute(); // Exécute une requête préparée $NbreData = $pdo_select->rowCount(); // nombre d'enregistrements (lignes) $rowAll = $pdo_select->fetchAll(); // fetchAll : Retourne un tableau contenant toutes les lignes du jeu d'enregistrements } catch (PDOException $e){ echo 'Erreur SQL : '. $e->getMessage().'<br/>'; die(); } // affichage if ($NbreData != 0) { ?> <table> <thead> <tr> <th>Version_mini</th> <th>Version_maxi</th> <th>Logiciel</th> </tr> </thead> <tbody> <?php // pour chaque ligne (chaque enregistrement) foreach ( $rowAll as $row ) { // DONNEES A AFFICHER dans chaque cellule de la ligne ?> <tr> <td><?php echo $row['version b']; ?></td> <td><?php echo $row['version c']; ?></td> <td><?php echo $row['Logiciel']; ?></td> </tr> <?php } // fin foreach ?> </tbody> </table> <?php } else { ?> pas de données à afficher <?php } ?> </section >
<?php // Au debut de ton fichier .... ( AVANT LE <html> ) // après la connexion à ta bdd... $query = " SELECT B.version as Version_mini , C.version as Version_maxi , A.logiciel FROM logiciel A LEFT JOIN version B on B.id = A.V_mini LEFT JOIN version C on C.id = A.V_maxi "; try { $pdo_select = $pdo->prepare($query); // Prépare une requête à l'exécution $pdo_select->execute(); // Exécute une requête préparée //$NbreData = $pdo_select->rowCount(); // nombre d'enregistrements (lignes) // JAMAIS SUR UNE REQUETE DE TYPE SELECT !! $rowAll = $pdo_select->fetchAll(); // fetchAll : Retourne un tableau contenant toutes les lignes du jeu d'enregistrements $NbreData = count($rowAll); } catch (PDOException $e){ echo 'Erreur SQL : '. $e->getMessage().'<br/>'; die(); } ?>
puis, dans ta zone section
<section id="corps"> <!-- Le corps --> <?php // affichage if (!empty($rowAll )){ ?> <table> <thead> <tr> <th>Version_mini</th> <th>Version_maxi</th> <th>Logiciel</th> </tr> </thead> <tbody> <?php // pour chaque ligne (chaque enregistrement) foreach ( $rowAll as $row ) { // DONNEES A AFFICHER dans chaque cellule de la ligne ?> <tr> <td><?php echo $row['Version_mini']; ?></td> <td><?php echo $row['Version_maxi']; ?></td> <td><?php echo $row['Logiciel']; ?></td> </tr> <?php } // fin foreach ?> </tbody> </table> <?php } else { echo "pas de données à afficher"; } ?> </section >
Bonjour,
Pour faire simple, on pourrait ne pas utiliser la table version, qui ne sert à rien, et juste rajouter des points entre chiffres de v_mini et v_maxi de la table logiciel ;-)
ou pour faire compliqué quelque chose comme :
Pour faire simple, on pourrait ne pas utiliser la table version, qui ne sert à rien, et juste rajouter des points entre chiffres de v_mini et v_maxi de la table logiciel ;-)
ou pour faire compliqué quelque chose comme :
select b.version, c.version, a.logiciel from logiciel a join version b on b.id = a.V_mini join version c on c.id = a.V_maxi
Bonjour et merci pour ta réponse.
Plus exactement je veux faire une table version car je veux pouvoir faire des tri dessus ( pas possible avec des versions de la forme 1.2.4 ou 1.20.12 , si j'utilise 010204 pour 1.2.4 et 012012 pour 1.20.12 c'est tout de suite plus facile .... )
Si je comprends bien, avec ta solution " pour faire compliqué " tu utilise 2 tables de version ( chose que j'avais envisagé mais que je souhaite faire que en dernier denier recours ) .
Merci
Plus exactement je veux faire une table version car je veux pouvoir faire des tri dessus ( pas possible avec des versions de la forme 1.2.4 ou 1.20.12 , si j'utilise 010204 pour 1.2.4 et 012012 pour 1.20.12 c'est tout de suite plus facile .... )
Si je comprends bien, avec ta solution " pour faire compliqué " tu utilise 2 tables de version ( chose que j'avais envisagé mais que je souhaite faire que en dernier denier recours ) .
Merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonsoir,
Avec une Image... on ne peut rien faire ( pas de copier/coller pour t'aider à corriger ton code)
Donc...
Merci de poster ton code correctement en utilisant les BALISES DE CODE.
Explications ( à lire ENTIEREMENT ) disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Avec une Image... on ne peut rien faire ( pas de copier/coller pour t'aider à corriger ton code)
Donc...
Merci de poster ton code correctement en utilisant les BALISES DE CODE.
Explications ( à lire ENTIEREMENT ) disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
OK super
J'ai juste rajouté un " as Logiciel " dans le select
Et voici le résultat :

J'ai fait un INNER JOIN pour ne pas afficher les cases vides et voici le résultat :
Bravo et merci pour votre aide !
ps : Savez vous où je peux trouver un "petit cours" sur ce type de Select ?
J'ai juste rajouté un " as Logiciel " dans le select
$query = " SELECT B.version as Version_mini , C.version as Version_maxi , A.logiciel as Logiciel FROM logiciel A LEFT JOIN version B on B.id = A.V_mini LEFT JOIN version C on C.id = A.V_maxi ";
Et voici le résultat :
J'ai fait un INNER JOIN pour ne pas afficher les cases vides et voici le résultat :
Bravo et merci pour votre aide !
ps : Savez vous où je peux trouver un "petit cours" sur ce type de Select ?
Pour aller un petit peu plus loin je voudrais faire un CONCAT, mais je tourne en rond et je ne trouve pas la solution.Par exemple :
$query = " SELECT CONCAT( B.version as Version_mini
, C.version as Version_maxi ) as ma_concatenation
, A.logiciel as Logiciel
FROM logiciel A
LEFT JOIN version B on B.id = A.V_mini
LEFT JOIN version C on C.id = A.V_maxi ";