L'alert è solo un esempio, dentro l'evento click metti il codice che ti serve.
Ad esempio se il dialog è nascosto puoi e lo vuoi mostrare non appena la pagina è stata caricata
$('#link').click(function(){
$('#example').show();
});
L'alert è solo un esempio, dentro l'evento click metti il codice che ti serve.
Ad esempio se il dialog è nascosto puoi e lo vuoi mostrare non appena la pagina è stata caricata
$('#link').click(function(){
$('#example').show();
});
Ciao,
il problema è che vengono avviati entrambe le funzioni quando clicchi sull'elemento, quindi uno slideUp seguito da uno slideDown.
Puoi ovviare a questo problema usando semplicemente slideToggle(), o eventualmente settando attributi particolari (o controllare se l'elemento è visibile o meno) prima di eseguire uno slideDown/slideUp.
Questo il codice con slideToggle
$( '.slide' ).click(function(){
var target = $(this).parent().children(".add-info-product"); // se è l'elemento successivo puoi usare $(this).next()
target.slideToggle();
});
Ciao,
potresti usare toggleClass al posto di addClass/removeClass. Non conosco lo scopo del tuo codice, probabilmente ti serve aggiungere una classe test ad un elemento per usarla poi in altre parti dello script. Tieni presente però che in questo caso, ogni volta che clicchi sul pulsante viene aggiunta la classe test, quindi al primo click l'elemento avrà class="test", al secondo click avrà class="test test" e così via.
Ti consiglio inoltre di riferti all'oggetto di un evento con $(this) in modo da non coinvolgere tutti gli altri elementi della pagina con le stesse caratteristiche (quindi con class="test".
ecco il codice usando toggleClass()
<label id="show">testo</label>
<script>
$( '#show' ).click(function(){
$(this).toggleClass( 'test' );
});
</script>
In questo caso, se l'elemento non ha la classe test, viene aggiunta, se invece ha quella classe, viene rimossa.
Ciao,
puoi usare jquery+trigger per fare ciò.
ad esempio
[HTML]
<a id='link'>Hello world</a>
[/HTML]
$('#link').click(function(){
alert($(this).text());
});
$(document).ready(function(){
$('#link').trigger('click');
});
Perchè è questo il contenuto dell'array
Array ( [0] => 1 [id] => 1 [1] => Hello World! [name] => Hello World! )
Mi sono confuso io perchè ho una tabella popolata con gli stessi risultati. Insomma come output ho 2 volte la stessa riga.
Iceman84
[INDENT]fetchrow() ti ritorna i-esima riga della query se già eseguita una seconda volta, la prima in caso contrario.
Quindi potremmo dire che la fetchall è l'esecuzione di N fetchrow[/INDENT]
e se volessi fare interagire entrambi i metodi senza perdere le key?
Perchè sull'altro file ho
[PHP]
$rows = $sqlDB->fetchall();
foreach ($rows as $row)
{
echo $row['id'].": ".$row['name']."<br/>";
}
[/PHP]
Risolto su un altro forum con
public function fetchall() {
$return = array();
while($row=mysql_fetch_array($this->sql)) $return[] = $row;
return $return;
}
Qualcuno invece ha idea dell'utilità del metodo fetchrow()?
Ciao a tutti,
ho un quesito che mi sta "mangiando l'anima".
Ho la mia bella classe database, con le classiche funzioni
connetti() <- connette al database
query() <- esegue una query
fetchrow() <- ????
fetchall() <- ???
poi ho il mio bel file php che creato l'oggetto, esegue
connessione
query: fa una select dei dati di una tabella
chiamata a fetchall
output risultati
posto un po' di codice così è più chiaro
la classe
[PHP]
<?php
class mysql_db
{
private $sql;
public function __construct($username, $password, $database, $host) {
if($conn = mysql_connect($host,$username,$password) or die (mysql_error())) {
$selectDB = mysql_select_db($database,$conn) or die (mysql_error());
}
}
public function query($sql) {
$this->sql = mysql_query($sql) or die (mysql_error());
}
public function fetchrow() {
}
public function fetchall() {
}
public function __destruct() {
mysql_close();
}
}
?>
[/PHP]
e l'altro file
[PHP]
require_once("mysql.php");
//Create the mySQL object
$sqlDB = new mysql_db('username', 'password', 'database', 'localhost');
//perform an sql query to select the first 10 values in the db
$sqlDB->query("SELECT * FROM test ORDER BY id ASC LIMIT 10");
//get the 10 rows
$rows = $sqlDB->fetchall();
foreach ($rows as $row)
{
echo $row['id'].": ".$row['name']."<br/>";
}
[/PHP]
Bene, come proseguo? In pratica con fetchall() dovrei restituire l'array della select.
Ho provato con "return mysql_fetch_array($this->sql)", ma restituisce le prime due righe della tabella.
L'utilità dell'altra funzione fetchrow() qual'è secondo voi?
ciao, ho come chiave primaria id_primary
in pratica accedo ad un file in remoto, ogni riga di questo file è una insert di un singolo record. questo file contiene circa 15000 righe, che eseguite come query mi popolano la tabella. questa è aggiornata ogni 24 ore con i cambiamenti delle ultime 24 ore. tengo uno storico di 5 giorni al massimo (quindi i 75000 record su cui faccio la ricerca)
ho una primary key in id_primary, tutti gli altri id presenti sono settati nel file remoto
idUtente
idCitta
id (è diverso da idCittà in quanto corrisponde a delle coordinate di una mappa, quindi nel tempo sullo stesso id in cui prima c'era un idCittà, può esserci un diverso idCittà rispetto a quello precedente)
id_primary che sarebbe la chiave primaria (autoincrement)
devo estrapolare tutti gli idUtente la cui pop (somma di pop di tutte le città che ha) del giorno 0 sia >= alla pop del giorno 1
Salve,
ho una tabella di circa 75000 record, formata da 5 tabelle uguali ma di giorni diversi, ecco un esempio
[TABLE="class: grid, width: 500"]
[TD]id[/TD]
[TD]idUtente[/TD]
[TD]idCitta[/TD]
[TD]pop[/TD]
[TD]data[/TD]
[TD]id_primary[/TD]
[/TR]
[TD]1[/TD]
[TD]125[/TD]
[TD]25[/TD]
[TD]33[/TD]
[TD]20121104[/TD]
[TD]1[/TD]
[/TR]
[TD]2[/TD]
[TD]200[/TD]
[TD]100[/TD]
[TD]123[/TD]
[TD]20121104[/TD]
[TD]2[/TD]
[/TR]
[TD]4[/TD]
[TD]125[/TD]
[TD]30[/TD]
[TD]158[/TD]
[TD]20121104[/TD]
[TD]3[/TD]
[/TR]
[TD]2[/TD]
[TD]200[/TD]
[TD]100[/TD]
[TD]125[/TD]
[TD]20121105[/TD]
[TD]4[/TD]
[/TR]
[/TABLE]
dovrei estrapolare da questa tabella gli idUtente e la sum(pop) dei diversi giorni
ho fatto una cosa del genere
SELECT t1.idUtente, sum(t1.pop) as POP1, sum(t2.pop) as POP2
FROM tabella as t1, tabella as t2
WHERE t1.idUtente = t2.idUtente AND
t1.data = 20121104 AND
t2.data = 20121105
GROUP BY t1.idUtente
ecco, la query funziona, ma ci mette dai 70 ai 90 secondi....
cosiderando che questa è solo la base della query, questo tempo è veramente eccessivo. qualche consiglio?
Salve a tutti,
ho un problema con uno script, dovrei fare in modo di accelerarne l'esecuzione perchè così com'è è troppo lento, e non so se si possa velocizzare.....
In pratica apro un file remoto del tipo:
INSERT INTO table VALUES (.......)
Questo file mi serve per aggiornare una tabella del mio database, e l'aggiornamento è fatto ogni 24 ore.
Ci sono altre 4 tabelle identiche (relative ai giorni precedenti) che ad ogni aggiornamento shiftano di una posizione (la 1 diventa la 2, la 2 diventa la 3, la 3 diventa la 4, la 4 viene eliminata dal database, e quella aggiornata diventa la 1).
Ecco, dovrei trovare un modo abbastanza veloce per fare queste operazioni (lo shift ci mette pochissimo, il problema è il caricamento della nuova tabella).
Attualmente il mio codice è questo:
$source="XXX/XX.sql";
//aggiorna database
//cancella record da tabella principale
$data->query("TRUNCATE TABLE x_world");
//inserisci dati in tabella principale
$news=fopen($source,"r");
while (!feof($news) {
$query = fgets($news, 4096);
$data->query($query);
}
fclose ($news);
per lo shift invece (anche se grossolano come metodo)
//shifta tabelle //cancella tabella 4 e copia la 3
mysql_query("DROP TABLE ".$table4."") or die(mysql_error());
mysql_query("CREATE TABLE ".$table4." like ".$table3."") or die(mysql_error());
mysql_query("INSERT INTO ".$table4." SELECT * FROM ".$table3."") or die(mysql_error());
//cancella tabella 3 e copia la 2
mysql_query("DROP TABLE ".$table3."") or die(mysql_error());
mysql_query("CREATE TABLE ".$table3." like ".$table2."") or die(mysql_error());
mysql_query("INSERT INTO ".$table3." SELECT * FROM ".$table2."") or die(mysql_error());
//cancella tabella 2 e copia la 1
mysql_query("DROP TABLE ".$table2."") or die(mysql_error());
mysql_query("CREATE TABLE ".$table2." like ".$table1."") or die(mysql_error());
mysql_query("INSERT INTO ".$table2." SELECT * FROM ".$table1."") or die(mysql_error());
//cancella tabella 1 e copia la principale
mysql_query("DROP TABLE ".$table1."") or die(mysql_error());
mysql_query("CREATE TABLE ".$table1." like `x_world`") or die(mysql_error());
mysql_query("INSERT INTO ".$table1." SELECT * FROM `x_world`") or die(mysql_error());
Qualche idea su come velocizzare l'esecuzione di questo script?
Ah, dimenticavo, il file remoto ha in media 15.000 righe...
E' bene accetto qualsiasi consiglio, grazie
Perfetto! Funziona alla grande! Non avevo letto bene il post precedente, mea culpa...
Ecco, diciamo che quei risultati non mi serve averli in output, la sottoquery è un condizione della query principale e mi serviva ottenere quel risultato....comunque, avremo modo di parlarne, ho da ottimizzare un paio di query e se non riesco a risolvere apro un altro post.
Grazie mille
Considera che io ho una sola tabella, quindi ho modificato quello che hai scritto considerando in entrambe le select la tabella T1.
Il risultato è che in ouput nella nuova colonna mi somma tutti gli abitanti di ogni citta della tabella (non solo quelli corrispondenti ad ogni idUtente).
Mi sfugge qualcosa, ma non capisco cosa..
Ciao e grazie per la risposta.
Quello che hai appena scritto io lo faccio già, cioè recuperarmi la somma degli abitanti delle città con group by idUtente e mandarla in output a parte (quindi con due SELECT diverse)
Quello che vorrei è eliminare la select che calcola gli abitantiUtente e accorparla a quella principale (che prende tutti i record della tabella).
Diciamo che ho pensato ad una soluzione, che ovviamente non funziona, magari potreste darmi un mano a sistemarla
SELECT *, (
SELECT SUM(table.abitantiCitta)
FROM table
GROUP BY idUtente
) AS abitantiUtente
FROM table
Ovviamente questa query non funziona....
Salve a tutti, premetto che ho una conoscenza base sia di mysql che ti php.
Arrivo al punto, ho diverse query da mettere insieme, ma non riesco ad unirle e visualizzare i risultati che mi servono.
Iniziamo con una semplice...
Ho una tabella con questi campi:
id
idCitta
nomeCitta
abitantiCitta
idUtente
nomeUtente
In output vorrei avere una tabella con un campo in più, chiamiamolo abitantiUtente, che sarebbe la somma di abitantiCitta corrispondente allo stesso utente.
Ad esempio la tabella originale è questa:
[TABLE="class: grid, width: 500"]
[TD]id[/TD]
[TD]idCitta[/TD]
[TD]nomeCitta[/TD]
[TD]abitantiCitta[/TD]
[TD]idUtente[/TD]
[TD]nomeUtente[/TD]
[/TR]
[TD]1[/TD]
[TD]1200[/TD]
[TD]Metropolis[/TD]
[TD]200[/TD]
[TD]10[/TD]
[TD]Filippo[/TD]
[/TR]
[TD]2[/TD]
[TD]1300[/TD]
[TD]Roma[/TD]
[TD]120[/TD]
[TD]19[/TD]
[TD]Giovanni[/TD]
[/TR]
[TD]3[/TD]
[TD]1400[/TD]
[TD]Lugano[/TD]
[TD]87[/TD]
[TD]19[/TD]
[TD]Giovanni[/TD]
[/TR]
[TD]4[/TD]
[TD]1500[/TD]
[TD]Smallville[/TD]
[TD]100[/TD]
[TD]10[/TD]
[TD]Filippo[/TD]
[/TR]
[/TABLE]
E in output vorrei avere questa:
[TABLE="class: grid, width: 500"]
[TD]id[/TD]
[TD]idCitta[/TD]
[TD]nomeCitta[/TD]
[TD]abitantiCitta[/TD]
[TD]idUtente[/TD]
[TD]nomeUtente[/TD]
[TD]abitantiUtente[/TD]
[/TR]
[TD]1[/TD]
[TD]1200[/TD]
[TD]Metropolis[/TD]
[TD]200[/TD]
[TD]10[/TD]
[TD]Filippo[/TD]
[TD]300[/TD]
[/TR]
[TD]2[/TD]
[TD]1300[/TD]
[TD]Roma[/TD]
[TD]120[/TD]
[TD]19[/TD]
[TD]Giovanni[/TD]
[TD]207[/TD]
[/TR]
[TD]3[/TD]
[TD]1400[/TD]
[TD]Lugano[/TD]
[TD]87[/TD]
[TD]19[/TD]
[TD]Giovanni[/TD]
[TD]207[/TD]
[/TR]
[TD]4[/TD]
[TD]1500[/TD]
[TD]Smallville[/TD]
[TD]100[/TD]
[TD]10[/TD]
[TD]Filippo[/TD]
[TD]300[/TD]
[/TR]
[/TABLE]
Grazie per le risposte.