Recupero dati

minatore

Utente Attivo
25 Set 2007
410
0
0
Ciao, rieccomi di nuovo, visto che mi sono buttato in questa cosa nuova per me, cerco il vostro aiuto.
Non so se aprire una nuova discussione in php oppure rimanere in questa.
Con il vostro aiuto sono riuscito ad avere i risultati per regione, adesso avrei un problema, visto che ho anche una combo dove ci sono le province, come faccio a ricavare gli annunci per la provincia stessa.
Vi posto quanto fatto
PHP:
if(isset($_POST['regione']))
	{
		$regione = $_POST['regione'];
		$query = mysql_query("SELECT * FROM registrazione WHERE id_regione='$regione'");
		$num = mysql_num_rows($query);
		if($num == 0)
			{
				echo"
				<table cellpadding='0' cellspacing='0' border='0' width='615' height='100'>
					<tr>
						<td align='left' class='testo_4'>
							La ricerca non ha prodotto risultati!
						</td>
					</tr>
				</table>";
			}
		else
			{
				while($risultato=mysql_fetch_assoc($query))
					{
						$query1 = mysql_query("SELECT * FROM annunci WHERE id_reg=$risultato[id_reg]");
						for($i = 0; $i < mysql_num_rows($query1); $i++)
							{
								$risultato1 = mysql_fetch_assoc($query1);
								echo"
								<table background='images/backg_annuncio.png' cellpadding='0' cellspacing='0' border='0' width='615' height='100'>
									<tr>
										<td width='125'>
											<table cellpadding='0' cellspacing='0' border='0'>
												<tr>
													<td width='5'></td>
													<td width='110' height='83'><img src='images/ft.jpg' width='110' height='83'></td>
												</tr>
											</table>
										</td>
										<td>
											<table background='images/backg_annuncio_2.png' cellpadding='0' cellspacing='0' border='0' width='450' height='95'>
												<tr>
													<td width='10' height='15'></td>
													<td width='340'></td>
													<td></td>
												</tr>
												<tr>
													<td></td>
													<td align='left' class='testo_1'>
														$risultato1[modello]
													</td>
													<td></td>
												</tr>
												<tr>
													<td></td>
													<td align='left' class='testo_1'>
														6500,00 &euro;
													</td>
													<td align='left' class='testo_2'>31/02/2012</td>
												</tr>
												<tr>
													<td></td>
													<td align='left' class='testo_1'>
														Caserta
													</td>
													<td align='left' class='testo_2'>Azienda</td>
												</tr>
											</table>
										</td>
									</tr>
								</table>";
							}
					}
			}
	}
mi dite dove intervenire, se metto alla fine un
Codice:
 elseif
non lo tiene in considerazione in quanto la prima condizione è stata soddisfatta.
Se ritenete necessario spostarlo nell'area php fate pure, altrimenti posso aprire un nuovo post in php

Grazie da minatore
 
ciao
posta il dump delle tabelle così ragioniamo meglio (penso però dopo il ponte)


Ciao borgo, allora facciamo così, approfitto del ponte per risolvere il problema da solo, in caso di fallimento chiedo il vostro aiuto.
Grazie borgo
In questi 3-4 giorni qualcosa ne uscirà fuori
Buon ponte a tutti
 

Ciao a tutti, eccomi qua, ho esaurito tutte le mie opzioni, ho provato a fare tutto quello che conoscevo, ma come già detto questa cosa non lo mai fatta. Vi spiego il mio progetto (secondo me molto complicato).
Tabella Annunci (modificata) composta da
-id annuncio
-id_regione
-id_provincia
-id_marca
-modello

In totale nella index.php ho 4 select e un campo text che puntano alla pagina ricerca.php
La select provincia è legata alla scelta delle regioni, quindi non indipendente, per il resto l'utente potrà scegliere il metodo di ricerca che vuole.
La pagina ricerca.php
PHP:
if(isset($_POST['regione']))
	{
		$regione = $_POST['regione'];
		$query = mysql_query("select * from annunci where id_regione = '$regione'");
		for($a = 0; $a < mysql_num_rows($query); $a++)
			{
				$ris = mysql_fetch_assoc($query);
				echo"
				<table border='1' width='200'>
					<tr>
						<td class='testo_3'>$ris[id_annuncio]</td>
					</tr>
				</table>";
			}
	}
