Ciclo su pulsante e istruzioni quando si preme

Emix

Utente Attivo
15 Feb 2010
596
0
16
Ciao a tutti,
ho un problema non riesco a far iterare N volte delle istruzioni all'interno di un pulsante...Io ho un input su cui inserisco dei dati e a fianco un pulsante di submit che aggiorna la pagina. Il pulsante non fa altro che fare una query e se trova i dati stampa una riga di database (nel senso prendendo come dato quello inserito stampa altri tre record del dato stesso - Esempio scrivo uno e sulla riga uno stampo macchina - rossa - 10 euro)
Non riesco a far si che questa cosa avvenga N volte... Nel senso finche l'utente cerca e preme submit le righe devono essere stampate a video... nel momento in cui l'utente non inserisce piu dati e non preme submit si ferma...
Vi posto il form e il codice del pulsante:

HTML:
<table>
    <form action="" method="post">
<tr>
    <td><input type="text" placeholder="Barcode" name="barcodeart[]" id="barcodeart" size="10" value="<?php echo $barcodenew[$i]; ?>"></td>
    <td><input type="submit" class="visto" name="visto[]" onclick= "this.form.action=' . htmlspecialchars($_SERVER['PHP_SELF']) . ' "></td>
  </form>
  </table>

PHP:
<?php 
include('connect.php');
@ $array_visto = $_POST['visto'];
//for ($i = 0; $i <= sizeof($array_visto); $i++) { provo a togliere for metto while
foreach ($_POST as $nome_1 => $valore_1){
    foreach($valore_1 as $nome_2 => $valore_2){
    }
}   
$i = 0;
do {
    if(isset($_POST['visto'][$i])){
	$barcodevisto[$i] = $_POST['barcodeart'][$i];
	$queryart=("SELECT * FROM articoli WHERE Barcode='$barcodevisto[$i]'") or die (mysql_error()); 
	$result = mysql_query($queryart) or die('Query failed: ' . mysql_error() . "<br />"); 
    //verifico che esista una una card con tale barcode 
    $esistebc=mysql_num_rows($result);
    //se $esiste == 0 non cè
    if($esistebc > 0){//esiste
        //estraggo usn e pass
		$righi=mysql_fetch_array($result);
		$barcodenew[$i]=$righi[Barcode];
		$descrizione[$i]=$righi[Descrizione];
		$prezzo[$i]=$righi[Vendita];
		$fornitore[$i]=$righi[Fornitore];
		$reparto[$i]=$righi[Reparto];
		?>
        <table>
    <form action="" method="post">
<tr>
    <td><input type="text" placeholder="Barcode" name="barcodeart[]" id="barcodeart" size="10" value="<?php echo $barcodenew[$i]; ?>"></td>
    <td><input type="text" placeholder="Descrizione" name="descrizione[]" id="descrizione" size="32" value="<?php echo $descrizione[$i];?>"></td>
    <td><input type="text" style="text-align:center" placeholder="Qnt" name="campo[]" id="quantita" size="3" value="1"></td>
    <td><input type="text" placeholder="Prezzo" name="prezzo[]" id="prezzo" size="5" value="<?php echo $prezzo[$i]; ?> " ></td>
    <td><input type="text" placeholder="Sc %" name="scontoperc[]" id="scontoperc" size="3"></td>
    <td><input type="text" placeholder="Sc VAL" name="scontoval[]" id="scontoval" size="4"></td>
    <td><input type="text" placeholder="P.Scontato" name="prezzosconto[]" id="prezzosconto" size="6"></td>
  </tr>
  </form>
  </table>
  <?php
  $i++; 
					   } else {
						?>
						<script>
        alert('Articolo non trovato');
    </script>
    <?php
	                       }
                                  }
								  } while (($barcodenew[$i] != null)&&($descrizione[$i] != null)&&($prezzo[$i] != null)) 
								       //parentesi for       }
?>
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
credo che tu debbe ricorrere a ajax e/o jquery + js, cioè con linguaggi lato client, non credo che il problema sia risolvibile solo con php (lato server)
ti conviene postare il problema nella sezione javascript dove trovi esperti più (molto) bravi di me su tali linguaggi
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
ricapitoliamo
tu scrivi nella casella 1920100216004, al submit hai

barcode_01.jpg

ora cosa fai, scrivi un altro codice? e vuoi che si formi un'altra riga sotto la precedente?
forse non ho capito bene

dimenticavo
allarga le caselle il barcode si vede male
 
Ultima modifica:

Emix

