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
 

minatore

Utente Attivo
25 Set 2007
410
0
0
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
 

minatore

Utente Attivo
25 Set 2007
410
0
0

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
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
147
63
PR
www.borgo-italia.it
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']))
{
//......
 

minatore

Utente Attivo
25 Set 2007
410
0
0
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:
 

minatore

Utente Attivo
25 Set 2007
410
0
0

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
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
147
63
PR
www.borgo-italia.it
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
 

minatore

Utente Attivo
25 Set 2007
410
0
0
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
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
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']))
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
147
63
PR
www.borgo-italia.it
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
 

minatore

Utente Attivo
25 Set 2007
410
0
0

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ò
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
147
63
PR
www.borgo-italia.it
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
 

minatore

Utente Attivo
25 Set 2007
410
0
0

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.
 

minatore

Utente Attivo
25 Set 2007
410
0
0

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
 

minatore

Utente Attivo
25 Set 2007
410
0
0

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'";
												[email protected]_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>";
					}
			}
	}
?>
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
147
63
PR
www.borgo-italia.it
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
Autore Titolo Forum Risposte Data
S problema con recupero dati tabella mysql PHP 2
D Recupero dati da HDD esterno Hardware 0
L Recupero dati da SSD Windows 10 prof Windows e Software 2
Sergio Unia Recupero dati da una vecchia versione MySql [Risolto] MySQL 4
L Problema con recupero dati in PHP cURL e JAVA con server PHP 1
S [PHP] Recupero più dati da form realizzata ciclo FOR PHP 5
P [PHP] Recupero dati da un array PHP 5
F Recupero dati json Ajax 2
I tabella con ciclo, recupero dati PHP 3
Emix Problema recupero Dati da MYSQL PHP 20
L Recupero dati da tutte le tabelle nel db MySQL 4
Alessio Gebbia [PHP] Recupero dati da un WHILE ! PHP 3
M recupero dati... PHP 1
P Recupero dati per select form PHP 9
L Recupero dati form in tabella e invio con ajax. Problemino jQuery 1
felino HDD 2.5'' caduto a terra: possibile recupero dei dati al suo interno Hardware 8
Emix Recupero dati da una tabella e spostarli in un altra PHP 11
C Recupero dati da pagina esterna PHP 5
M recupero dati da db PHP 6
T Problema con form e recupero dati da mysql PHP 17
F errori sul recupero dati mysql e php PHP 3
minatore Recupero dati MySQL 10
T Problema recupero dati da file [era: help script php] PHP 9
Vale2 Recove my files ™ Recupero dati Windows e Software 1
Vale2 Software per Recupero dati Windows e Software 0
D relazioni 1:n e recupero dati da form PHP 2
R Recupero dati hd esterno Windows e Software 3
O recupero dati da pagina web PHP 1
M Recupero dati Database tramite form richiesta PHP 9
B aiuto con ajax (recupero dati da un db) Javascript 2
M Recupero dati da pagina php PHP 2
E Recupero dati da database PHP 8
I Recupero particolari dati PHP 32
T recupero dati ASP.NET 0
T recupero dati da database ASP.NET 6
W Problema recupero dati database Javascript 2
C recupero dati dal form Javascript 1
C Anomalia Cartteri & recupero dati!!!!! Supporto Mr.Webmaster 0
T foreach e fetchAll dove recupero solo l'ultimo record PHP 5
T recupero valori select multipla da android Javascript 3
W Recupero password Classic ASP 16
S [PHP] Recupero nome immagine da Form con input file PHP 3
bubino8 [PHP] Recupero id autoincrement PHP 8
I Recupero accesso pannello di controllo dominio Leggi, Normative e Fisco 2
S [PHP] form con metodo get e recupero id PHP 4
Emix [PHP] Check - Select e recupero variabili PHP 40
bubino8 [PHP] Recupero input senza invio PHP 1
U [PHP] Selezione con menu a tendina e recupero selezione PHP 5
P Javascript o Jquery - recupero testo (oltre al valore) di una select Javascript 5
P [Javascript] Aiuto per recupero variabili da script Javascript 10

Discussioni simili