Newsgroup: it.comp.www.php
Titolo: query su 3 tabele?

e' possibile fare un query che riciambi più di 2 tabelle con mysql?
e vorrei fare una query di questo genere, per poi usare JOIN:
$sql = "SELECT ora,descrizione,codice_luogo, codice_data, codice_natura, 
nome luogo,data,natura,  FROM intitiative,luogo,data,natura WHERE 
codice_luogo = '".$_POST['luogo']."'AND 
initiative.codice_luogo=luogo.codice_luogo AND 
initiative.codice_data=data.codice_data AND 
initiative.codice_natura=natura_codice natura";
sapendo che in initiative ho (natura, codice_luogo, codice_data)
nelal tabella luogo (codice_luogo e  nome luogo)
nella tabella natura (codice_natura, nome natura)...
E possibile?
grazie
-- 
André Ebongué
Via Milani 130
40014 Crevalcore ( BO)

André Ebongué wrote:

nella query che hai scritto ci sono errori ma quello che vuoi fare credo sia
possibile..
vorresti eseguire una query che interroghi piu' di una tabella?
$_POST['luogo'] e' un numero?
cerco di correggere al volo..
SELECT 
ora, descrizione, codice_luogo, codice_data, 
codice_natura, nome_luogo, data, natura
FROM 
intitiative, luogo, data, natura
WHERE
codice_luogo             = '{$_POST['luogo']}' AND
initiative.codice_luogo  = luogo.codice_luogo AND
initiative.codice_data   = data.codice_data AND
initiative.codice_natura = natura.codice_natura
se esistono campi con lo stesso nome in due tabelle devi specificare quale
desideri subito dopo SELECT (come hai fatto in WHERE) con la sintassi
nome_tabella.campo_richiesto, altrimenti avrai un errore..
-- 
www.iuz-lab.info

> e' possibile fare un query che riciambi piů di 2 tabelle con mysql?


>

>>
al posto di $php_self usa $_SERVER['PHP_SELF'].. e' meglio..
quando passi a mysql_query una variabile _GET o _POST e' meglio controllarla
per via delle sql-injection..
quindi e' buona norma usare mysql_escape_string() o
mysql_real_escape_string..
per la funzione basta che la dichiari e poi la richiami passando i valori di
$_POST[];..
ex.
function stampa_post($var){
 echo $var;
 return TRUE;
}
stampa_post($_POST['luogo']);
comunque nel manuale ci sono alcuni esempi pratici..
http://it.php.net/manual/en/language.functions.php
-- 
www.iuz-lab.info


niente ne meno cosi funziona può essere dovuto à la natura della variabile?
mi spiego, l'idea è di interrogare un db con vari crtitteri, ( in base alle 
voce del db), esempio, l'utente vuole fare una ricerca per luogo ( ci sono 
diversi eventi ubicati in varie luoghi),
un qdi un form 1 lo invita à scegliere il metodo di ricerca, scelto il 
metodo, con una query c'è la connessione al db che restiusce i vari 
parametri ( in questo caso i luoghi):
scegli il luogo:<form name="luogo" action="risultati.php" 
method="post"><select name="luogo">
$sql = 'SELECT * FROM luogo';
$query = mysql_query($sql) or die( 'Erorre' );
$nb = mysql_num_rows($query);
mysql_close();
if ( $nb < 1) {
 echo '<option>nessun luogo</option>';
}
else {
 while ( $list = mysql_fetch_array( $query ) ) {
  echo "<option value='{$list['codice_luogo']}'>{$list['nome 
luogo']}</option>";
 }
}
?>
</select> <input type="submit"></form> e quindi ho un array come risultato
ho quindi form dinamico con option i luoghi trovati nel db l'utente sceglie 
quindi un luogo e a questo punto vorrei otrnare al db visualizzare gli 
eventi che han luogo in quei luoghi
formulo quindi una nuova query, prendendo il valore $_post['luogo']
per la ...WHERE....codice_luogo=$_post['luogo']
ma continuo ad avere questo errore:
 Undefined index: luogo in 
c:\programmi\easyphp1-7\www\farafina\risultati.php on line 21
perché?

 perché?