Utente Attivo
15 Feb 2010
596
0
16
bravissimo... esattamente come hai detto te... scrivo un altro codice e vorrei che si formi una riga sotto la rpecedente......
 

Emix

Utente Attivo
15 Feb 2010
596
0
16
si lo so me ne sono accorto anche io... tanto per ora sto facendo delle prove non appena riesco nel mio intento cambio il tutto.. Grazie...
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
mi è venuta un'idea spero non balsana, la provo e poi ti so dire. solo devi avere un po' di pazienza
un altra cosa
non va bene
HTML:
<table>
<form....>
...........
</form>
</table>
devi mettere
HTML:
<form....>
<table>
............
</table>
</form>
 

Emix

Utente Attivo
15 Feb 2010
596
0
16
ok intanto cambio e vediamo che succede.... posto la pagina intera cosi hai il codice completo...

PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<table>
    <form action="" method="post">
<tr>
    <td><input type="text" placeholder="Barcode" name="barcodeart[]" id="barcodeart" size="10" value="<?php echo $barcodenew[$i]; ?>"></td>
    <td><input type="submit" class="visto" name="visto[]" onclick= "this.form.action=' . htmlspecialchars($_SERVER['PHP_SELF']) . ' "></td>
  </form>
  </table>
</body>
</html>
<?php 
include('connect.php');
@ $array_visto = $_POST['visto'];
//for ($i = 0; $i <= sizeof($array_visto); $i++) { provo a togliere for metto while
foreach ($_POST as $nome_1 => $valore_1){
    foreach($valore_1 as $nome_2 => $valore_2){
    }
}   
$i = 0;
do {
    if(isset($_POST['visto'][$i])){
	$barcodevisto[$i] = $_POST['barcodeart'][$i];
	$queryart=("SELECT * FROM articoli WHERE Barcode='$barcodevisto[$i]'") or die (mysql_error()); 
	$result = mysql_query($queryart) or die('Query failed: ' . mysql_error() . "<br />"); 
    //verifico che esista una una card con tale barcode 
    $esistebc=mysql_num_rows($result);
    //se $esiste == 0 non cè
    if($esistebc > 0){//esiste
        //estraggo usn e pass
		$righi=mysql_fetch_array($result);
		$barcodenew[$i]=$righi[Barcode];
		$descrizione[$i]=$righi[Descrizione];
		$prezzo[$i]=$righi[Vendita];
		$fornitore[$i]=$righi[Fornitore];
		$reparto[$i]=$righi[Reparto];
	?>
                                      <table>
    <form action="" method="post">
<tr>
    <td><input type="text" placeholder="Barcode" name="barcodeart[]" id="barcodeart" size="10" value="<?php echo $barcodenew[$i]; ?>"></td>
    <td><input type="text" placeholder="Descrizione" name="descrizione[]" id="descrizione" size="32" value="<?php echo $descrizione[$i];?>"></td>
    <td><input type="text" style="text-align:center" placeholder="Qnt" name="campo[]" id="quantita" size="3" value="1"></td>
    <td><input type="text" placeholder="Prezzo" name="prezzo[]" id="prezzo" size="5" value="<?php echo $prezzo[$i]; ?> " ></td>
    <td><input type="text" placeholder="Sc %" name="scontoperc[]" id="scontoperc" size="3"></td>
    <td><input type="text" placeholder="Sc VAL" name="scontoval[]" id="scontoval" size="4"></td>
    <td><input type="text" placeholder="P.Scontato" name="prezzosconto[]" id="prezzosconto" size="6"></td>
  </tr>
  </form>
  </table>
  <?php
        $i++; 
		   } else {
						?>
						<script>
        alert('Articolo non trovato');
    </script>
    <?php
	                       } 
                                  }
								
} while (($barcodenew[$i] != null)&&($descrizione[$i] != null)&&($prezzo[$i] != null)) 
?>
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
ecco l'idea bislacca, ma non so se funzia
PHP:
<?php 
session_start();
include('connect.php');
@ $array_visto = $_POST['visto'];
//for ($i = 0; $i <= sizeof($array_visto); $i++) { provo a togliere for metto while
foreach ($_POST as $nome_1 => $valore_1){
        foreach($valore_1 as $nome_2 => $valore_2){
        }
    }   
    $i = 0;
    do {
        if(isset($_POST['visto'][$i])){
        $barcodevisto[$i] = $_POST['barcodeart'][$i];
        $queryart=("SELECT * FROM articoli WHERE Barcode='$barcodevisto[$i]'") or die (mysql_error()); 
        $result = mysql_query($queryart) or die('Query failed: ' . mysql_error() . "<br />"); 
        //verifico che esista una una card con tale barcode 
        $esistebc=mysql_num_rows($result);
        //se $esiste == 0 non cè
        if($esistebc > 0){//esiste
            //estraggo usn e pass
            $righi=mysql_fetch_array($result);
            $barcodenew[$i]=$righi[Barcode];
            $descrizione[$i]=$righi[Descrizione];
            $prezzo[$i]=$righi[Vendita];
            $fornitore[$i]=$righi[Fornitore];
            $reparto[$i]=$righi[Reparto];
			$_SESSION['righe'][$i]= "<tr>";
			$_SESSION['righe'][$i].="<td><input type=\"text\" placeholder=\"Barcode\" name=\"barcodeart[]\" id=\"barcodeart\" size=\"10\" value=\"".$barcodenew[$i]."\"></td>";
			$_SESSION['righe'][$i].="<td><input type=\"text\" placeholder=\"Descrizione\" name=\"descrizione[]\" id=\"descrizione\" size=\"32\" value=\"".$descrizione[$i]."\"></td>";
			$_SESSION['righe'][$i].="<td><input type=\"text\" style=\"text-align:center\" placeholder=\"Qnt\" name=\"campo[]\" id=\"quantita\" size=\"3\" value=\"1\"></td>";
			$_SESSION['righe'][$i].="<td><input type=\"text\" placeholder=\"Prezzo\" name=\"prezzo[]\" id=\"prezzo\" size=\"5\" value=\"".$prezzo[$i]."\" ></td>";
			$_SESSION['righe'][$i].="<td><input type=\"text\" placeholder=\"Sc %\" name=\"scontoperc[]\" id="scontoperc\" size=\"3\"></td>";
			$_SESSION['righe'][$i].="<td><input type=\"text\" placeholder=\"Sc VAL\" name=\"scontoval[]\" id=\"scontoval\" size=\"4\"></td>";
			$_SESSION['righe'][$i].="<td><input type=\"text\" placeholder=\"P.Scontato\" name=\"prezzosconto[]\" id="prezzosconto\" size=\"6\"></td>";
			$_SESSION['righe'][$i]= "</tr>";
?>    
        <form action="" method="post">
		<table>
<?php
foreach($_SESSION['righe'] as $chiave => $valore){
	echo $valore;
}
?>
	  	</table>
      </form>
      
      <?php
      $i++; 
                           } else {
                            ?>
                            <script>
            alert('Articolo non trovato');
        </script>
        <?php
                               }
                                      }
                                      } while (($barcodenew[$i] != null)&&($descrizione[$i] != null)&&($prezzo[$i] != null)) 
                                           //parentesi for       }
