- Home
- Categorie
- Coding e Sistemistica
- PHP
- Query "particolare"
-
Query "particolare"
salve,
devo ordinare una tabella mysql con un ciclo php per un sito di stampanti.la mia tabella è composta da tipo(es. stampanti laser), serie(es. deskjett) e modello (es. 100)
fin qui tutto ok. vorrei che i risultati fossero visualizzati nella pagina php così
Tipo_1
**serie_1 **
modello1, modello2, modello3, modello4serie_2
modello1, modello2Tipo_2
serie ecc..ecc...Vorrei raggruppare tutte le stampanti così in un unica pagina.
E' forse possibilie secondo voi?
Aiutatemi please!
-
così ad occhio mi verrebbe da creare una tabella con campi id e tipo in questo modo posso fare un left join in query e ordinarli secondo quegli id
Sono con il cell ora inizia a buttare giù qualcosa e ci lavoriamo
-
grande massimux!
allora ho fatto una tabella stampanti_tipo:+---------------------------------
| tipo_id | tipo| 1 | getto d'inchiostro
| 2 | laser
e poi quella stampanti:
| stampante_id | tipo_id | marca | serie | modello |
| 1 | 1 | epson | Stylus | 400 |
| 2 | 1 | epson | Stylus | 200 |
| 2 | 2 | epson | laser1 | DXN |
| 2 | 2 | epson | laser2 | DXN-2 |
poi in PHP ho fatto la left join:
<?php $query = "SELECT stampanti.serie AS serie, stampanti.modello AS modello, stampanti.tipo_id AS tipo_id, stampanti_tipo.tipo AS tipo FROM stampanti LEFT JOIN stampanti_tipo ON stampanti.tipo_id=stampanti_tipo.tipo_id ORDER BY stampanti.tipo_id"; $result = mysql_query($query, $db); //ciclo visualizzazione if (mysql_num_rows($result) == 0) { echo "<p>Non ci sono stampanti.</p>"; }else{ while($row = mysql_fetch_assoc($result)){ echo $row['tipo']." - ".$row['serie']." - ".$row['modello']."<br />"; } //fine while } //fine if ?>
e visualizza così:
Stampanti a Getto d'inchiostro - Stylus - 400
Stampanti a Getto d'inchiostro - Stylus - 200
Stampanti Laser - laser1- DXN
Stampanti Laser - laser2 - DXN-2fin qui ci sono però vorrei raggrupparle come ti dicevo nel primo post magari ordinate anche per serie e modello (in ordine alfabetico) tipo così:
stampanti getto inchiostro
Stylus
200, 400Stampanti Laser
laser1
DXN, DXN-2
-
nessuno sà come aiutarmi???
-
Ciao lurulu
credo che per fare cio' che ti interessa dovrai annidare più cicli:
con un ciclo ti tiri fuori il contenuto della 1^ tabella, ovvero: Getto d'inchiostro o Laser
al suo interno cicli le marche associate alla selezione passante:SELECT.........WHERE tipo_id=1
per ogni ciclo ti uscirai così le marche, annidi un altro ciclo e ti uscirà la serie ed infine con un altro ciclo ti esci il modello....
é un po laborioso....ma se po fa'
-
se ho capito bene intendi annidare 3 query così?
SELECT-tipo{
[INDENT]SELECT-serie{
[INDENT]SELECT-modello{}
[/INDENT]}
[/INDENT]}ma così, supponendo che in futuro ci saranno tanti modelli di decine di serie diverse non diventerebbero troppe query? secondo te potrebbero appesantire l'applicazione?
-
Se non ho fatto male i calcoli a me risultano 4
tipo - marca - serie - modello
comunque si, questo è quello che credo possa far al caso tuoEDIT: ovviamente ad ogni ciclo annidato dovrai assegnare la selezione passante del ciclo superiore