Newsgroup: it.comp.www.php
Titolo: consigli ed help su organizzazione db

Gestisco il sito 
www.alientech.it
 (adesso o a breve non sarà visibile per
manutenzione sui server) In pratica facciamo anche recensioni hardware e
recensiamo anche masterizzatori. Nei test si genera una gran mole di dati, e
gestirla a mano è un po' dura.. ho pensato di mettere tutto in un db.
Attraverso php dovrei quindi creare delle tabelle tipo quelle che vedete qui
http://muppy.altervista.org/test.htm
ho organizzato la tabella in questo modo
nome masterizzatore | velocità lettura iniziale | velocità lettura finale |
velocità lettura media | etc.....
master1                    | valore 1                     | valore 2
| valore 3                     | etc..
master2                    | valore 4                     | valore 5
| valore 6                     | etc..
Adesso io volgio creare, con query, una tabella simile a quella che vedete
qui
http://muppy.altervista.org/test.htm
 solo che non so bene come fare: intanto
dovrei fare in modo da distinguere i masterizzatori in base alle loro
velocità, mettendo prima quelli che vanno più piano e poi quelli che vanno
più veloce e per ultimo il masterizzatore in prova.
Solo che non so bene, come creare lo script e non so se la tabella (mysql)
così fatta possa andar bene, qualche consiglio?
Grazie
Andrea

 cosě fatta possa andar bene, qualche consiglio?
un buon manuale di php e di sql...
non hai un dubbio, mi sa tanto che non hai la piů pallida idea di cosa 
sia una query....
purtroppo a meno che qualcuno non abbia tempo per farti il lavoro non 
credo che si possano dare consigli che possano risolvere il tuo problema 
(ordinare una query per i valori numerici di un campo č un problema banale).
Ciao Gianfranzo
-- 
--
ICQ#: 21258924
Nick Gianfranzo
Home page 
http://www.gianfranzo.it
Gianfranzo č contro la guerra
--

 (ordinare una query per i valori numerici di un campo è un problema
banale).
Non sono un gran che con mysql+php, ma qualche script e qualche query l'ho
fatta: mi sono fatto uno script per la gestion delle news ed uno per la
gestione dei download.
Ad ogni modo, anche se io faccio ordino una query per i valori numerici di
un campo, non so come fare nel caso in cui ho da mettere per ultimo un
masterizzatore 48, e confrontarlo con un 52x: se ordino ad esempio in base
alla velocità, prima ho il 48 (che io voglio sia l'ultimo) e poi ho il 52.
Spero di essermi spiegato
Andrea


order by speed desc
ti ordina in maniera decrescente
ciao
Alesi_27

 ti ordina in maniera decrescente
se debbo rensire un 48x lo metto a confronto con altri 48x con dei 52,
quindi dovrebbe essere una cosa di questo tipo
                masterizzatori 48x
master1 ........
master2 ........
                masterizzatori 52x
master3
master4
                masterizzatore in prova: 48x
Se faccio come dici tu, il master in prova mi va finire tra i 48, mentre io
lo voglio per ultimo ;)
Grazie!
Andrea

Ciao,

dubito che tu possa fare tutto con una sola query:
per escludere dall'elenco un elemento puoi utilizzare NOT 
IN(ID1,ID2,...,IDN) nel where...
es:
SELECT * FROM tblMASTERIZZATORI
WHERE IDMasterizzatore NOT IN (IDdelMasterizzatoreInProva)
ORDER BY speed DESC
poi fai una seconda query per estrarre il masterizzatore in prova
SELECT * FROM tblMASTERIZZATORI
WHERE IDMasterizzatore=IDdelMasterizzatoreInProva)
componi il tutto nella pagina...
Spero che questo possa risolvere il tuo problema
Ciao Gianfranzo
-- 
ICQ#: 21258924
Nick Gianfranzo
Home page 
http://www.gianfranzo.it
Gianfranzo è contro la guerra

Allora, ho provato così:
questa è la query per la creazione della tabella
CREATE TABLE masterizzatori (
  id int(10) NOT NULL auto_increment,
  iniziale tinyint(4) default NULL,
  finale tinyint(4) default NULL,
  media tinyint(4) default NULL,
  recensione enum('0','1') NOT NULL default '1',
  vel1 tinyint(4) NOT NULL default '0',
  nome text,
  PRIMARY KEY  (id)
) TYPE=MyISAM;
e questo il codice dello script
$db = mysql_select_db("test" , $connection);
$result = mysql_query("SELECT * FROM masterizzatori ORDER BY recensione,
vel1 ASC");
$lastvel = 0;
$color1 = "#336600";
$color2 = "#ff6600";
echo "<table border=1>\n";
echo "
 <tr>
  <td>
    nome masterizzatore
  </td>
  <td>
   velocità<br>iniziale
  </td>
 </tr>
  ";
while($record = mysql_fetch_array($result)) {
  if($record['vel1'] != $lastvel) {
    $lastvel = $record['vel1'];
    $color = $color == $color1 ? $color2 : $color1;
  }
  echo "
    <tr>
     <td colspan=\"2\">
   <center>Masterizzatori {$record['vel1']}X</center>
  </td>
 </tr>\n
   <tr>
  <td bgcolor=\"$color\">
   <center>
   {$record['nome']}
   </center>
  </td>
  <td>
   <center>
   {$record['iniziale']}
   </center>
  </td>
 </tr>
 ";
}
echo "</table>\n";
?>
adesso, il problema è che mi dà un risultato di questo tipo
http://muppy.altervista.org/test2.htm
La differenza sostanziale è che io i masterizzatori che hanno la stessa
velocità, li voglio raggruppati tutti assieme, cosa che non avviene
Qualche altro suggerimento?
Grazie
Andrea

 WHERE IDMasterizzatore=IDdelMasterizzatoreInProva)
