ordinare il risultato di una query con variabili unite

  • Creatore Discussione Creatore Discussione Monital
  • Data di inizio Data di inizio
ciao

cambiare hosting
non credo che basti suddividere la query, se fai (es) tre query il tempo e sempre lo stesso
si dovrebbe richiamare lo script (cioè farlo ripartire) tante volte quante serve in modo da ridurre il tempo (per ciascuna chiamata) ad un massimo di 30 sec
se mi viene qualche idea te la posto

peccato perchè ci tenevo a sta cosa anzi era da tanto che ci andavo dietro epr un altro scriptino


resterebbe da risolvere la cosa delle parentesi, non ne sono venuto a capo
 
ciao
risolto il problema delle () e del raddoppio se nomi uguali più di due (es. tre asdrubale)
ho lasciato $citta, sostituisci con $eta
PHP:
<?php
$nomi=array( 1 => 'sofonisba', 4 => 'asdrubale', 7 => 'pancrazio', 9 => 'asdrubale', 12 => 'abbondio', 27 => 'pancrazio',28 => 'asdrubale');
$citta=array( 1 => 'firenze', 4 => 'como', 7 => 'ancona', 9 => 'torino', 12 => 'otranto', 27 => 'palermo', 28 => 'padova');
asort($nomi);
var_dump($nomi);echo "<br><br>";
$ch_nomi_uguali=array();//creo un array per riportami le chiavi dei nomi uguali
foreach($nomi as  $ch_1 => $val_1){ 
    foreach($nomi as $ch_2 => $val_2){
        if($ch_1 != $ch_2 && $val_1 == $val_2){//verifico che non sia lo stesso dato ma con nomi uguali 
			if(!in_array( $ch_1,$ch_nomi_uguali)){$ch_nomi_uguali[]=$ch_1;}//inserisco se NON già inseriti nell'array $ch_nomi_uguali
			if(!in_array( $ch_2,$ch_nomi_uguali)){$ch_nomi_uguali[]=$ch_2;}//come sopra
        }
    } 
}
for($k=0;$k< count($ch_nomi_uguali);$k++){//ciclo le chiavi dei nomi risultati uguali
	$chiave=$ch_nomi_uguali[$k];
	$nomi[$chiave] .= " (".$citta[$chiave].")"; //sostituisci con $eta[$chiave]
}
var_dump($nomi);echo "<br><br>";
//non ho messo la <select> ma uguale a prima
?>
questo va bene se nomi e citta (o eta) sono nella stessa tabella se in tabelle diverse si potrebbe nella query fare una join (da studiare)
 
ciao
risolto il problema delle () e del raddoppio se nomi uguali più di due (es. tre asdrubale)
ho lasciato $citta, sostituisci con $eta
PHP:
<?php
$nomi=array( 1 => 'sofonisba', 4 => 'asdrubale', 7 => 'pancrazio', 9 => 'asdrubale', 12 => 'abbondio', 27 => 'pancrazio',28 => 'asdrubale');
$citta=array( 1 => 'firenze', 4 => 'como', 7 => 'ancona', 9 => 'torino', 12 => 'otranto', 27 => 'palermo', 28 => 'padova');
asort($nomi);
var_dump($nomi);echo "<br><br>";
$ch_nomi_uguali=array();//creo un array per riportami le chiavi dei nomi uguali
foreach($nomi as  $ch_1 => $val_1){ 
    foreach($nomi as $ch_2 => $val_2){
        if($ch_1 != $ch_2 && $val_1 == $val_2){//verifico che non sia lo stesso dato ma con nomi uguali 
			if(!in_array( $ch_1,$ch_nomi_uguali)){$ch_nomi_uguali[]=$ch_1;}//inserisco se NON già inseriti nell'array $ch_nomi_uguali
			if(!in_array( $ch_2,$ch_nomi_uguali)){$ch_nomi_uguali[]=$ch_2;}//come sopra
        }
    } 
}
for($k=0;$k< count($ch_nomi_uguali);$k++){//ciclo le chiavi dei nomi risultati uguali
	$chiave=$ch_nomi_uguali[$k];
	$nomi[$chiave] .= " (".$citta[$chiave].")"; //sostituisci con $eta[$chiave]
}
var_dump($nomi);echo "<br><br>";
//non ho messo la <select> ma uguale a prima
?>
questo va bene se nomi e citta (o eta) sono nella stessa tabella se in tabelle diverse si potrebbe nella query fare una join (da studiare)

