Newsgroup: it.comp.www.php
Titolo: tabelle e query incasinate! help me!

Ho due tabelle una si chiama tbl_categorielink con i seguenti campi:
catID  (1,2,3)
categorie: (voli low cost, prenotazione alberghi, noleggio auto)
l'altra si chiama tbl_link con i seguenti campi:
linkID  (1,2,3,4)
link  (
www.ryanair.it
, 
www.booking.com
, 
www.needahotel.com
, 
www.vueling.com
)
categoria  (1,2,2,1)
descrizione:  (ottimo sito, ottimo sito, ottimo sito, ottimo sito)
la mia query attuale č questa:
$query_rs_tutti = "SELECT linkID, link, categoria, descrizione FROM tbl_link 
ORDER BY categoria ASC";
$rs_tutti = mysql_query($query_rs_tutti, $server) or die(mysql_error());
$row_rs_tutti = mysql_fetch_assoc($rs_tutti);
$totalRows_rs_tutti = mysql_num_rows($rs_tutti);
L'aspetto estetico sul sito dovrebbe essere questo:
<div class="navText" id="menuorizzontale">
      <ul>
        <span class="Stile79"><?php echo $row_rs_tutti['categoria']; 
?></span>
        </p>
        <?php do { ?><li>
          <div align="justify"><strong><a href="<?php echo 
$row_rs_tutti['link']; ?>" target="blank" class="Stile77"><?php echo 
$row_rs_tutti['link']; ?></a></strong>: <span class="bodyText">  <?php echo 
$row_rs_tutti['descrizione']; ?><br />
          </span></div>
                        </li>
            <?php } while ($row_rs_tutti = mysql_fetch_assoc($rs_tutti)); 
?></ul>
        </p>
        </ul>
</ul>
</div>
Io pero' vorrei che mi venisse stampato sulla pagina web un qualcosa di 
questo genere:
voli low cost
  a.. 
www.ryanair.it
: ottimo sito
  b.. 
www.vueling.com
: ottimo sito
prenotazione strutture ricettive
  a.. 
www.booking.com
: ottimo sito
  b.. 
www.needahotel.com
: ottimo sito
ecc ecc ma che sia previsto che se non c'č nessun sito per quella categoria 
non spunti il titolo "categoria" e salti direttamente alla categoria 
successiva.
Ora come ora invece viene fuori cosi
Voli low cost
  a.. 
www.ryanair.com
: ottimo sito
Voli low cost
  a.. 
www.vueling.com
: ottimo sito
ecc ecc
chi mi puo' aiutare ? grazie

chi mi puo' aiutare ? grazie
Innanzitutto un buon tutorial di SQL, e poi un gruppo sull'SQL appunto.
Quello che stai cercando di fare e' una "JOIN". Ti direi anche come si fa
- non e' difficile - pero' dopo alla join successiva sei di nuovo punto e
a capo. Meglio se dai una scorsa a un tutorial, dammi retta.
Se poi sei lo stesso nelle peste, be', la mia mail e' buona.
Leonardo
-- 
 What do you make, so fair and bright;
 What do you build with sails for flight;
 What do you weave with wool so white?

 Innanzitutto un buon tutorial di SQL, e poi un gruppo sull'SQL appunto.
Mi butto dentro anche io. Ne avete qualcuno da raccomandare? "Da fuori" è
difficile giudicare la qualità e con google salta fuori di tutto.
-- 
Fact of life #15: Heads bleed, walls don't.

 Leonardo
che ne dici invece di una cosa del genere?
<?php
$curcategoria = 'ZERO';
do {
if ($curcategoria !=
$row_rs_tutti['categoria'])
{
$curcategoria = $row_rs_tutti['categoria'];
print <<<CATEGORIA
<h5 align="center" class="bodyText Stile61">
$row_rs_tutti[categoria]</h5>
CATEGORIA;
}
?>
<ul>
<li>
<h6 align="left" class="bodyText Stile59"><?php echo
$row_rs_tutti['link']; ?></h6>
</li>
</ul>
<div align="justify"><?php echo
$row_rs_tutti['descrizione']; ?> </div>
<br />


CATEGORIA;
A meno che non mi sbagli, $row_rs_tutti['categoria'] contiene un numero
(1,2,2,1 nel tuo esempio).
Quindi si', funzionerebbe, ma a patto che tu dichiarassi anche:
	$NomiCategorie	= array(
		0	=> 'Sconosciuta',
		1	=> 'Voli low cost',
		...
	);
e poi:
	$CodCat	= $row_rs_tutti['categoria'];
	print <<<CATEGORIA
	...
	<h5 ...>$NomiCategorie[$CodCat]</h5>
	...
CATEGORIA;
In pratica fai la JOIN in PHP anziche' in MySQL (e in certi casi e' una
cosa che conviene, anche).


 ha scritto nel messaggio 
news:qjnqg31ui8fcjdj3b...@4ax.com...

Fantastico! grazie e mille! 