uhm, non credo che neppure in questo modo riuscirei a raggruppare i
masterizzatori con la stessa velocità come voglio fare io.
Grazie
Andrea

 velocità, li voglio raggruppati tutti assieme, cosa che non avviene
vuoi dire che vuoi una sola scritta Masterizzatori 48X per i due master 
48x nella tabella?
se fai lo stesso test che fai per il cambio colore nella porzione 
<TR><TD></TD></TR> in cui scrivi Masterizzatori {$record['vel1']}X
la tabella viene con una sola scritta Masterizzatori 48X
Ciao Gianfranzo
-- 
ICQ#: 21258924
Nick Gianfranzo
Home page 
http://www.gianfranzo.it
Gianfranzo è contro la guerra

> la tabella viene con una sola scritta Masterizzatori 48X
Uff... ho rpovato ma non ci riesco: un pezzo di scritp l'ho copiato da uno
script che avevo sotto mano.
Il pezzo che mi fa il controllo sul colore è
$color = $color == $color1 ? $color2 : $color1;
esatto?? Mi puoi spiegare come funziona??
Ad ogni modo, questo è lo script che ho provato... ma che non va...
Grazie!
Andrea
$result = mysql_query("SELECT * FROM masterizzatori ORDER BY recensione,
vel1 ASC");
$lastvel = 0;
$color1 = "#336600";
$color2 = "#ff6600";
echo "<table border=1>\n";
echo "
 <tr>
  <td>
    nome masterizzatore
  </td>
  <td>
   velocità<br>iniziale
  </td>
 </tr>
  ";
while($record = mysql_fetch_array($result)) {
  if($record['vel1'] != $lastvel) {
    $lastvel = $record['vel1'];
    $color = $color == $color1 ? $color2 : $color1;
 $velocita1 = "masterizzatori";
 $velocita2 ="";
 $masterizzatori = $masterizzatori == $velocita1 ? $velocita2 : $velocita1;
  }
  echo "
    <tr>
     <td colspan=\"2\">
   <center>$masterizzatori {$record['vel1']}X</center>


    <tr>
il resto rimane uguale
ho cercato di isolare le righe da cambiare per metterle in evidenza, 
comunque dovresti provare a leggere qualche cosa almeno generale sulla 
programmazione... non puoi fare un sito dinamico con copia e incolla 
senza conoscere almeno i comandi condizionali come if...


 senza conoscere almeno i comandi condizionali come if...
Non sono del tutto a zero in programmazione: conosco bene la logica della
programmazione, so creare algoritmi, anche abbastanza complessi. Diciamo che
conosco il basic, il visual basic, ho dato all'univeristà un esame di c
(abbasta terra terra), diciamo che conosco abbastanza la logica della
programmazione, non troppo il php...il mi sito lo gestisco a livello del
tutto amatoriale e spesso non ho troppo tempo per gestirlo ;)
Ad ogni modo grazie 1000!
Andrea

Mi accorgo solo ora che avrei bisogno di un ultimo suggerimento ;) giuro che
è davvero l'ultimo (spero ;))
Lo script adesso come adesso mi genera questo output:
http://muppy.altervista.org/test4.htm
Come si può vedere, confronto masterizzatori 52x e 48x. Il masterizzatore in
prova è il primo, il Lite On. Se adesso io metto che anche questo sia un
48x, ho questo risultato
http://muppy.altervista.org/test3.htm
mentre io vorrei avere questo
http://muppy.altervista.org/test5.htm
Vorrei anche che sopra il primo masterizzatore, quello in prova, ci fosse
scritto "masterizzatore in prova".
Grazie!
Andrea

 
fai esattamente come nell'esempio che ho fatto prima...
non serve altro che un if
e usare le query che ti ho indicato ( quelle con NOT IN) dopo aver 
selezionato in qualche modo l'id del masterizzatore di prova per non 
includere nell'elenco dei masterizzatori quello di prova ....
l'algoritmo in questione è veramente banale se sei in grado di scriverlo 
in qualsiasi linguaggio lo puoi fare in php, con gli esempi di codice 
che hai qui.


 includere nell'elenco dei masterizzatori quello di prova ....
Ce l'ho fatta!!
Grazie 1000!!
Andrea