Ciclo su pulsante e istruzioni quando si preme

  • Creatore Discussione Creatore Discussione Emix
  • Data di inizio Data di inizio

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       }
?>
 
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
 
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:
bravissimo... esattamente come hai detto te... scrivo un altro codice e vorrei che si formi una riga sotto la rpecedente......
 
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...
 
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>
 
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)) 
?>
 
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
 
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 "\"
 
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
 
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()
 
uhm.. non da errore... però non visualizza nulla... ti do link per fare delle prove :

laviadellanima.com/prove/borgo.php

come barcode prova : 7640141078778
 
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
 
si infatti ora funziona... ma continua a ovrascrivere la linea che trova...
 
laviadellanima.com/prove/borgo.php

come barcode prova : 7640141078778
1920100216004
 
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
 
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....
 
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