?>
poi se funzia forse è meglio costruire la stringa $_SESSION['righe'][$i] con la sintassi heredoc, inoltre ho usato come contatore $i ma non so se è adeguato
fai delle prove e sappimi dire
 

Emix

Utente Attivo
15 Feb 2010
596
0
16
mi da in errore :

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/laviadellanima.com/public_html/prove/borgo.php:1) in /home/laviadellanima.com/public_html/prove/borgo.php on line 2

ps avevi scordato due "\"
 

Emix

Utente Attivo
15 Feb 2010
596
0
16
allora ho risolto l'errore... avevi messo uno spazio prima del <?php... ora però una domanda... come faccio a dare in input il primo barcode? nel tuo codice manca la prima parte... quella relativa all'input.. hai messo tutto in sessione e chiarmaente la pagina e bianca lol
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
PHP:
<?php
//tutto il codice php
?>
<form action="" method="post">
<table>
<tr>
<td><input type="text" placeholder="Barcode" name="barcodeart[]" id="barcodeart" size="10" value="<?php echo $barcodenew[$i]; ?>"></td>
<td><input type="submit" class="visto" name="visto[]" onclick= "this.form.action=' . htmlspecialchars($_SERVER['PHP_SELF']) . ' "></td>
</tr>
</table>
</form>
o subito dopo session_start()
 

Emix

Utente Attivo
15 Feb 2010
596
0
16
uhm.. non da errore... però non visualizza nulla... ti do link per fare delle prove :

laviadellanima.com/prove/borgo.php

come barcode prova : 7640141078778
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
credo che sia uno stupidissimo errore (almeno mi sembra)
correggi l'ultima session
$_SESSION['righe'][$i]= "</tr>";
in
$_SESSION['righe'][$i].= "</tr>";
manca il punto del concatenamento e quindi perdo tutti i valori precedenti
 

