stato avanzamento con un for

avevo intenzione di fare una barra di progresso per l'eseguzione di 50 query [per dire 50] ho fatto questo codice:

<?php for ($i=0;$i <= 100;$i++)

{

$lung = $i;

}

?>

<table width="300" border="0" cellspacing="0" cellpadding="0">

        <tr>

          <td class="barra"><table width="<?php echo $lung; ?>%" border="0" cellpadding="0" cellspacing="0" class="percentuale">

            <tr>

              <td width="10" align="right"><?php echo $lung; ?>%</td>

            </tr>

          </table></td>

        </tr>

      </table>

se le iterazioni del ciclo sono  100 [100%] per ogni iterazione la barra dovrebbe aumentare di 1 [1% ] o ho fatto un'errore e non rimpiazza la variabile ad ogni iterazione

1iterazione $i=1

2iterazione $i=2

ecosì via

solo che io vedo 100% è perchè mette subito 100 o perchè non è possibile fare qualcosa del genere?

inviato 10 anni fa
Andrea Turso
Andrea Turso
86
modificato 10 anni fa
X 0 X

Non c'è speranza: le query sono un processo che avviene sul server, l'avanzamento di una barra è un effetto grafico che gira sul client. Le due cose non possono essere collegate direttamente (a meno di non usare tecniche più avanzate stile AJAX).

Si potrebbe creare uno script che esegue una query, mostra la barra al livello 1, viene ricaricato con un refresh, esegue la query sucessiva, mostra la barra a livello 2, viene ricaricato ...

In realtà quindi si tratta sempre di uno stesso script che viene eseguito più volte, non di un ciclo for.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

ah ;D che stupido credevo potesse funzionare

vabbé

grazie mi hai tolto un dubio

guarda questo codice :

   $query = array(

0=>"CREATE TABLE `".$prefix."members` (

  `member_id` int(11)       NOT NULL auto_increment,

  `username` varchar(255)    NOT NULL default '',

  `password` varchar(255)    NOT NULL default '',

  `email`    varchar(255)   NOT NULL default '',

  `regdate`  varchar(255)    NOT NULL default '',

  `active`   enum('Y','N')    NOT NULL default 'Y',

  `banned`   enum('Y','N')    NOT NULL default 'Y',

  `ip`       varchar(16)      NOT NULL default '',

  `logged`   enum('Y','N')    NOT NULL default 'Y',

  `group`    varchar(255)    NOT NULL default '',

  `title`      varchar(255)     NOT NULL default '',

  PRIMARY KEY  (`member_id`)

) ENGINE=MyISAM AUTO_INCREMENT=1 ;",

1=>"CREATE TABLE `".$prefix."news` (

  `news_id`       int(11)       NOT NULL auto_increment,

  `title`       varchar(255)    NOT NULL default '',

  `author`       varchar(255)    NOT NULL default '',

  `body`         varchar(255)    NOT NULL default '',

  `category`      varchar(255)   NOT NULL default '',

  `date`          varchar(255)    NOT NULL default '',

  PRIMARY KEY  (`news_id`)

) ENGINE=MyISAM AUTO_INCREMENT=1 ;   ",         

2=>"CREATE TABLE `".$prefix."admin` (

  `admin_id` int(11) NOT NULL auto_increment,

  `username` varchar(255)    NOT NULL default '',

  `password` varchar(255)    NOT NULL default '',

  `email`    varchar(255)   NOT NULL default '',

  `regdate`  varchar(255)     NOT NULL default '',

  `active`   enum('Y','N')    NOT NULL default 'Y',

  `banned`   enum('Y','N')    NOT NULL default 'Y',

  `ip`       varchar(16)      NOT NULL default '',

  `logged`   enum('Y','N')    NOT NULL default 'Y',

  PRIMARY KEY  (`admin_id`)

) ENGINE=MyISAM AUTO_INCREMENT=1 ;   ",

3=>"CREATE TABLE `".$prefix."modules` (

  `module_id`          int(11)       NOT NULL auto_increment,

  `module_name`       varchar(255)    NOT NULL default '',

  `module_content`       varchar(255)    NOT NULL default '',

  `module_permission`     varchar(255)     NOT NULL default '',

  `module_icon`        varchar(255)    NOT NULL default '',

  PRIMARY KEY  (`module_id`)

) ENGINE=MyISAM AUTO_INCREMENT=1 ;   ",    

4=>"CREATE TABLE `".$prefix."categories` (

  `category_id`       int(11)       NOT NULL auto_increment,

  `category_name`       varchar(255)    NOT NULL default '',

  `category_access`    varchar(255)    NOT NULL default '',

  `category_icon`        varchar(255)     NOT NULL default '',

  PRIMARY KEY  (`category_id`)

) ENGINE=MyISAM AUTO_INCREMENT=1 ;  ",             

5=>"CREATE TABLE `".$prefix."groups` (

  `group_id`       int(11)       NOT NULL auto_increment,

  `group_name`       varchar(255)    NOT NULL default '',

  `group_access`    varchar(255)    NOT NULL default '',

  `group_icon`     varchar(255)     NOT NULL default '',

  `group_rank`     varchar(255)     NOT NULL default '',

  `group_title`     varchar(255)     NOT NULL default '',

  PRIMARY KEY  (`group_id`)

) ENGINE=MyISAM AUTO_INCREMENT=1 ; ",