Funziona che è un meraviglia :beer:

Peccato che non risucirò ad utilizzarlo erp questo script grazie all'hosting :incazz:

e na cosa che cercao da tempo grazie borgo
 
ho avuto un idea borgo il problema e che nella ricerca ha troppi nomi da confrontare e se divido in due pagine lo script?

cioè in partenza invece di far listare tutto faccio selezionare all'utente dalla A-J e da j-Z

come si potrebbe fare la query in questo caso?

oltre limit non sono risucito a trovare altro(forse perchè non so cosa cercare esattamente)

anche eprchè dovrei fare la select per fargli riconoscere l'iniziale massima J e la minima A

suggerimenti?
 
ciao
intanto dovresti scoprire, operando in locale, quanto tempo impiega a lavorare lo scrip
PHP:
<?php
$inizio=microtime();
/tutto lo script
$fine=microtime();
$delta=$fine-$inizio;
echo "impiegati $delta secondi per 14.000 record";
?>
da cui vedi se ti basta es. dividere in due
su che host sei?
 
ciao
intanto dovresti scoprire, operando in locale, quanto tempo impiega a lavorare lo scrip
PHP:
<?php
$inizio=microtime();
/tutto lo script
$fine=microtime();
$delta=$fine-$inizio;
echo "impiegati $delta secondi per 14.000 record";
?>
da cui vedi se ti basta es. dividere in due
su che host sei?

ho già fatto una prova con limit 8000 e fino li ce lfa anche se un pò lentamente ma ce la fa

quindi erp due basterebbe

come hosting sono appoggiato ad altervista e nonostante sia al massimod ella potenza del data e di recente ho anche aumentato lo spazio(cosa che c'entrapoco) portandomia l 50 % libero, leggendo sul sito il file php.ini è inaccessibile al massimo si può modificare l'input_tima nell'htaccess e portarlo a 300 cosa che ho già provato(se non ho sbagliato la sintassi) m anon va uguale
 
ciao
prova a caricare e lanciare sull'host questo semplicissimo script (chamalo come ti pare)
PHP:
<?php
var_dump(ini_get('safe_mode'));
?>
e dimmi cosa restituisce
questo perche se php è safee_mode l'istruzione set_time_limit ( int $seconds ) non funzia
se il var_dump di da FALSE dovrebbe funziare
così almeno ho capite leggendo il manuale
 
ciao
prova a caricare e lanciare sull'host questo semplicissimo script (chamalo come ti pare)
PHP:
<?php
var_dump(ini_get('safe_mode'));
?>
e dimmi cosa restituisce
questo perche se php è safee_mode l'istruzione set_time_limit ( int $seconds ) non funzia
se il var_dump di da FALSE dovrebbe funziare
così almeno ho capite leggendo il manuale


restituisce questo


string(1) "0"

ora sono finito nell'ignoto
 
ciao
nel manuale php per la funzione set_time_limit ( int $seconds ) dice:
Warning
This function has no effect when PHP is running in safe mode. There is no workaround other than turning off safe mode or changing the time limit in the php.ini.
la
PHP:
<?php 
var_dump(ini_get('safe_mode')); 
?>
dovrebbe verificare se è o no in safe_mode, avendo dato
string(1) "0"
dovrebbe dire che non è in esecuzione safe_mode, quindi la
PHP:
<?php
set_time_limit (240)
//...tutto lo script
//...
?>
dovrebbe funzionare, riprova
 
niente e dato che il file dove è presente questo script è incluso in un altro dove switcho in base alla selezione nella pagina index

in questa pagina che include lo script ho aggiunto il set_limit

ma niente

sempre solito errore
 
ciao
penso che prima di lavorare tanto ti convenga aprire un nuovo post sul problema di
set_time_limit ( int $seconds ) e tempo di vita di uno script
può essere che qualcuno più esperto di me dia qualche risposta
 
provo a sentire prima l'hosting

grazie cmq borgo questa porzione di script mis erviva come il pane
 

Discussioni simili