Modifica di un campo in funzione di un valore estratto, moltiplicando altri valori

Monital

Utente Attivo
15 Apr 2009
778
2
18
ho risolto estraendo i dati con LIMIT e poi assegno il dato al risultato della select e lo riuppo.

ho un problema alquanto strano

in pratica faccio questa query

PHP:
	$q2=mysql_query("SELECT * FROM tabella  ORDER BY actor DESC LIMIT 201,500");
while($riga2=mysql_fetch_array($q2)){

$result2=$riga2['actor'];
 $up2=mysql_query("UPDATE tabella SET campo=Bravo' WHERE actor IN($result2)");

}

però di aggiornare aggiorna quasi correttamente il databse però mi da un errore 500

Si è verificato un errore.

Se il problema persiste, probabilmente il programma che hai tentato di eseguire non funziona correttamente, o perché qualcuno ci sta lavorando, o perché si tratta di un malfunzionamento dovuto a qualche bug di programmazione, in questo caso informaci.

cosa c'è di sbagliato?


in questo file ci sono 4 query così 1 fino a 75 da 76 a 200 da 201 a 500 e da 501 a 800
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
il LIMIT non dovrebbe essere DA A, ma quanti dal_numero, cione dovrebbe essere
LIMIT 75, 1 poi LIMIT 75,76 poi LIMIT 75, 151 ecc...
però comunque c'è (almeno da da quanto ho capito) un piccolo errore di logica:
tui vuoi se il punteggio (lo chiamo così) vale es. 70 mettere in campox "mediocre" , se 80 "buono".... o viceversa.
ma facendo come fai tu se il record n° 76 ha punteggio 75 campox diventa "buono", mentre dovrebbe essere "mediocre"
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
ciao
il LIMIT non dovrebbe essere DA A, ma quanti dal_numero, cione dovrebbe essere
LIMIT 75, 1 poi LIMIT 75,76 poi LIMIT 75, 151 ecc...
però comunque c'è (almeno da da quanto ho capito) un piccolo errore di logica:
tui vuoi se il punteggio (lo chiamo così) vale es. 70 mettere in campox "mediocre" , se 80 "buono".... o viceversa.
ma facendo come fai tu se il record n° 76 ha punteggio 75 campox diventa "buono", mentre dovrebbe essere "mediocre"

si cioè penso di averc apito che se scrivo limit 75,200 lui prende il range dalla riga 75 alla riga 200 giusto?

per il discorso dell'errore logico

io estraggo le prime 75 righe del campo "valore" ordinato per valore + alto quindi fino a 75 mette buono da 76 a 200 a 200 mediocre senza che manco vedo quanto sia effettivamente il valore.

non so se mi sono spiegato

però resta sto rpoblema che mi da errore anche su limit + bassi tiopo LIMIT 0,10
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
si cioè penso di averc apito che se scrivo limit 75,200 lui prende il range dalla riga 75 alla riga 200 giusto?
prende 75 record a partire dal 200centesimo, cioe prende il 200centesimo, il 201esimo, il 202esimo e così via sino al 274esimo

il tuo ragionamento fila se i "valori" sono unici, ma se possono essere duplicati ti puo capitare di avere (come minimo) due record con valore uguale posti al 75° uno ed al 76° l'altro, quindi perche (a parità di valore) il 75° diventa "buono" ed il 76° "mediocre"?
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
ciao

prende 75 record a partire dal 200centesimo, cioe prende il 200centesimo, il 201esimo, il 202esimo e così via sino al 274esimo

il tuo ragionamento fila se i "valori" sono unici, ma se possono essere duplicati ti puo capitare di avere (come minimo) due record con valore uguale posti al 75° uno ed al 76° l'altro, quindi perche (a parità di valore) il 75° diventa "buono" ed il 76° "mediocre"?

No scusa borgo credo tu ti stia confondendo anche eprchè nonostante mi dia l'errore però me li uppa giusti così cioè dal 1 al 75 dal 76 al 200 etc.

ti prego aiutami con sta cosa dell'errore

alla fine mi uppa i campi ma mi esce quest'errore
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Ci vuole poco a vedere se borgo ha ragione. Basta dare un'occhiata al manuale di MySQL:
The LIMIT clause can be used to constrain the number of rows returned by the SELECT statement. LIMIT takes one or two numeric arguments, which must both be nonnegative integer constants (except when using prepared statements).

