echo che dipende dall'estrazione o meno di un record

mediasteno

Utente Attivo
25 Gen 2010
120
0
0
Salve, spero che qualcuno mi aiuti. In una pagina visualizzo un elenco di strutture ricettive nella forma denominazione via città recapiti. Queste strutture ricettive sono estratte da una prima tabella di un database. Per alcune strutture, in un'altra tabella, sono presenti ulteriori informazioni (servizi in camera, parcheggio, info ecc.). Il mio intento è di fare in modo che se trattasi di una struttura che abbia anche delle informazioni aggiuntive, venga stampato a video oltre all'indirizzo della struttura anche "maggiori info" con il link alla scheda della struttura, in caso contrario la dicitura "maggiori info" non deve essere stampata.
Il codice deve essere impostato in modo tale che si realizzi questa condizione:
Clicco su una categoria ed estraggo dalla tabella struttureric tutte le strutture ricettive che hanno come categoria quella cliccata.
La struttura ricettiva se ha un campo equivalente nella tabella info_strutture allora deve visualizzare a video oltre i suoi dati anche maggiori informazioni altrimenti solo i dati. Questa condizione va verificata controllando se nella tabella info_strutture ci sia il campo relativo all'id_struttura selezionata.
Io ho impostato il codice in questo modo:
PHP:
<?php
if (isset($_GET['categoria']))
   {
     $categoria = ($_GET['categoria']);
     require 'connessione.php';
             $sql_cat = "SELECT id_strutture FROM categorie_strutture WHERE categoria LIKE '$categoria'";
             $rc = @mysql_query($sql_cat,$link) or die ("Errore query database: ".mysql_error());
             if(@mysql_num_rows($rc)>0)
                                       {
                                        while($row = @mysql_fetch_array($rc))
                                                   {
                                                     $id_strutture = ($row['id_strutture']);
                                                     $cat = ($row['categoria']);

            $sql_strutture = "  SELECT t1.id, t1.img, t1.denominazione, t1.indirizzo, t1.cap, t1.telefono, t1.fax,
				t1.email, t1.sito, t2.comune, t3.provincia, t3.sigla
				FROM struttureric AS t1
				INNER JOIN comuni AS t2 ON t1.id_comune = t2.id
				INNER JOIN province AS t3 ON t1.id_provincia = t3.id
                                WHERE t1.id = '$id_strutture'
				ORDER BY denominazione";
				$rs = @mysql_query($sql_strutture,$link) or die ("Errore query database: ".mysql_error());
                                if(mysql_num_rows($rs)>0)
                                                         {
                                                           while($row = @mysql_fetch_array($rs))
                          					{ $id = ($row['id']);
                                                                  $denominazione = stripslashes(ucwords($row['denominazione']));
                          					  $indirizzo     = stripslashes($row['indirizzo']);
                          					  $cap		 = stripslashes($row['cap']);
                          					  $citta	 = stripslashes($row['comune']);
                          					  $provincia	 = stripslashes($row['provincia']);
                          					  $siglaprov	 = stripslashes($row['sigla']);
                          					  $tel		 = stripslashes($row['telefono']);
                          					  $fax		 = stripslashes($row['fax']);
                          					  $mail          = stripslashes($row['email']);
                          					  $sito          = stripslashes($row['sito']);
                          					  $img		 = stripslashes($row['img']);                                                         
                                       echo ("<img src=imgstr/$img alt=$denominazione> <br />
				        <strong>$denominazione</strong><br />
					$indirizzo <br />
					$cap - $citta ($siglaprov) <br />
					<br />
					<strong>tel.:</strong> $tel <br />
					<strong>fax.:</strong> $fax <br />
					$sito - $mail <br />
					<br />
                                        <a href='pagine.php?pag=struttura_scheda&id=$id&denominazione=$denominazione'>Maggiori Informazioni</a>
                                        <hr>
                                        ");
                                                             }}}}}?>
In questo modo, però maggiori info è stampato per ogni struttura.
Credo che bisogna integrare con
$info_strutture = "SELECT * FROM info_strutture WHERE id_strutture = $id" e stabilire la condizione che se ottengo un risultato allora stampo "maggiori info" altrimenti non viene stampato.
Ho provato in vari modi, ma non riesco ad ottenere il risultato sperato. Se qualcuno può darmi una mano. Grazie
 
ciao
data l'ora tarda non so se ho capito bene il tuo problema, ma così di primo acchito la seguente soluzione mi sembrerebbe andare bene
PHP:
<?php
//...
$info_strutture = "SELECT * FROM info_strutture WHERE id_strutture = $id";
$result=mysql_query($info_strutture);
//verifichi che esistano ulteriori info
$esistono_info=mysql_num_rows($result);
if($esistono_info > 0){//se == 1 esistono
	//stampi il link
}//se == 0 il link non viene stampato
//....
?>
 
ottengo sempre lo stesso problema. A questo punto penso che non sia tanto il problema del codice ma come è impostato. Mi spiego, ho migliorato il codice (eseguivo due Select quando potevo benissimo farne solo una) ed aggiunto il codice suggerito da borgo italia (che tra l'altro era simile a quello che avevo provato a fare io prima di scrivere sul forum). Ma quando vado ad eseguire il codice, mi stampa "maggiori info" solo quando nella tabella info_strutture ci sono altre informazioni relative alla struttura ma il problema è che i dati di una stessa struttura vengono stampati più di una volta all'infinito.
Il codice l'ho impostato in questo modo:
PHP:
<?php
if (isset($_GET['categoria'])) //recupero la categoria selezionata
   {
      $categoria = ($_GET['categoria']);
                 //seleziono tutte le strutture ricettive che appartengono a quella categoria
      $sql_strutture = "  SELECT t1.id, t1.img, t1.denominazione, t1.indirizzo, t1.cap, t1.telefono, t1.fax,
				 t1.email, t1.sito, t2.comune, t3.provincia, t3.sigla
				 FROM struttureric AS t1
				 LEFT JOIN comuni AS t2 ON t1.id_comune = t2.id
				 LEFT JOIN province AS t3 ON t1.id_provincia = t3.id
				 LEFT JOIN categorie_strutture AS t4 ON t1.id = t4.id_strutture
                                 WHERE t4.categoria = '$categoria'
				 ORDER BY denominazione";
				 
		$rs = @mysql_query($sql_strutture,$link) or die ("Errore query database: ".mysql_error());
                if(mysql_num_rows($rs)>0)
                             {
                                 while($row = @mysql_fetch_array($rs))
                          		{$id = ($row['id']);
                                          $denominazione = stripslashes(ucwords($row['denominazione']));
  					  $indirizzo     = stripslashes($row['indirizzo']);
  					  $cap		 = stripslashes($row['cap']);
  					  $citta	 = stripslashes($row['comune']);
  					  $provincia	 = stripslashes($row['provincia']);
  					  $siglaprov	 = stripslashes($row['sigla']);
  					  $tel		 = stripslashes($row['telefono']);
  					  $fax		 = stripslashes($row['fax']);
  					  $mail          = stripslashes($row['email']);
  					  $sito          = stripslashes($row['sito']);
  					  $img		 = stripslashes($row['img']);
                                          $id_strutture = ($row['id_strutture']);
                                          $cat          = ($row['categoria']);
                                 echo ("<img src=imgstr/$img alt=$denominazione> <br />
				        <strong>$denominazione</strong><br />
					$indirizzo <br />
					$cap - $citta ($siglaprov) <br />
					<br />
					<strong>tel.:</strong> $tel <br />
					<strong>fax.:</strong> $fax <br />
					$sito - $mail <br />
					<br />");
     		                        }
                               }
                        $info_strutture = "SELECT * FROM info_strutture WHERE id_strutture = $id";
                        $result=mysql_query($info_strutture);
			//verifico che esistano ulteriori info	relative alla struttura ricettiva e in caso affermativo stampo maggiori info
			$esistono_info=mysql_num_rows($result);
                        if($esistono_info > 0) {echo ("<a href='pagine.php?pag=struttura_scheda&id=$id&denominazione=$denominazione'>Maggiori Informazioni</a><br /><hr>");}
   }
?>

Come devo modificare il codice per fare in modo che i dati della struttura vengono stampati una sola volta? Può dipendere da come è impostato il database?
Grazie :confused:
 
ciao
non credo proprio che dipenda dal db.
prova ad impostarli in questo modo

PHP:
<?php
if (isset($_GET['categoria'])){ //recupero la categoria selezionata
	$categoria = ($_GET['categoria']);
	//seleziono tutte le strutture ricettive che appartengono a quella categoria
	//......
	$rs = @mysql_query($sql_strutture,$link) or die ("Errore query database: ".mysql_error());
	if(mysql_num_rows($rs)>0){
		while($row = @mysql_fetch_array($rs)){
			$id = ($row['id']);
        	//....
			//....
			$info_strutture = "SELECT * FROM info_strutture WHERE id_strutture = $id";
			$result=mysql_query($info_strutture);
			//verifico che esistano ulteriori info relative alla struttura ricettiva e in caso affermativo stampo maggiori info
			$esistono_info=mysql_num_rows($result);
			if($esistono_info > 0) {
				echo ("<a href='pagine.php?pag=struttura_scheda&id=$id&denominazione=$denominazione'>Maggiori Informazioni</a><br /><hr>");
			}//fine secondo esistono
		}//fine while
	}//fine primo esistono
}//fine if get
?>

guarda che dove ho messo //... vuol dire che (mi sembra) vada bene quello che hai fatto tu
 
Risolto!!! :fonzie: Il problema non era esattamente nel codice della pagina delle strutture. Utilizzavo $result per due SELECT diverse e probabilmente si creava una sorta di conflitto che mi portava ad un'estrazione ciclica dei risultati.
Grazie dell'aiuto, senza un confronto, avrei continuato a scervellarmi :hammer: sul codice della pagina!!!
 

Discussioni simili