Emix

Utente Attivo
15 Feb 2010
596
0
16
si infatti ora funziona... ma continua a ovrascrivere la linea che trova...
 

Emix

Utente Attivo
15 Feb 2010
596
0
16
laviadellanima.com/prove/borgo.php

come barcode prova : 7640141078778
1920100216004
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
prima una piccola cosa, controlla nella costruzione della stringa che ci siano tutti gli \ davanti agli apici interni alla stringa mi sono accrto di essermene dimenticato un paio

poi metti un var_dump

PHP:
<?php
//...........
            $_SESSION['righe'][$i]= "</tr>";
?>    
        	<form action="" method="post">
        	<table>
<?php
			var_dump($_SESSION['righe']);
			foreach($_SESSION['righe'] as $chiave => $valore){
    			echo $valore;
			}
?>
			</table>
			</form>
<?php
			$i++;
//.............
?>
poi sappimi dire cosa riporata al primo inserimento e poi al secondo
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
un dubbio.
metti un altro var_dump e togli pure quello di prima e rifai l'operazione di prima con due o più codici
PHP:
<?php
//...........
            $_SESSION['righe'][$i]= "</tr>";
			var_dump($i);//e metti questo
?>    
            <form action="" method="post">
            <table>
<?php
            //var_dump($_SESSION['righe']);
            foreach($_SESSION['righe'] as $chiave => $valore){
                echo $valore;
            }
?>
            </table>
            </form>
<?php
            $i++;
//.............
?>
ho il dubbio che la variabile $i non si incrementi come dovrebbe
se è giusto $i dovrebba passare da 0 a 1 al secondo inserimento, a 2 al terzo ecc....
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
ho fatto delle modifiche al valore di $i, perchè ad ogi submit la pagina si dimentica il valore e riparte da 0
prova così
PHP:
<?php 
session_start();
include('connect.php');
$array_visto = $_POST['visto'];//a che ti serve questa riga?
//for ($i = 0; $i <= sizeof($array_visto); $i++) { provo a togliere for metto while
//a che ti serve questo doppio foreach ?
foreach ($_POST as $nome_1 => $valore_1){
        foreach($valore_1 as $nome_2 => $valore_2){
        }
    }   
//se non ti servono, a me sembra che non servano, toglili
//$i = 0;
if(!isset($_SESSION['conta'])){$_SESSION['conta']=0;}
$i = $_SESSION['conta'];
do{
	if(isset($_POST['visto'][$i])){
		$barcodevisto[$i] = $_POST['barcodeart'][$i];
		//poi modifica la quary così è meglio quando si usano gli array
        $queryart=("SELECT * FROM articoli WHERE Barcode='".$barcodevisto[$i]."'") or die (mysql_error()); 
        $result = mysql_query($queryart) or die('Query failed: ' . mysql_error() . "<br />"); 
        //verifico che esista una una card con tale barcode 
        $esistebc=mysql_num_rows($result);
        //se $esiste == 0 non cè
        if($esistebc > 0){//esiste
            //estraggo usn e pass
            $righi=mysql_fetch_array($result);
            $barcodenew[$i]=$righi[Barcode];
            $descrizione[$i]=$righi[Descrizione];
            $prezzo[$i]=$righi[Vendita];
            $fornitore[$i]=$righi[Fornitore];
            $reparto[$i]=$righi[Reparto];
            $_SESSION['righe'][$i]= "<tr>";
            $_SESSION['righe'][$i].="<td><input type=\"text\" placeholder=\"Barcode\" name=\"barcodeart[]\" id=\"barcodeart\" size=\"10\" value=\"".$barcodenew[$i]."\"></td>";
            $_SESSION['righe'][$i].="<td><input type=\"text\" placeholder=\"Descrizione\" name=\"descrizione[]\" id=\"descrizione\" size=\"32\" value=\"".$descrizione[$i]."\"></td>";
            $_SESSION['righe'][$i].="<td><input type=\"text\" style=\"text-align:center\" placeholder=\"Qnt\" name=\"campo[]\" id=\"quantita\" size=\"3\" value=\"1\"></td>";
            $_SESSION['righe'][$i].="<td><input type=\"text\" placeholder=\"Prezzo\" name=\"prezzo[]\" id=\"prezzo\" size=\"5\" value=\"".$prezzo[$i]."\" ></td>";
            $_SESSION['righe'][$i].="<td><input type=\"text\" placeholder=\"Sc %\" name=\"scontoperc[]\" id=\"scontoperc\" size=\"3\"></td>";
            $_SESSION['righe'][$i].="<td><input type=\"text\" placeholder=\"Sc VAL\" name=\"scontoval[]\" id=\"scontoval\" size=\"4\"></td>";
            $_SESSION['righe'][$i].="<td><input type=\"text\" placeholder=\"P.Scontato\" name=\"prezzosconto[]\" id=\"prezzosconto\" size=\"6\"></td>";
            $_SESSION['righe'][$i].= "</tr>";
?>    
			<form action="" method="post">
			<table>
<?php
			foreach($_SESSION['righe'] as $chiave => $valore){
    			echo $valore;
			}
?>
			</table>
			</form>
<?php
			$_SESSION['conta']++; 
		}else{
?>
			<script>
            alert('Articolo non trovato');
			</script>
<?php
		}
	}
}while(($barcodenew[$i] != null)&&($descrizione[$i] != null)&&($prezzo[$i] != null)) 
//parentesi for       }
?>
p.s.
fai un po' di pulizia, togli tutto quello che non serve
 
