Ciclo su pulsante e istruzioni quando si preme

  • Creatore Discussione Creatore Discussione Emix
  • Data di inizio Data di inizio
scusami ma ieri ho avuto na maledettissima comunione -.- ho fatto delle prove.. ora praticamente il primo lo prende giusto e la seconda riga la da vuota... se io continuo , lui inserisce sempre righe vuote.. Da quel che vedo non confronta bene il barcode... ti allego immagine-

Immagine.png

Inoltre se provo a rifare il tutto, mi "salva" le righe rpecedenemente cercate...
Ultima cosa.. Ho aggiunto il pezzo della form che avevi omesso, non si vedeva nulla..

HTML:
<form action="<?= $_SERVER['PHP_SELF'] ?>" method="post"> <!-- è bene specificare l'action nell'action del form, e non traite js! -->
<table>
<tr>
<td><input type="text" placeholder="Barcode" name="barcodeart[]" id="barcodeart" size="10" value=""></td> 
<td><input type="submit" class="visto" name="visto"></td>
</tr>
</table> 
</form>
 
nono la descrizione anello a 0 euro è un articolo senza barcode.. errato.. per cuis tampa quello come se non funzionasse la variabile di confronto nella query
 
ciao
sto andando per tentativi non avendo i dati del db.
prova così, ho provato ad implementare due contatori, uno per la sessione ($i) e uno per i valori dei post ($ii)
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'];
$ii=0; //contatore che si azzera e quindi riparte
do{
    if(isset($_POST['visto'][$ii])){//ii
        $barcodevisto[$ii] = $_POST['barcodeart'][$ii];//ii
        //poi modifica la quary così è meglio quando si usano gli array
        $queryart=("SELECT * FROM articoli WHERE Barcode='".$barcodevisto[$ii]."'") or die (mysql_error());//ii 
        $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[$ii]=$righi[Barcode];
            $descrizione[$ii]=$righi[Descrizione];
            $prezzo[$ii]=$righi[Vendita];
            $fornitore[$ii]=$righi[Fornitore];
            $reparto[$ii]=$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']++;
			$ii++;
        }else{
?>
            <script>
            alert('Articolo non trovato');
            </script>
<?php
        }
    }
}while(($barcodenew[$i] != null)&&($descrizione[$i] != null)&&($prezzo[$i] != null)) 
//parentesi for       }
?>
 
domanda:

Peché non usi jQuery per fare una chiamata ajax che resistuisca un array JSON con i dati della riga e la fai inserire a jQuery?

Qualcosa tipo:

Codice:
 $.ajax({
	url: "getinfo.php",
	type: "GET",
	data: barcode,
	success: function(data) {
		var item = $.parseJSON(data);
		$(".listbox").append("<tr><td>" + barcode + "</td><td>" + item.name + "</td><td>" + item.quantity + </td></tr>");
	},
	error: function() {
		alert("Errore!");
	}
});

Non ho messo tutti i campi, è solo un esempio.

In getinfo.php fai uno stupidissimo script che dal barcode prende le info e fa un echo tipo:

PHP:
echo '{"name": "' . $name . '", "quantity": "' . $quantity . '"}';

Giusto per dare l'idea..
 
Borgo ho appena testa.. mi da un warning :

Warning: Invalid argument supplied for foreach() in /home/laviadellanima.com/public_html/prove/borgo.php on line 8

Ed inoltre non è cambiato nulla...

Sto diventando scemo...



@Fez Vrasta:

Non uso JQUERY e/o Ajax perchè non sono in grado... non ne ho le competenze basi... Mentre con PHP riesco a muovermi bene...
 
Borgo ho appena testa.. mi da un warning :

Mentre con PHP riesco a muovermi bene...

Si vede :hammer:

Ti ho già scritto quasi tutto quello che bisogna fare in jQuery, e comunque farti scrivere un codice in PHP da noi del forum o fartelo scrivere in jQuery è lo stesso.
 
veramente Borgo è partito dal mio di codice... Il fatto che gli dica del warning non significa che non sappia correggerlo ma che lo avvisavo di tale fatto. Tant'è che manca la parte relativa all'input ma non mi sembra che l'abbia citata. Per quanto riguarda il JQUERY ti ho detto che SE posso evitare, lo evito. Poi se non si riesce a fare in php prenderò per buono il tuo consiglio.
 
Intendi che preferisci usare un metodo che necessita di ricaricare la pagina ad ogni input invece che uno che aggiorna dinamicamente la pagina?

Oh beh sì, molto più user friendly il primo metodo :hammer:
 
non ho MAI detto che il mio metodo era il migliore... ma ho detto che il mio metodo lo CONOSCO. Sono due cose ben differenti...
 
e allora che problemi ti fai. Se sai scrivere in PHP prepara lo script come ti ho indicato e come jQuery usa questo:

Javascript:
Codice:
$(function() {
	// Quando si invia il form
	$('.inputbox').submit(function(e){
		// Prevengo il comportamento di default
		e.preventDefault();

		// Popolo barcode con il contenuto di #barcodeinput
		var barcode = $("#barcodeinput").val();
		
		// Parte la chiamata Ajax
		$.ajax({
			url: "getinfo.php", // File PHP che si occupa della richiesta dei dati
			type: "GET",
			data: "barcode=" + barcode,
			// Una volta ricevuti i dati inserisco una nuova riga in .listbox
			success: function(data) {
				var item = $.parseJSON(data);
                                // Inserisco la nuova riga
				$(".listbox").append("<tr><td>" + barcode + "</td><td>" + item.name + "</td><td>" + item.quantity + </td></tr>");
                                // Pulisco il form (non so se serva davvero)
                                $("#barcodeinput").val("");
			},
			error: function() {
				alert("Errore!");
			}
		});


	});
});


HTML:
Codice:
<table class="listbox">
	<tr><td>barcode</td><td>nome</td><td>quantità</td></tr>
</table>
<form class="inputbox">
	<table class="listbox">
		<tr><td><input type="text" id="barcodeinput"></td><td></td><td></td></tr>
	</table>
</form>
 

Discussioni simili