$_post['luogo']
$_POST['luogo']
php e' case sensitive..
-- 
www.iuz-lab.info

 
www.iuz-lab.info
niente da fare! ne meno cosi... non capisco piu nemeno il pocco che avevo 
capito!
provo a mettere i vari form, ti prego abbi ancora una ttimo di pazienza e 
aiutami:
FORM 1:
<form action="programma.php" method="post" name="ricerca">
        <select name="ricerca" size="1">
  <option value=""></option>
          <option value="data">per data</option>
      <option value="luogo">per luogo</option>
      <option value="natura">per natura</option>
    </select>
 <input type="submit" value="cerca">
 </form>
 FORM 2 in progr.php
 <?
   $scelta=$_POST["ricerca"];
   if(!($scelta))
   {
  echo "nessun genere scelto" ;}
 else {
 if (($scelta)=='data'){include "ricerca_data.php" ; }
 elseif (($scelta)=='natura') {echo "cerchiamo per natura" ; }
 elseif (($scelta)=='luogo') {echo "cerchiamo per luogo" ;}
 }
 ?>
e fin qua va tutto bene. adesso sto testando data.php
e li iniziano i guai...
FORM 3:
<form name="titi" action="risultati.php" method="post"><select name="luogo">
mysql_connect('localhost', 'root', '') or die('Erreur de connexion');
mysql_select_db('programme') or die('Base inexistante');
$scelta=$_POST["ricerca"];
$sql = 'SELECT * FROM luogo';
$query = mysql_query($sql) or die( 'Erorre' );
$nb = mysql_num_rows($query);
mysql_close();
if ( $nb < 1) {
 echo '<option>nessun luogo</option>';
}
else {
 while ( $list = mysql_fetch_array( $query ) ) {
  echo "<option value='{$list['codice_luogo']}'>{$list['nome 
luogo']}</option>";
 }
}
?>
</select> <input type="submit"></form>
fin qua tutto bene, si collega e mi restiusce i luoghi presenti.
adeso che voglio visualizzare gli eventi in questi luoghi
ho risultati. php ho:
mysql_connect('localhost', 'root', '') or die('Erreur de connexion');
mysql_select_db('programme') or die('Base inesistente');
$sql = "SELECT ora,descrizione,
initiative.codice_luogo,
 initiative.codice_data,
 initiative.codice_natura,
 nome luogo,data,
 nome natura,
 FROM intitiative,luogo,data,natura
 WHERE codice_luogo =  '{$_POST['titi']}' <<<<< è questa la linea 21
 AND initiative.codice_luogo=luogo.codice_luogo AND 
initiative.codice_data=data.codice_data AND 
initiative.codice_natura=natura_codice natura";
 $query = mysql_query($sql) or die( 'Errore' );
while ( $data= mysql_fetch_assoc($query))
 {
 echo '<b>'.$data['data'].' '.$data['ora'].'</b> 
('.$data['descrizione'].')'.'<br>';
  }
mysql_close();
  ?>
m a ottengo : Undefined index: titi in 
c:\programmi\easyphp1-7\www\farafina\risultati.php on line 21
 non ci caisco + niente

  non ci caisco + niente
perche' $_POST['titi']?
non dovrebbe essere $_POST['luogo']..
-- 
www.iuz-lab.info

"iuz" <us...@host.network> ha scritto nel messaggio 
news:p9TAd.346545$b5.17...@news3.tin.it...

se noti nel FORM 3 ho cambiato il nome invece di form NAME=luogo o messo 
titi, perche mi sono detto che magari avendo una tabella nel db di nome 
luogo, poteva creare casino...
cmq pure ritornando a luogo mi da luogo come indefinito.
può essere dovuto che nel form precedente mi dia un array come riposta in 
quanto l'interrogazione dle db restitiusce 4 luoghi?
e quindi che debba quindi utilizzare la variabile $list del FORM 3?
grazie ancora 

 grazie ancora
ho un fato un test e ho notato che la mia variabile non č trasmessa al db:
if ( isset( $_POST['titi'] ) ) {
    echo 'variabile ricevuta ed ha questo valore ' . $_POST['titi'];
}
else {
    echo 'variabile non ricevuta';}
lo letto del cambiamento del register_global configurato ad OFF, c'entra il 
fatto? credo di non dato che sto usando $_POST.
questo punto per me il problema č: perche non viene trasmessa la mia 
variabile?
se puņ aiutare ho easyphp 1.7 

 se può aiutare ho easyphp 1.7
il nome del dato passato nella select e' 'luogo' 'titi' e' il nome del
form..
prova a fare un print_r($_POST);
-- 
www.iuz-lab.info

 
www.iuz-lab.info
 

> 
www.iuz-lab.info
no non ti arrendi..
fai una cosa..
posta la struttura del database (tutte le tabelle interessate) compresi i
dati per fare qualche test..
-- 
www.iuz-lab.info