Discussioni simili
Autore Titolo Forum Risposte Data
V Ciclo for per Pulsante in JavaScript Javascript 7
G Ciclo if php per far comparire un pulsante solo nel caso in cui una variabile sia 0 PHP 2
B Completare il seguente ciclo affinché stampi tutto l’array al contrario PHP 3
W MySQL ciclo in SELECT MySQL 0
E Inviare variabile a PHP da ciclo in JS Javascript 0
I Eecuzione di javascript in ciclo foreach php. PHP 7
W fare la somma di un valore estratto da un ciclo while Classic ASP 0
motleyrulez Aiuto con un ciclo PHP 0
B [PHP] formula e ciclo PHP 5
M [PHP] Come inserire codice html in un ciclo while PHP 2
T con oop creare un ciclo per una pagina dinamica html con php PHP 3
G [PHP] totale per ogni id di un ciclo PHP 1
P Incrementare nodo in ciclo for-each XML 6
S [PHP] Ciclo foreach su più array PHP 2
M UPDATE non aggiorna db se lo inserisco in un ciclo Database 1
N [PHP] Controllare condizione ciclo While PHP 9
maxnegri [PHP] Eliminare risultati duplicati da ciclo foreach ottenuti da una select php mysqli PHP 18
N [PHP] Registrare variabili all'interno di un ciclo PHP 3
MattiaBL [PHP] Problema ciclo while PHP 3
elpirata [PHP][RISOLTO] Sommare gli importi estratti da un ciclo while PHP 3
C [PHP] Ciclo for dinamico PHP 14
gandalf1959 [PHP] query all'interno di un ciclo while PHP 3
Z [PHP] ciclo for PHP 9
valvasori [PHP] Problema ciclo for PHP 12
A [PHP] metodo di una classe per estrarre i dati con ciclo while PHP 1
H [PHP] Ciclo per calcolare i chilometri PHP 4
S [PHP] Recupero più dati da form realizzata ciclo FOR PHP 5
gandalf1959 [PHP] ciclo while non scrive dove dovrebbe... PHP 2
Monital [PHP] ciclo su un file json molto grande PHP 1
M [PHP] Errore in ciclo foreach PHP 1
O Ciclo non visualizzato PHP 1
M problema ciclo javascript Javascript 4
F Problema codice in un ciclo while PHP 2
T ciclo $.each non va jQuery 4
V Generare array da ciclo while e prendere valori casuali PHP 4
I tabella con ciclo, recupero dati PHP 3
Monital Problema con un ciclo for. PHP 1
M Problema con ciclo foreach per chiusura apertura div in base al numero di record in database PHP 1
S Ciclo PHP molto complesso PHP 2
minatore Ciclo while PHP 3
D ciclo while mi genera due campi vuoti PHP 5
K Problema con update di un database in un ciclo Classic ASP 1
P JAVA 8 Ciclo For all'interno di un altro Ciclo For Java 3
B ciclo in PHP per creare numero progressivo PHP 2
otto9due Problema inserimento ciclo foreach o while in variabile PHP 1
M Caricare più google maps con un ciclo Javascript 1
N Stranezza sul ciclo while PHP 1
M Aiuto su come procedere con un ciclo foreach PHP 4
A Tabella e ciclo for PHP 7
N Invio Form con un Ciclo For Javascript 8

Discussioni simili