6=>"CREATE TABLE `".$prefix."blocks` (

  `block_id`       int(11)       NOT NULL auto_increment,

  `block_name`       varchar(255)    NOT NULL default '',

  `block_align`    varchar(255)    NOT NULL default '',

  `block_icon`     varchar(255)     NOT NULL default '',

  `block_index`     varchar(255)     NOT NULL default '',

  PRIMARY KEY  (`block_id`)

) ENGINE=MyISAM AUTO_INCREMENT=1 ; ",

7=>"CREATE TABLE `".$prefix."menu` (

  `menu_id`       int(11)       NOT NULL auto_increment,

  `menu_name`       varchar(255)    NOT NULL default '',

  `menu_url`       varchar(255)    NOT NULL default '',

  `menu_icon`        varchar(255)     NOT NULL default '',

  PRIMARY KEY  (`menu_id`)

) ENGINE=MyISAM AUTO_INCREMENT=1 ;",

8=>"CREATE TABLE `".$prefix."unavailable` (

   `set_offline`    ENUM( 'Y', 'N' ) NOT NULL ,

   `set_advice`    VARCHAR( 255 )   NOT NULL

) ENGINE=MYISAM  ;",

9=>"CREATE TABLE `".$prefix."languages` (

   `lang_dir`       VARCHAR( 255 ) NOT NULL ,

   `lang_current`    VARCHAR( 255 ) NOT NULL

) ENGINE=MYISAM  ;",

10=>"CREATE TABLE `".$prefix."themes` (

   `theme_dir`       VARCHAR( 255 ) NOT NULL ,

   `theme_current`    VARCHAR( 255 ) NOT NULL ,

   `theme_name`      varchar(255)NOT NULL

) ENGINE=MYISAM  ;",

11=>"CREATE TABLE `".$prefix."download` (

   `file_id`    INT NOT NULL AUTO_INCREMENT ,

   `file_name` VARCHAR( 255 ) NOT NULL ,

   `file_type` VARCHAR( 255 ) NOT NULL ,

   `file_md5`    VARCHAR( 36 )  NOT NULL ,   

   `file_data` MEDIUMBLOB     NOT NULL ,

   PRIMARY KEY ( `file_id` )

) TYPE = MYISAM;",

12=>"INSERT INTO `".$prefix."admin`

   ( `admin_id` , `username` , `password` , `email` , `regdate` , `active` , `banned` , `ip` , `logged`)

      VALUES

   ('', '".$username."', '".$password."', '".$email."','".$date."', 'N', 'N', '".$ip."', 'N');",

13=>"INSERT INTO `".$prefix."groups`

   ( `group_id` , `group_name` , `group_access` , `group_icon` , `group_rank` , `group_title` )

      VALUES

   ('', 'admins', '', '', 'administrator', 'website admin'),

   ('', 'members', '', '', 'member', ''),

   ('', 'newsers', '', '', 'news poster', ''),

   ('', 'banned', '', '', 'banned member', ''),

   ('', 'gold members', '', '', 'gold member', ''),

   ('', 'senior members', '', '', 'senior member', '') ;",

14=>"INSERT INTO `".$prefix."unavailable`

   ( `set_offline` , `set_advice` )

      VALUES

   ('Y', 'This website is currently under construction!');",

15=>"INSERT INTO `".$prefix."themes`

   ( `theme_dir` , `theme_current` , `theme_name` )

      VALUES

   ('/themes/default/', 'Revoke blue', 'Revoke blue');",

);

   foreach ($query as $mysql)

   {

         mysql_query("$mysql") or die(mysql_error());

   }

è un pezzetto di un mio script

non ricordo ma tempo fa avevo fatto un controllo che mostrava una V per ogni query andata a buon fine e X per ogni errore e era tutto nel ciclo.

quindi credendo che a ogni iterazione [dopo ogni query] sostituisse una variabile potrei dare lo stato di avanzamento con la barra

query 1 => barra 10%

query 2 => barra 20%

ecc

PS: è sorprendente quello che sono riuscito a fare in php con quel poco che so.grazie a te gianni!

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
modificato 10 anni fa
X 0 X

il codice che hai riportato effettua soltanto le query, non mostra nulla. Comunque una cosa è mostrare alla fine del lavoro l'esito delle varie query (è semplicemente html inviato al client), un'altra è aggiornare l'HTML che mostra la barra indicatrice, in funzione dello stato di avanzamento delle query.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

si prima c'èra un echo nel form e si ripeteva per ogni query

io credevo che mettendolo fuori dal ciclo si AGGIORNASSE ;D

100 100 100

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

scusate se mi intrometto ma alla domanda

perchè mette subito 100

io risponderei che cmq la tabella non e' dentro il ciclo for, quindi quando scrive la tabella il ciclo sara' gia' terminato e la variabile ha valore 100......

ho fatto una giusta osservazione?

<?php for ($i=0;$i <= 100;$i++)
{
$lung = $i;
//qui va eliminata la }
?>
<table width="300" border="0" cellspacing="0" cellpadding="0">
        <tr>
          <td class="barra"><table width="<?php echo $lung; ?>%" border="0" cellpadding="0" cellspacing="0" class="percentuale">
            <tr>
              <td width="10" align="right"><?php echo $lung; ?>%</td>
            </tr>
          </table></td>
        </tr>
      </table>
<?php } ?> //qui va inserita
risposto 10 anni fa
purpitta
X 0 X

 ;D così la tabella si ripete 100 volte con ogni volta 1% in +

quindi 100 barre da 1++

a me serve una barra che cambia dimensioni in base all'iterazione del ciclo

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

L'errore principale è quello concettuale, indipendente dallo script che non ho neanche guardato  :P

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

risposta agghiacciante  :death:

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda