[risolto] Inserimento nuovo campo in mysql. Problema

orp

Nuovo Utente
17 Ott 2013
5
0
0
Ciao a tutti.
Sono nuovo e autodidatta. Cercherò di esprimere nel modo più semplice possibile il mio problema.
Ho creato un gestionale in php con mysql (xampp), che uso già da un po' di tempo.
Recentemente ho avuto la necessità di aggiungere un campo ad una tabella che ha già 1600 record circa.
Eseguo le ricerche con un form nel quale filtro i diversi campi, e fino ad ora non mi ha creato problemi. Da quando ho creato il nuovo campo e l'ho aggiunto nel form però, qualunque ricerca io faccia, il risultato comprende solo i record successivi alla creazione del nuovo campo.
Esiste un modo per aggiornare il database e dirgli che anche nelle righe precedenti deve considerare il campo nuovo come esistente?
Ho visto che il problema si risolve se effettuo una modifica di un record (ovviamente per il solo record modificato), perchè così lo aggiorno con il nuovo campo, ma aggiornare uno per uno 1600 record richiede un po' di tempo.
Un saluto e grazie
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
ciao
quando crei un nuovo campo in una tabella tale campo lo trovi poi in tutti i record.
forse il problema è che (immagino che sia così) quando fai l'insert di uno o più nuovi record valorizzi (per quei record) anche il nuovo campo, ma i record che hai inserito prima hanno tale campo valorizzato?
o i vecchi record (prima dell'aggiunta) hanno quel campo vuoto?
è evidente che se fai una SELECT... WHERE nuovo_campo='pinco' ti trova solo i record con 'pinco'.
se nei vecchi record hai dei record che dovrebbero avere tale valore, ma non l'hai uppato, non li trova perche vuoto.
verifica con phpmyadmin se il nuovo campi e valorizzato per tutti i record, perchè il problema potrebbe essere questo.
 

orp

Nuovo Utente
17 Ott 2013
5
0
0
Credo di avere risolto.
Su phpmyadmin ho modificato il nuovo campo, mettendo "predefinito=none" e "Null=No".
Se per "valorizzare il campo intendevi questo, io l'ho fatto e funziona.
Se ho sbagliato, ti pregherei di spiegarmi meglio cosa vuol dire "valorizzare il campo".
Grazie per l'aiuto
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
ciao
"valorizzare il campo".
intendo dargli un valore che non sia vuoto o null, cosa che da quello che ho capito hai fatto inserendo di default il valore 'none' cioè una stringa.
detto questo non so a che ti serva quel campo, comunque se fai una ricerca di record che devono avere un certo valore, quelli con 'none' non te li tira fuori.
esempio, mettiamo che quel campo rappresenti la categoria e tu abbia i seguenti record
1 |fiat 500 | none
2 |monitor | none
3 |Y 10 | automobili
con la SELECT * WHERE campo='automobili'
estrai solo la Y 10 e non la fiat 500
mentre se fai SELECT * WHERE campo='none' ti estrae sia la fiat 500 che monitor che non è un'automobile.
quindi se il campo ti serve per fare delle ricerche/selezioni devi dargli un valore appropriato uppandoli
 

orp

Nuovo Utente
17 Ott 2013
5
0
0
Grazie per il chiarimento. In realtà nel mio caso il nuovo campo deve rimanere vuoto in tutti i record precedenti, ma non mi deve impedire di leggerli in una ricerca in cui immetto un valore per un altro campo.
E infatti adesso funziona.
Per concludere ti chiedo di chiarirmi un'ultima cosa: se avessi dovuto "uppare" tutti i record precedenti, ci sarebbe stato un modo per farlo in una sola volta, tutti insieme (almeno quelli che hanno lo stesso valore), oppure avrei dovuto aggiornarli uno per volta?
Grazie ancora per l'aiuto
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
ciao
dipende da come sono organizzati i record, se es (scrivo i nomi a caso) se hai alcuni record in cui il campo_1 contine il valore 'pinco' e di tali record vuoi uppare il campo_2 al valore 'pallino' fai la query
PHP:
<?php
//....
$query="UPDATE nome_tabella SET campo_2='pallino' WHERE campo_1='pinco'";
$ris=mysqli_query($link,$query);
//.....
?>
o se vuoi uppare a 'pallino' tutti i record in cui il campo_2 è vuoto
PHP:
<?php
//....
$query="UPDATE nome_tabella SET campo_2='pallino' WHERE campo_2=''";
$ris=mysqli_query($link,$query);
//.....
?>
o se come hai detto te hai messo il valore 'none'
PHP:
<?php
//....
$query="UPDATE nome_tabella SET campo_2='pallino' WHERE campo_2='none'";
$ris=mysqli_query($link,$query);
//.....
?>
è evidente che al posto di 'pinco' e/o 'pallino' puoi mettere delle variabili $val_1 e/o $val_2 gestibili tramite un form