GdrCd 5.5.1 modifica a gestione_mercato
GdrCd 5.5.1 modifica a gestione_mercato postato il 05/08/2020 19:23:17 nel forum programmazione, open source e hosting e modificato da haruka il 05/08/2020 19:27:04
Per farla breve, visto che la quantità di oggetti della land credo crescerà di brutto, sto cercando di sistemare il select degli oggetti esistenti.
Attualmente, la modifica al codice che faccio seguire:
$elenco_oggetti = gdrcd_query("SELECT id_oggetto, nome, tipo FROM oggetto ORDER BY tipo", 'result');
$tipi_oggetto = gdrcd_query("SELECT * FROM codtipooggetto ORDER BY descrizione", 'result');
?>
<div class="panels_box">
<!-- Elenco degli oggetti esistenti -->
<div class="panels_box">
<form class="form_gestione" action="main.php?page=gestione_mercato" method="post">
<div class='form_label'>
<?php echo gdrcd_filter('out', $MESSAGE['interface']['administration']['items']['load_item']); ?>
</div>
<div class='form_field'>
<?php if(gdrcd_query($elenco_oggetti, 'num_rows') > 0) { ?>
<select name="load_item">
<?php while($option = gdrcd_query($elenco_oggetti, 'fetch')) { ?>
<option value="<?php echo $option['id_oggetto']; ?>">
<?php echo gdrcd_filter('out', $option['nome']); ?>
(tipo: <?php echo gdrcd_filter('out', $option['tipo']); ?>)
</option>
<?php }
gdrcd_query($elenco_oggetti, 'free');
?>
</select>
<?php } ?>
</div>
...
Mi restituisce

Che va benissimo, perché almeno ho gli oggetti raggruppati per tipo.
Quello che vorrei - e per farlo credo bisogni inserire JOIN per incrociare le due tabelle oggetto e codtipooogetto, ma per quanto ho provato da povera autodidatta, proprio non riesco ç_ç - è ottenere la descrizione del cod_tipo di codtipooggetto al posto del numero...
Sono convinta che bisogni operare qui:
$elenco_oggetti = gdrcd_query("SELECT id_oggetto, nome, tipo FROM oggetto ORDER BY tipo", 'result');
e qui:
<option value="<?php echo $option['id_oggetto']; ?>">
<?php echo gdrcd_filter('out', $option['nome']); ?>
(tipo: <?php echo gdrcd_filter('out', $option['tipo']); ?>)
</option>
Concettualmente so cosa vorrei ottenere, ma non riesco.
Qualche anima pia che possa indirizzarmi?
Pagine → 1
06/08/2020 18:00:30 e modificato da soizora il 06/08/2020 18:03:45
se la tabella codtipooggetto ha un campo che funge da chiave esterna e che punta alla tabella oggetto ti basta usare quel campo come vincolo della query, per esempio:
$query="SELECT oggetto.id_oggetto, oggetto.nome, oggetto.tipo, codtipooggetto.* FROM oggetto LEFT JOIN codtipooggetto on oggetto.id = codtipooggetto.oggetto_id";
assumo per semplicità che la chiave esterna in questo caso sia oggetto_od sulla tabella codtipooggetto che punti all'id del record associato nella tabella oggetto e che ad ogni record della tabella oggetto sia associato almenon uno e un solo record della tabella codtipooggetto.
06/08/2020 18:30:57
Non va...
ho provato così:
$elenco_oggetti = gdrcd_query("SELECT id_oggetto, nome, tipo, codtipooggetto.* FROM oggetto LEFT JOIN codtipooggetto on id_oggetto = codtipooggetto.cod_tipo ORDER BY tipo ASC, nome ASC", 'result');
e poi
<option value="<?php echo $option['id_oggetto']; ?>">
<?php echo gdrcd_filter('out', $option['nome']); ?> (tipo: <?php echo gdrcd_filter('out', $option['codtipooggetto.descrizione']); ?>)
</option>
ma anche
<option value="<?php echo $option['id_oggetto']; ?>">
<?php echo gdrcd_filter('out', $option['nome']); ?> (tipo: <?php echo gdrcd_filter('out', $option['descrizione']); ?>)
</option>
e quello che ottengo è:

06/08/2020 20:04:26
haruka ha scritto: Non va...
ho provato così:
$elenco_oggetti = gdrcd_query("SELECT id_oggetto, nome, tipo, codtipooggetto.* FROM oggetto LEFT JOIN codtipooggetto on id_oggetto = codtipooggetto.cod_tipo ORDER BY tipo ASC, nome ASC", 'result');
e poi
<option value="<?php echo $option['id_oggetto']; ?>">
<?php echo gdrcd_filter('out', $option['nome']); ?> (tipo: <?php echo gdrcd_filter('out', $option['codtipooggetto.descrizione']); ?>)
</option>
ma anche
<option value="<?php echo $option['id_oggetto']; ?>">
<?php echo gdrcd_filter('out', $option['nome']); ?> (tipo: <?php echo gdrcd_filter('out', $option['descrizione']); ?>)
</option>
e quello che ottengo è:

credo non ti vada perchè la chiave esterna che usi attualmente non è id_oggeto. io la ho usata solo come esempio, guardando gdrcd pare che usi un campo presente in oggeto chiato tipo e la left jon va fatta IN oggetto.tipo=codtipooggetto.cod_tipo.
... so che è un po' una merda come è fatto su gdrcd, ma purtroppo il codice è quello
06/08/2020 20:12:56
Ma che scema che sono, hai ragione!
Ora va.
Vedo se riesco a fare un pacchetto aggiuntivo e lo metto a disposizione di tutti :)
Grazie soizora!
06/08/2020 20:17:55
No, allora, in attesa di capire come spedire i pacchetti al forum di gdr-cd, questa è la modifica che va fatta:
aprire il file gestione_mercato.inc.php
e sostituire il codice che va dalla riga 80 alla riga 109
con questo
$elenco_oggetti = gdrcd_query("SELECT id_oggetto, nome, tipo, codtipooggetto.* FROM oggetto LEFT JOIN codtipooggetto on oggetto.tipo = codtipooggetto.cod_tipo ORDER BY tipo ASC, nome ASC", 'result');
$tipi_oggetto = gdrcd_query("SELECT * FROM codtipooggetto ORDER BY descrizione", 'result');
?>
<div class="panels_box">
<!-- Elenco degli oggetti esistenti -->
<div class="panels_box">
<form class="form_gestione" action="main.php?page=gestione_mercato" method="post">
<div class='form_label'>
<?php echo gdrcd_filter('out', $MESSAGE['interface']['administration']['items']['load_item']); ?>
</div>
<div class='form_field'>
<?php if(gdrcd_query($elenco_oggetti, 'num_rows') > 0) { ?>
<select name="load_item">
<?php while($option = gdrcd_query($elenco_oggetti, 'fetch')) { ?>
<option value="<?php echo $option['id_oggetto']; ?>">
<?php echo gdrcd_filter('out', $option['nome']); ?> (tipo: <?php echo gdrcd_filter('out', $option['descrizione']); ?>)
</option>
<?php }
gdrcd_query($elenco_oggetti, 'free');
?>
</select>
<?php } ?>
</div>
<input type="hidden" name="op" value="load" />
<div class='form_submit'>
<input type="submit" value="<?php echo gdrcd_filter('out', $MESSAGE['interface']['forms']['submit']); ?>" />
</div>
</form>
</div>
Questa modifica raggruppa la lista oggetti per tipo e ordina in ordine alfabetico gli oggetti raggruppati.
Non è molto, ma meglio di niente :)
06/08/2020 22:13:55
haruka ha scritto: Ma che scema che sono, hai ragione!
Ora va.
Vedo se riesco a fare un pacchetto aggiuntivo e lo metto a disposizione di tutti :)
Grazie soizora!
Figurati, contento che ti funzioni^^
Discussione seguita da
Pagine → 1
Rispondi alla Discussione Segui Discussione Inoltra Discussione Forum Programmazione, Open Source e Hosting Elenco Forum
Articoli, Interviste e altre Risorse!
World of Warship ↗
Neverness to Everness ↗
RAID Shadow Legends ↗
Foundation Galactic Frontier ↗