UPDATE dinamico campo vuoto del DB

ciopin

Utente Attivo
26 Mar 2010
59
0
0
Buongiorno Ragazzi,

io avrei questa esigenza:

all'interno del mio db ho una tabella dove ci sono i campi

citta
provincia

Negli ultimi giorni, per un problema di form nn funzionante, il campo citta nn è stato popolato ed io vorrie creare uno script che in un ciclo mi fa una query e mi interroga il db e vede dove il campo provincia è VUOTO lo popola col valore del campo città......a parole tutto facile ma come potrei fare?

Mi aiutate per favore?
 
ciao
se hai una tabella (es. chiamata localita) con i campi
citta
provincia

e vuoi aggiornare un'altra tabella (es. chiamata tabella) sempre con i campi citta e provincia aggiornado citta se è vuoto potresti fare così

PHP:
<?php
//...
$q_1=mysql_query"SELECT * FROM tabella");
while($riga_1=mysql_fetch_array($q_1)){
	$id_1=$riga_1['id'];
	$citta_1=$riga_1['citta'];
	$provincia_1=$riga_1['provincia'];
	if($citta_1 ==""){//se il campo citta è vuoto aggirno
		//leggo il campo citta corrispondente a provincia nella tabella localita
		$q_2=mysql_query("SELECT citta FROM localita WHERE provincia='$provincia_1'");
		$riga_2=mysql_fetch_array($q_2);
		$citta_2=$riga_2['citta'];
		//aggiorno il campo citta in tabella
		$q_3=mysql_query("UPDATE tabella SET citta=''$citta_2' WHERE id='$id_1'");
	}
}
//...
?>
se non hai la tabella localita, mo sa che devi fare "manina manina" cioè se $citta_1 =="" visualizzare un form con un campo di input citta, inputare il nome e uppare
 
Ciao io ho una sola tabella con dentro i campi citta e prov ( che chaimo city e county) ho fatto come mi hai detto

PHP:
<?php 
//... 

set_time_limit(0);
	
	error_reporting(E_ALL);
	ini_set('display_errors','On');
	
	
	$dbhost1 = "xxxx";
	$dbname1 = "xxxx";
	$dbuser1 = "xxxx";
	$dbpass1 = "xxxxx";

	$link = mysql_connect($dbhost1, $dbuser1, $dbpass1) or die("Could not connect");
	mysql_select_db($dbname1);
	
	
$q_1=mysql_query"SELECT  nometabella . city , nometabella . county , nometabella_partner . email FROM nometabella LEFT JOIN nometabella_partner ON nometabella . progr =nometabella_partner . id_user WHERE partner ='eagle' and datareg LIKE '2012-01-19%' and nometabella . email  LIKE '%pippo@aol.com%'"); 
while($riga_1=mysql_fetch_array($q_1)){ 
    $id_1=$riga_1['county']; 
    $city_1=$riga_1['city']; 
    $county_1=$riga_1['county']; 
    if($city_1 ==""){//se il campo city è vuoto aggirno 
        //leggo il campo city corrispondente a county nella tabella localita 
        $q_2=mysql_query("SELECT city FROM localita WHERE county='$county_1'"); 
        $riga_2=mysql_fetch_array($q_2); 
        $city_2=$riga_2['city']; 
        //aggiorno il campo city in tabella 
        $q_3=mysql_query("UPDATE nometabella SET city=''$city_2' WHERE id='$id_1'"); 
    } 
} 
//... 

mysql_close();
?>

ma mi restituisce questo errore

Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /opt/hoster/vhosts/miodominio.com/httpdocs/cartella_test/prova_update.php on line 19
 
Ho corretto la ( come giustamente mi facevi notare tu ma adesso ho questo errore

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /opt/hoster/vhosts/miodominio.com/httpdocs/prova_update.php on line 27
 
ciao
dividi la query e metti i soliti var_dump, commentando le righe che interrogano il db
PHP:
<?php
//....
    //leggo il campo city corrispondente a county nella tabella localita 
        $q_2_str="SELECT city FROM localita WHERE county='$county_1'";
		var_dump($q_2_str);
		 $q_2=mysql_query($q_2_str);
		 var_dump($q_2);
        //$riga_2=mysql_fetch_array($q_2); 
        //$city_2=$riga_2['city']; 
        //aggiorno il campo city in tabella 
        //$q_3=mysql_query("UPDATE nometabella SET city=''$city_2' WHERE id='$id_1'"); 
    } 