questo script funziona, poi ho pensato, di ampliarlo con questo
PHP:
if(isset($_POST['regione']))
	{
		$regione = $_POST['regione'];
		$query = mysql_query("select * from annunci where id_regione = '$regione'");
		for($a = 0; $a < mysql_num_rows($query); $a++)
			{
				$ris = mysql_fetch_assoc($query);
				echo"
				<table border='1' width='200'>
					<tr>
						<td class='testo_3'>$ris[id_annuncio]</td>
					</tr>
				</table>";
			}
	}
elseif(isset($_POST['regione']) && isset($_POST['provincia']))
	{
		$regione = $_POST['regione'];
		$provincia = $_POST['provincia'];
		$query = mysql_query("select * from annunci where id_provincia = '$provincia'");
		for($a = 0; $a < mysql_num_rows($query); $a++)
			{
				$ris = mysql_fetch_assoc($query);
				echo"
				<table border='1' width='200'>
					<tr>
						<td class='testo_3'>$ris[id_annuncio]</td>
					</tr>
				</table>";
			}
	}
dicendo se è settato regione e provincia allora fai questo, invece lui si ferma sempre sul primo.
Figuriamoci quando vado a inserire anche gli altri 2 modi di ricerca, ne uscirà una macedonia andata a male:incazz2:
Potreste darmi una dritta su come risolvere il problema e andare avanti
Grazie da minatore
 
ciao
secondo me dipende dalla prima condizione dove chiedi se $_POST['regione'] è "issato", se ci pensi bene anche se dai anche il post[provincia] il post[regione] romanne "issato" quindi ti esegue il primo if
prova a mettere
PHP:
if(isset($_POST['regione']) && !isset($_POST['provincia'])) 
    { 
       //......    } 
elseif(isset($_POST['regione']) && isset($_POST['provincia']))
{
//......
 
Ciao borgo è un piacere sentirti
PHP:
<?php
if(isset($_POST['regione']) && !isset($_POST['provincia']))
	{
		$regione = $_POST['regione'];
		$query = mysql_query("select * from annunci where id_regione = '$regione'");
		for($a = 0; $a < mysql_num_rows($query); $a++)
			{
				$ris = mysql_fetch_assoc($query);
				echo"
				<table border='1' width='200'>
					<tr>
						<td class='testo_3'>$ris[id_annuncio]</td>
					</tr>
				</table>";
			}
	}
elseif(isset($_POST['regione']) && isset($_POST['provincia']))
	{
		$regione = $_POST['regione'];
		$provincia = $_POST['provincia'];
		$query = mysql_query("select * from annunci where id_provincia = '$provincia'");
		for($a = 0; $a < mysql_num_rows($query); $a++)
			{
				$ris = mysql_fetch_assoc($query);
				echo"
				<table border='1' width='200'>
					<tr>
						<td class='testo_3'>$ris[id_annuncio]</td>
					</tr>
				</table>";
			}
	}
?>
così facendo non mi visualizza più le regioni, ma va bene con le province :confused:
 

Ciao borgo, mo mi prendo a schiaffi da solo
ho cambiato la prima riga di codice con
PHP:
if(isset($_POST['regione']) && !$_POST['provincia'])
funziona, sia la regione che la provincia, ma
questo
!$_POST['provincia'])
è corretto?
Ciao da minatore
 
ciao
isset determina se una variabile esiste e che il suo valore non sia null, quindi
isset($_POST['regione']) && !isset($_POST['provincia']))
vuol dire in pratica
esegui se $_POST['regione'] esiste e il suo valore non è nullo E $_POST['provincia'] non esiste o è nullo (l'esclamativo davanti nega l'isset = NON esiste o null)
quello che hai scritto (considera che il valore null viene interpretato come false)
!$_POST['provincia'] vuol dire se es. il post è null => false, non false quindi vero.
è un ragionamento un po' arzigogolato, ma ottieni il risultato opposto dell'isset
 
ciao
isset determina se una variabile esiste e che il suo valore non sia null, quindi
isset($_POST['regione']) && !isset($_POST['provincia']))
vuol dire in pratica
esegui se $_POST['regione'] esiste e il suo valore non è nullo E $_POST['provincia'] non esiste o è nullo (l'esclamativo davanti nega l'isset = NON esiste o null)
quello che hai scritto (considera che il valore null viene interpretato come false)
!$_POST['provincia'] vuol dire se es. il post è null => false, non false quindi vero.
è un ragionamento un po' arzigogolato, ma ottieni il risultato opposto dell'isset


