variabile php che raccoglie molti ID e li passa a un'altra query

zanzu

Nuovo Utente
20 Apr 2011
5
0
0
Salve. Ho appena inziato a usare php e MySql arrivando da asp e Access e dove posso mi faccio aiutare da Dreamweaver.
Il problema è questo: estraggo una serie di ID da una tabella tramite una query e devo estrarre i dati relativi a quegli ID da un'altra tabella che ha lo stesso campo ID in relazione.
Mi spiego meglio: ho una tabella "Servizi" dalla quale, tramite una ricerca estraggo gli ID di tutte le ditte che svolgono un determinato servizio. Fatto questo, devo usare quegli ID per estrarre da un'altra tabella "Aziende" i dati "Ragione_Sociale","indirizzo", eccetera.
La variabile che passa i dati può contenere da 1 a qualche decina di ID.
Grazie per qualsiasi suggerimento
 

micio86

Utente Attivo
Fai un ciclo

Hai la tua query mysql in php tipo :

PHP:
<?php

$risultato = mysql_query("SELECT id FROM mia_tabella");

while ($riga = mysql_fetch_array($risultato, MYSQL_ASSOC){
    // Qui fai le tue query select con l'id che sarà in --> $riga['id'];
}
?>
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
23
Roma
alessandro1997.netsons.org
Invece di scrivere:
PHP:
mysql_fetch_array($risultato, MYSQL_ASSOC);
È più pratico scrivere:
PHP:
mysql_fetch_assoc($risultato);
E, in realtà, sarebbe meglio evitare di usare la libreria mysql, perché è deprecata. Ti consiglio di usare PDO, oppure PEAR_MDB2 (non l'ho mai usata, ma so che è molto buona).
 

zanzu

Nuovo Utente
20 Apr 2011
5
0
0
Abbiate pazienza. Sto cercando di capire il ragionamento. La variabile "$risultato" dovrebbe contenere l'esito della prima query, cioè l'elenco degli ID?
Questo è il codice che sto usando:
PHP:
// query
mysql_select_db($database_ConnCoop, $ConnCoop);
$query_Rs_ricerca = "SELECT ".$servizio.", IDcoop FROM settori WHERE ".$servizio." = '1'";
$Rs_ricerca = mysql_query($query_Rs_ricerca, $ConnCoop) or die(mysql_error());
$row_Rs_ricerca = mysql_fetch_assoc($Rs_ricerca);
$totalRows_Rs_ricerca = mysql_num_rows($Rs_ricerca);
}
Il dato poi ce l'ho in
PHP:
<?php echo $row_Rs_ricerca['IDcoop']; ?>
che posso far vedere interamente tramite
PHP:
<?php do { ?>
<?php echo $row_Rs_ricerca['IDcoop']; ?><br />
<?php } while ($row_Rs_ricerca = mysql_fetch_assoc($Rs_ricerca)); ?>
Quindi nello specifico del mio caso la variabile $risultato come la definisco?
Scusate l'ignoranza.
 

micio86

Utente Attivo
PHP:
while ($riga = mysql_fetch_array($row_Rs_ricerca){
    // Qui fai le tue query select con l'id che sarà in --> $row_Rs_ricerca['IDcoop'];
}
 

zanzu

Nuovo Utente
20 Apr 2011
5
0
0
Mi da errore "Parse error: syntax error, unexpected" alla riga
PHP:
while ($riga = mysql_fetch_array($row_Rs_ricerca){
Codice completo con la query
PHP:
while ($riga = mysql_fetch_array($row_Rs_ricerca){
    // Qui fai le tue query select con l'id che sarà in --> $row_Rs_ricerca['IDcoop'];
	
mysql_select_db($database_ConnCoop, $ConnCoop);
$query_RsCoop = sprintf("SELECT * FROM coop WHERE IDcoop = $row_Rs_ricerca['IDcoop']";
$RsCoop = mysql_query($query_RsCoop, $ConnCoop) or die(mysql_error());
$row_RsCoop = mysql_fetch_assoc($RsCoop);
$totalRows_RsCoop = mysql_num_rows($RsCoop);
}  
else echo $error;
 

micio86

Utente Attivo
Togli questo else echo $error;

Non esiste un costrutto while else...
Se mai devi fare un if (numero_righe) {while...} else {errore}

Quindi:
PHP:
if($totalRows_Rs_ricerca) {
while ($riga = mysql_fetch_array($row_Rs_ricerca){
   mysql_select_db($database_ConnCoop, $ConnCoop);
   $query_RsCoop = sprintf("SELECT * FROM coop WHERE IDcoop = '".$row_Rs_ricerca['IDcoop']."'";
   $RsCoop = mysql_query($query_RsCoop, $ConnCoop) or die(mysql_error());
   $row_RsCoop = mysql_fetch_assoc($RsCoop);
   $totalRows_RsCoop = mysql_num_rows($RsCoop);
}
}
else echo $error;
 
Ultima modifica:

zanzu

Nuovo Utente
20 Apr 2011
5
0
0
Ho capito il motivo dell'errore di prima, tuttavia ci deve essere qualcos'altro che non va perchè continua a darmi errore alla stessa riga
PHP:
"Parse error: syntax error, unexpected '{' in D:\XAMPP\htdocs\coop_venete\risultati2.php on line 37"
Ti metto il codice di entrambe le query
PHP:
....
if (!$error) {
$servizio=$select_utente;

// prima query
mysql_select_db($database_ConnCoop, $ConnCoop);
$query_Rs_ricerca = "SELECT ".$servizio.", IDcoop FROM settori WHERE ".$servizio." = '1'";
$Rs_ricerca = mysql_query($query_Rs_ricerca, $ConnCoop) or die(mysql_error());
$row_Rs_ricerca = mysql_fetch_assoc($Rs_ricerca);
$totalRows_Rs_ricerca = mysql_num_rows($Rs_ricerca);
}
else echo $error;  

// seconda
if($totalRows_Rs_ricerca) {
while ($riga = mysql_fetch_array($row_Rs_ricerca){
   mysql_select_db($database_ConnCoop, $ConnCoop);
   $query_RsCoop = sprintf("SELECT * FROM coop WHERE IDcoop = '".$row_Rs_ricerca['IDcoop']."'";
   $RsCoop = mysql_query($query_RsCoop, $ConnCoop) or die(mysql_error());
   $row_RsCoop = mysql_fetch_assoc($RsCoop);
   $totalRows_RsCoop = mysql_num_rows($RsCoop);
}
}
else echo $error;
Grazie
 

micio86

Utente Attivo
Questo si contraddice!!!
PHP:
if (!$error) {
$servizio=$select_utente;

// prima query
mysql_select_db($database_ConnCoop, $ConnCoop);
$query_Rs_ricerca = "SELECT ".$servizio.", IDcoop FROM settori WHERE ".$servizio." = '1'";
$Rs_ricerca = mysql_query($query_Rs_ricerca, $ConnCoop) or die(mysql_error());
$row_Rs_ricerca = mysql_fetch_assoc($Rs_ricerca);
$totalRows_Rs_ricerca = mysql_num_rows($Rs_ricerca);
}
else echo $error;
Fallo così :
PHP:
$servizio=$select_utente;

// prima query
mysql_select_db($database_ConnCoop, $ConnCoop);
$query_Rs_ricerca = "SELECT ".$servizio.", IDcoop FROM settori WHERE ".$servizio." = '1'";
$Rs_ricerca = mysql_query($query_Rs_ricerca, $ConnCoop) or die(mysql_error());
$row_Rs_ricerca = mysql_fetch_assoc($Rs_ricerca);
$totalRows_Rs_ricerca = mysql_num_rows($Rs_ricerca);
Credo ke la prima query la devi fare sempre no!??! Quindi niente condizioni!
Poi l'errore indica chiaramente che hai una graffa non chiusa o un punto e virgola mancante!
 

zanzu

Nuovo Utente
20 Apr 2011
5
0
0
Ho controllato bene il codice (per quello che riesco a capire) e ho fatto delle prove, cioè ho testato la pagina senza la seconda query ed è tutto a posto; poi mi da l'errore di sintassi già visto ieri a questa riga:
PHP:
while ($riga = mysql_fetch_array($row_Rs_ricerca){
Scrivo il codice completo
PHP:
<?php require_once('Connections/ConnCoop.php'); ?>

<?php

//questo è un controllo di sicurezza anti sql injction:
$array_voci=array('TRASCRIZIONE','SEGRETERIA','VERDE_MANUTENZIONE','PULIZIE');//qui aggiungerò tutte le altre voci del select option

if (isset($_GET['servizi']) AND !empty($_GET['servizi'])) $select_utente = $_GET['servizi'];
else $error="Errore: campo obbligatorio, devi scegliere una delle voci.";

$servizio=$select_utente;

// prima query
mysql_select_db($database_ConnCoop, $ConnCoop);
$query_Rs_ricerca = "SELECT ".$servizio.", IDcoop FROM settori WHERE ".$servizio." = '1'";
$Rs_ricerca = mysql_query($query_Rs_ricerca, $ConnCoop) or die(mysql_error());
$row_Rs_ricerca = mysql_fetch_assoc($Rs_ricerca);
$totalRows_Rs_ricerca = mysql_num_rows($Rs_ricerca);  

// seconda query
if($totalRows_Rs_ricerca) {
while ($riga = mysql_fetch_array($row_Rs_ricerca){
   mysql_select_db($database_ConnCoop, $ConnCoop);
   $query_RsCoop = sprintf("SELECT * FROM coop WHERE IDcoop = '".$row_Rs_ricerca['IDcoop']."'";
   $RsCoop = mysql_query($query_RsCoop, $ConnCoop) or die(mysql_error());
   $row_RsCoop = mysql_fetch_assoc($RsCoop);
   $totalRows_RsCoop = mysql_num_rows($RsCoop);
}
}
else echo $error;  
?>
L'errore subentra con la seconda query e non riesco a capire quale sia
 

micio86

Utente Attivo
Tutte le parentesi sia tonde ke graffe che apri le devi chiudere!
Se ti da sintax error son sempre le parentesi o i punti e virgola
PHP:
while ($riga = mysql_fetch_array($row_Rs_ricerca)){  ......
}