//...
?>
guarda e posta cosa riportano
sorattutto il primo che NON risulti string(xy) "SELECT city FROM localita WHERE county=''"
 
Ho corretto un errore di sintassi nell UPDATE ($q_3) adesso nn mi da l'errore ma non mi funziona nulla..non mi updata...ho provato a mettere una costante (test) credendo che dipendesse dalla variabile ma nulla..dov'è che sbaglio?

PHP:
<?php 
//... 

set_time_limit(0);
	
	error_reporting(E_ALL);
	ini_set('display_errors','On');
	
	
	//dati connessione DB

	$link = mysql_connect($dbhost1, $dbuser1, $dbpass1) or die("Could not connect");
	mysql_select_db($dbname1);
	
	
$q_1=mysql_query("SELECT nometabella . progr , nometabella . nome , nometabella . surname , nometabella . data_nasc , nometabella . zip ,  nometabella . city , nometabella . county ,  nometabella_partner . email FROM nometabella LEFT JOIN nometabella_partner ON nometabella . progr =nometabella_partner . id_user WHERE partner ='eagle' and datareg LIKE '2012-01-19%' and nometabella . email  LIKE '%pippo@aol.com%"); 
while($riga_1=mysql_fetch_array($q_1)){ 
    $id_1=$riga_1['county']; 
    $city_1=$riga_1['city']; 
    $county_1=$riga_1['county']; 
    if($city_1 ==""){//se il campo city è vuoto aggirno 
        //leggo il campo city corrispondente a county nella tabella localita 
        $q_2=mysql_query("SELECT city FROM nometabella  WHERE county='$county_1'"); 
        $riga_2=mysql_fetch_array($q_2); 
        $city_2=$riga_2['city']; 
        //aggiorno il campo city in tabella 
        $q_3=mysql_query("UPDATE nometabella SET city='test' WHERE id='$id_1'"); 
    } 
} 
//... 

mysql_close();
?>
 
ciao
l'errore è qui (se non ce ne sono altri)

PHP:
while($riga_1=mysql_fetch_array($q_1)){  
    $id_1=$riga_1['county'];  //!!!!!!
non deve essere county ma
PHP:
$id_1=$riga_1['id'];  //l'id del record che devo uppare - metti il nome del tuo campo id

penso di aver fatto un errore di copy/paste
 
Ciao ho modificato l'id come mi hai detto ma ancora nulla.....nessun errore ma pagina bianca e nn aggiorna il db

PHP:
<?php 
//... 

set_time_limit(0);
	
	error_reporting(E_ALL);
	ini_set('display_errors','On');
	
	$link = mysql_connect($dbhost1, $dbuser1, $dbpass1) or die("Could not connect");
	mysql_select_db($dbname1);
	
	
	//connessione al db
  $q_1=mysql_query("SELECT nometabella . progr , nometabella . nome , nometabella . surname , nometabella . data_nasc , nometabella . zip ,  nometabella . city , nometabella . county ,  nometabella_partner . email FROM nometabella LEFT JOIN nometabella_partner ON nometabella . progr =nometabella_partner . id_user WHERE partner ='eagle' and datareg LIKE '2012-01-19%' and nometabella . email  LIKE '%pippo@aol.com%'"); 
while($riga_1=mysql_fetch_array($q_1)){ 
    $id_1=$riga_1['progr']; 
    $city_1=$riga_1['city']; 
    $county_1=$riga_1['county']; 
    if($city_1 ==""){//se il campo city è vuoto aggirno 
        //leggo il campo city corrispondente a county nella tabella localita 
        $q_2=mysql_query("SELECT city FROM nometabella WHERE county='$county_1'"); 
        $riga_2=mysql_fetch_array($q_2); 
        $city_2=$riga_2['city']; 
        //aggiorno il campo city in tabella 
        $q_3=mysql_query("UPDATE nometabella SET city='test' WHERE id='$id_1'"); 
    } 
} 
//... 

mysql_close();
?>
 
Ultima modifica di un moderatore:
ciao
la sintassi mi sembra giusta, quindi
verifica corrispondenza nomi campi
e metti i var_dump alle variabili per vedere cosa ti retituiscono
 

Discussioni simili