Quindi cosa mi consigli di fare
visto che con
PHP:
!isset non funziona

Ciao
 
Ciao,
Potresti provare con empty()
PHP:
// se è settata la regione e la provincia è vuota
if(isset($_POST['regione']) && empty($_POST['provincia']))  

// altrimenti

// se è settata la regione e la provincia non è vuota

 elseif (isset($_POST['regione']) && !empty($_POST['provincia']))
 
ciao
dipende anche cosa si mette come value nella prima option della select, se es
<option>- seleziona regione -</option> (oppure provincia) l'isset e il !isset funziano in quanto il valore del post è null in caso non abbia selezionato qualcosa
analogo per
<option value="">- seleziona regione -</option>
il problema puo esserci nel caso che le due select non siano dinamiche (selzionando la regione appaiono le select delle provincie, ajax) perchè uno puo selzionare regione sicilia e provincia bolzano
 

Ciao ragazzi, io qualcosa ho raccimolato, nel senso che premi e premi qualche goccia dalla testolina è uscita.
Vi dico in anticipo se volete che questa discussione sia spostata in PHP ditelo pure, o fate voi, comunque trattasi di php e query.
PHP:
<?php
if(isset($_POST['regione']))
	{
		$regione = $_POST['regione'];
		if($_POST['provincia'])
			{
				$provincia = $_POST['provincia'];
				$query = mysql_query("select * from annunci where id_provincia = '$provincia'");
				for($a = 0; $a < mysql_num_rows($query); $a++)
					{
						$ris = mysql_fetch_assoc($query);
						echo"
							<table border='1' width='200'>
								<tr>
									<td class='testo_3'>$ris[id_annuncio]</td>
								</tr>
							</table>";
					}
			}
		else
			{
				$query = mysql_query("select * from annunci where id_regione = '$regione'");
				for($a = 0; $a < mysql_num_rows($query); $a++)
					{
						$ris = mysql_fetch_assoc($query);
						echo"
						<table border='1' width='200'>
							<tr>
								<td class='testo_3'>$ris[id_annuncio]</td>
							</tr>
						</table>";
					}
			}
	}
?>
Con queste righe riesco ad avere quello che volevo, scegliendo una regione ho i risultati per quella regione, e selezionando la provincia ho gli annunci per provincia scelta.
Il problema si pone al secondo al terzo giro, nel senso scegliendo una nuova regione non ottengo risultati, molto probabilmente perchè ha ancora in se la provincia.
Come faccio ad elimiare questo dato.
Mi rendo conto che non sono stato molto chiaro però
 
ciao
metti due var_dump e al secondo giro guarda cosa ti risulta