With two arguments, the first argument specifies the offset of the first row to return, and the second specifies the maximum number of rows to return.
Quindi, scrivendo:
Codice:
SELECT * FROM tabella LIMIT 5, 10
La query recupererà dalla riga numero 5 alla riga numero 15 (5 + 10). Il primo valore indica la riga da cui partire, il secondo il numero di righe da selezionare. Se è specificato un solo valore, allora si parte dalla prima riga.
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
La query recupererà dalla riga numero 5 alla riga numero 15 (5 + 10). Il primo valore indica la riga da cui partire, il secondo il numero di righe da selezionare. Se è specificato un solo valore, allora si parte dalla prima riga.

si ma ne ero sicuro perchè mi uppava fino ad un certo punto poi mi dà errore e si interrompe e non ne vengo fuori

questo il messaggio

Si è verificato un errore.

Se il problema persiste, probabilmente il programma che hai tentato di eseguire non funziona correttamente, o perché qualcuno ci sta lavorando, o perché si tratta di un malfunzionamento dovuto a qualche bug di programmazione, in questo caso informaci.

praticamente ho provato ad isolarlo ed è qi che toppa

questo è los cript
PHP:
$q=mysql_query("SELECT * FROM tabella  ORDER BY valore DESC LIMIT 0,60")or die (mysql_error());
$number = mysql_numrows($q);
while($riga=mysql_fetch_array($q)){
$result=$riga['valore'];
 $up=mysql_query("UPDATE tabella SET campo='Ottimo' WHERE valore IN($result)");
}

$q=mysql_query("SELECT * FROM tabella  ORDER BY valore DESC LIMIT 61,200")or die (mysql_error());
$number = mysql_numrows($q);
while($riga=mysql_fetch_array($q)){
$result=$riga['valore'];
 $up=mysql_query("UPDATE tabella SET campo='Buono' WHERE valore IN($result)");
}
$q=mysql_query("SELECT * FROM tabella  ORDER BY valore DESC LIMIT 201,440")or die (mysql_error());
$number = mysql_numrows($q);
while($riga=mysql_fetch_array($q)){
$result=$riga['valore'];
 $up=mysql_query("UPDATE tabella SET campo='Medio' WHERE valore IN($result)");
}
$q=mysql_query("SELECT * FROM tabella  ORDER BY valore DESC LIMIT 441,900")or die (mysql_error());
$number = mysql_numrows($q);
while($riga=mysql_fetch_array($q)){
$result=$riga['valore'];
 $up=mysql_query("UPDATE tabella SET campo='Scarso' WHERE valore IN($result)");
}

è il quarto che salta

mettendole insieme si blocca a metà della terza query non uppa tutto allor ain una pagina ho messo le prime 3 query e fa tutto alla perfezione la quarta anche da sola dà errore
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
Tu devi estrarre tutti i record il cui ID sia compreso tra 441 e 900? Puoi farlo così:
Codice:
SELECT * FROM tabella WHERE id >= 441 AND id <= 900
Dovrai modificare anche le altre query SQL.

non propriamente devo prima listare da un valore + grande al più piccolo il campo "valore" e poi uppare i primi 100 i successivi 200 e così via

ma non 200 come valore ma come riga

quindi ordinati da 100 a 50 devo estrarre da 100 a 80 solo che non conoscendo che valore ci sia nell''intervallo ho epnsato di farlo ordinare in decrescene e poi con limit estrarre le righe
 
Ultima modifica:

Monital

Utente Attivo
15 Apr 2009
778
2
18
trovato almeno credo

come clausola dell'update usavo
PHP:
 WHERE $result IN($valore)
però scorrendo il database ho notato che tra una query e l'altra capitavano valori simili quindi andava in pappa

ho cambiando la query odrinando epr valore estraggo la riga dell'id ed uippo
PHP:
 WHERE $result IN($id)

così va seppure non perfetto eprchè invece di 140 ne prende 139 e la 140° avendo valore uguale alla 141 finisce nella query seguente però eprlomeno roa va
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
@alex
da certi punti di vista monital ha ragione: ho invertito l'ofset con quante righe (mentre i numeri si, il ragionamento non cambia invertendo)
@monital
però ribadisco (a parte il blocco dello script) che il sistema funzia (con logica) solo se tutti i valori sono sempre diversi l'uno dall'altro, prendiamo questo caso ad es