vediamo se sono diventato bravo :-)
e un codice del genere "grammaticalmente" è giusto? (se la variabile url non 
è  vuota la query è cosi: ........where il campo itinerario è uguale alla 
variabile url oppure il campo itinerario è uguale a niente; diversamente 
ecc...ecc...)
if($_GET['nomeitinerario'] && $_GET['nomeitinerario'] != "")
{
$query_rs_tutti = "SELECT linkID, link, categoria, descrizione, itinerario, 
catID, categorie FROM tbl_link, tbl_categorielink WHERE itinerario = 
($GET['nomeitinerario']) OR itinerario = "" ORDER BY categoria ASC";
} else {
$query_rs_tutti = "SELECT linkID, link, categoria, descrizione, catID, 
categorie FROM tbl_link, tbl_categorielink WHERE categoria =catID ORDER BY 
categoria ASC"
grazie

($GET['nomeitinerario']) OR itinerario = "" 
Allora, prima di tutto MAI mettere _GET, _POST o _REQUEST dentro qualche
cosa che va a (My)SQL. Sempre ripulire con mysql_real_escape_string o un
parente.
	$search_itin = mysql_real_escape_string($_GET['itinerario');
	...WHERE itinerario IN ('', '$search_itin')...


 wrote:
allora io ho messo come dici tu ma non funziona mica!!  che altro c'č di 
sbagliato?
premetto che a questa pagina ci si arriva cliccando su un pulsante con 
questo collegamento:
utilink.php?nomeitinerario=<?php echo $row_rs_itin_an_filtr['itinerario']; 
?>
i risultati sono giusti solo se la variabile url 'nomeitinerario' č uguale a 
niente  (
itinerarimondo.netsons.org/utilink.php?nomeitinerario=
)
se invece č 
itinerarimondo.netsons.org/utilink.php?nomeitinerario=1
si vedono i due link riferiti a quell'itinerario ripetuti ben 8 volte 
ciascuno e in piů non si vedono quei siti riferiti a qualsiasi itinerario
ecco il codice rifatto:
$search_itin = mysql_real_escape_string($_GET['nomeitinerario']);
if($_GET['nomeitinerario'] != "")
{
$query_rs_tutti = "SELECT linkID, link, categoria, descrizione, itinerario, 
catID, categorie FROM tbl_link, tbl_categorielink WHERE itinerario IN ('', 
'$search_itin') ORDER BY categoria ASC";
}
else
{
$query_rs_tutti = "SELECT linkID, link, categoria, descrizione, catID, 
categorie FROM tbl_link, tbl_categorielink WHERE categoria = catID ORDER BY 
categoria ASC";
}
....
il codice che stampa il risultato invece č questo:
<?php
$NomiCategorie = array(1 => 'Voli low cost', 2 => 'Prenotazione strutture 
ricettive', 3 => 'Noleggio auto',  4=> 'Mezzi di trasporto pubblico', 5 => 
'Traghetti e crociere', 6 => 'Parchi divertimento', 7 => 'Informazioni 
turistiche varite', 8 => 'Avvenimenti, manifestazioni, sagre');
$curcategoria = 'ZERO';
do {
if ($curcategoria != $row_rs_tutti['categoria'])
{
$curcategoria = $row_rs_tutti['categoria'];
$CodCat = $row_rs_tutti['categoria'];
print <<<CATEGORIA
<h5 align="center" class="bodyText Stile61">$NomiCategorie[$CodCat]</h5>
CATEGORIA;
}
?> 

sbagliato?
Be', io ho sbagliato a scrivere $_GET['itinerario']: dovevo metterci
invece $_GET['nomeitinerario']. Il resto, dovrebbe funzionare uguale
a prima.
Che cosa c'e' nella colonna "itinerario" nella tabella?


 Che cosa c'e' nella colonna "itinerario" nella tabella?
nel campo itinerario, all'interno della tbl_link, ci sono dei numeri che 
corrispondono agli itinerari e dove non c'è numero il db mysql mette in 
automatico "null"
ciao Marco 



Allora la sintassi corretta dovrebbe essere:
	$itin = (int)$_REQUEST['nomeitinerario'];
e nell'SQL:
	...WHERE ( itinerario = $itin OR itinerario IS NULL ) ...
L'URL lo richiami con, ad esempio:
 
http://itinerarimondo.netsons.org/utilink.php?nomeitinerario=2


 wrote:
rimane ancora il problema dell'elenco dei siti che come puoi vedere anche tu 
appaiono 8 volte ciascuno tanti quanti sono gli array (8) ma solo se si 
specifica l'itinerario altrimenti se nomeitinerario="" tutto funziona 
perfettamente!
secondo me ho fatto qualche cavolata in questo codice. Ma dove??
<?php
$NomiCategorie = array(1 => 'Voli low cost', 2 => 'Prenotazione strutture 
ricettive', 3 => 'Noleggio auto',  4=> 'Mezzi di trasporto pubblico', 5 => 
'Traghetti e crociere', 6 => 'Parchi divertimento', 7 => 'Informazioni 
turistiche varite', 8 => 'Avvenimenti, manifestazioni, sagre');
$curcategoria = 'ZERO';
do {
if ($curcategoria != $row_rs_tutti['categoria'])
{
$curcategoria = $row_rs_tutti['categoria'];
$CodCat = $row_rs_tutti['categoria'];
print <<<CATEGORIA
<h5 align="center" class="bodyText Stile61">$NomiCategorie[$CodCat]</h5>
CATEGORIA;
}
?>
<ul type="disc">
<li>
<h6 align="left" class="bodyText Stile59"><?php echo
$row_rs_tutti['link']; ?></h6>
</li>
</ul>
<div align="justify"><?php echo
$row_rs_tutti['descrizione']; ?> </div>
<br />
<?php } while ($row_rs_tutti = mysql_fetch_assoc($rs_tutti)); ?>
</div> 

>>
risolto tutto grazie avevo dimenticato catId = categoria nella query!
sei un grande!
ciao!!!