PHP:
<?php 
if(isset($_POST['regione'])) 
    { 
        $regione = $_POST['regione'];
		var_dump($_POST['regione']);
		var_dump($_POST['provincia']);
        if($_POST['provincia']) 
            { 
                $provincia = $_POST['provincia']; 
                $query = mysql_query("select * from annunci where id_provincia = '$provincia'"); 

//...........
?>
p.s.
penso sia meglio php, ora dico di spostarla
 

Ciao borgo, sto var dump è veramente utile, mi diceva che la prima volta la provincia è zero.
Allora cosa ho fatto nella parte di onchange ho inizializzato id_provincia uguale a zero.
Adesso ogni qualvolta che seleziono la regione in automatico mi porta id_provincia a zero e funziona.

Grazie, adesso posso continuare da solo.
Arrivederci al prossimo intoppo.
 

Ciao borgo, sto var dump è veramente utile, mi diceva che la prima volta la provincia è zero.
Allora cosa ho fatto nella parte di onchange ho inizializzato id_provincia uguale a zero.
Adesso ogni qualvolta che seleziono la regione in automatico mi porta id_provincia a zero e funziona.

Grazie, adesso posso continuare da solo.
Arrivederci al prossimo intoppo.

Ciao, ho provato, funziona, ma c'è un effetto collaterale, se non risolvo vi faccio sapere
da minatore
 

Ciao a tutti, vi spiego l'effetto collaterale
questa è la index.php
PHP:
$id_regione="";
			if(isset($_POST['regione']))
			$id_regione=$_POST['regione'];
			if(isset($_POST['provincia']))
			$id_provincia=$_POST['provincia'];
			if(isset($_POST['costruttore']))
			$id_marca=$_POST['costruttore'];
			

			echo"
			<form action='index.php?jsx=ricerca' name='search' method='POST'>
<select onchange='document.search.submit()' name='regione' class='elenco_2'>
									<option value=''>Seleziona regione</option>";
									$regione=mysql_query("Select * From regioni ORDER BY descr_regione")
									or die("errore nella query_regioni;".mysql_error());
									for($a = 0; $a < mysql_num_rows($regione);$a++)
										{
											$a_elenco_regione=mysql_fetch_assoc($regione);
											echo"
												<option value='".intval($a_elenco_regione['id_regione'])."'";
												if($id_regione==$a_elenco_regione['id_regione'])
													{
														echo"selected";
													}
												echo">";
												echo"$a_elenco_regione[descr_regione]";
												echo"</option>";
										}
								echo"
								</select>
<select onchange='document.search.submit()' name='provincia' class='elenco_2'>
									<option value=''>Seleziona provincia</option>";
										if(isset($id_regione))
											{
												$sql_provincia="SELECT * FROM province WHERE id_regione='$id_regione'";
												$query_provincia=@mysql_query($sql_provincia) or die (mysql_error());
												while ($rigaP=mysql_fetch_array($query_provincia))
													{
														$provincia=$rigaP['descr_provincia'];
														$idProvincia=$rigaP['id_provincia'];
														echo "<option value='$idProvincia'";
														if ($id_provincia==$idProvincia) {echo " selected";}
														echo ">".$provincia."</option>";
													}
											}
								echo"	
								</select>
</form>
Questo è il codice.
Quando entro la prima volta va tutto bene, però da come ho notato rimangono dei valori salvati nella provincia, quindi ho pensato di mettere
PHP:
$id_provincia = 0;
con questo ogni volta che entro è come se fosse la prima volta, l'effetto indesiderato è che mentre prima nella combo mi rimaneva scritta la provincia, adesso mi si visualizza
Codice:
seleziona provincia
.
ciò non va bene perchè avendo un altro campo di ricerca non ho più a disposizione la provincia che è un campo utile.
Vorrei ricordare come dovrebbe funzionare
- se si seleziona la regione ricerca dati generali per regione
- la ricerca non può essere fatta solo per provincia perchè essa è legata alla regione
- se si seleziona marca auto ricerca i dati in generale, se selezionata regione ricerca marca per regione, se selezionata provincia ricerca marca per provincia.
Poi avrei una text dove inserire il modello ma non vi dico il seguito perchè già avete capito cosa dovrebbe fare. Tutti sono indipendenti tra loro tranne provincia.
E' una sorta di intreccio tra i vari campi, infatti mi sono fatto uno schemino su carta con tanti se.
Non so se vi è mai capitata una ricerca del genere, a me è la prima volta
Ciao a tutti e buona domenica da minatore
ricerca.php
PHP:
<?php
if(isset($_POST['regione']))
	{
		$regione = $_POST['regione'];
		if($_POST['provincia'])
			{
				$provincia = $_POST['provincia'];
				$query = mysql_query("select * from annunci where id_provincia = '$provincia'");
				for($a = 0; $a < mysql_num_rows($query); $a++)
					{
						$ris = mysql_fetch_assoc($query);
						echo"
							<table border='1' width='200'>
								<tr>
									<td class='testo_3'>$ris[id_annuncio]</td>
								</tr>
							</table>";
					}
			}
		else
			{
				$query = mysql_query("select * from annunci where id_regione = '$regione'");
				for($a = 0; $a < mysql_num_rows($query); $a++)
					{
						$ris = mysql_fetch_assoc($query);
						echo"
						<table border='1' width='200'>
							<tr>
								<td class='testo_3'>$ris[id_annuncio]</td>
							</tr>
						</table>";
					}
			}
	}
?>
 
ciao
una domanda

- se si seleziona marca auto ricerca i dati in generale, se selezionata regione ricerca marca per regione, se selezionata provincia ricerca marca per provincia.
la <select> della marca è nel form che hai postato sopra?
 

Discussioni simili