riga 0 valore 999
riga 1 valore 990
ecc.....
riga 60 valore = 100
riga 61 valore = 100
ecc...

alla riga 60 verrà uppato il "campo" a ottimo
alla riga 61 verra uppato il "campo" a buono
in quanto non si sa come l'ORDER BY valore ordina nel caso di valori uguali e quindi perchè a parità di valore due giudizi diversi?
 
Discussioni simili
Autore Titolo Forum Risposte Data
J [WP] Chiarimenti modifica campo WordPress 0
L modifica campo non funziona PHP 7
F Query modifica contenuto campo MySQL 5
G modifica campo testo in url Classic ASP 8
M Modifica dello sfondo di un campo in una sottomaschera MS Access 0
RedWolf Conoscere modifica campo tabella mySQL Database 1
M individuare l'ora della modifica del valore nel campo MySQL 0
G Modifica campo mysql PHP 3
C modifica contenuto campo MySQL 1
M Modifica Campo Contatore Database 0
D Jquery - modifica elemenento onlick jQuery 1
Lino80 [Retribuito] Cerco programmatore php per modifica/inserimento funzione/valori da un plugin importer wordpress Offerte e Richieste di Lavoro e/o Collaborazione 0
JeiMax Modifica codice php personalizzato PHP 2
P Pagina modifica record che non funziona PHP 0
L Modifica file upload in ASP Classic ASP 2
P modifica colore A Hover link website . WordPress 2
P Modifica con PHP di un node in una sitemap xml PHP 0
C Software modifica sitoweb in tempo reale WordPress 12
G Modifica immagine di sfondo attraverso un bottone PHP 18
L modifica dati. PHP 1
G modifica corretta funzione da eregi() a preg_match() PHP 3
R Modifica codice per l'upload di più file PHP 1
G Modifica testo Photoshop 3
felino Excel: popolare una cella con la data di modifica della riga a cui appartiene Windows e Software 3
felino [Wordpress] Modifica main color del template WordPress 8
M [PHP] Modifica account PHP 3
S [OFFRO] Creazione di programmi per la modifica automatizzata di testi Offerte e Richieste di Lavoro e/o Collaborazione 0
S [OFFRO] Rimozione o aggiunta di Password ai file PDF e opzionalmente loro modifica Offerte e Richieste di Lavoro e/o Collaborazione 2
F [PHP] modifica del body email con checked PHP 8
G Modifica da sito statico HTML a dinamico in Wordpress SEO e Posizionamento 1
Cosina Modifica script textarea jQuery 0
M [PHP] Calcolare costi su modifica orari PHP 4
A [PHP] Modifica caratteri di una query Oracle SQL PHP 0
F modifica recensione google Discussioni Varie 2
C Photoshop CS 6 salvare una modifica Photoshop 0
L [PHP] Modifica in tabella ultimo id PHP 5
C Pagina fb notifica modifica post Social Media Marketing 1
Q Notice: Undefined index: codice in C:\xampp\htdocs\STAGE\calendario\modifica.php on line 10 PHP 8
C [Joomla] [HTML] Modifica codice per adattamento app Joomla 18
Daniele_Carrara [Javascript] Modifica input date Javascript 5
J modifica spooler di stampa per stampare in ordine di nome i files pdf Windows e Software 2
Emix [PHP] Ricerca e modifica su due tabelle PHP 26
M [PHP] Tabella datagrid con icona di modifica che cambia in base a parametro PHP 0
Andrea1981 [WordPress] [HTML] Help modifica credits nel footer.Tema Customizr. WordPress 5
K [Visual Basic] Stampa e modifica record non funziona più Visual Basic 0
K [ASP.Net] Problema stampa e modifica ms sql ASP.NET 0
K stampa e modifica tabella in php e ms sql PHP 2
Michaelweb93 [WordPress] [HTML] Modifica sezione - pagina sito web WordPress 1
A [PHP] [RISOLTO] Modifica record db da form PHP 11
T [PHP] piccola modifica a script (non mio...) PHP 8

Discussioni simili