[PHP] Difficoltà inserimento valori nella tabella scontrini

mozillaro

Nuovo Utente
8 Apr 2017
14
0
1
25
salve ragazzi , ho un problema di funzionamento del mio programmino in php , spero di risolverlo qui , visto che in altri siti nessuno mi ha risposto .

PHP:
<?php
session_start();

for($i=0;$i<5;$i++)
echo "<br>";

$nome=$_SESSION['name'];
$cognome=$_SESSION['subname'];

$prodotti=$_POST['prodotti'];
$quantita=$_POST['quantita'];

if(!$prodotti && !$quantita)
  echo "prodotto e quantita' non selezionati!";
else
    {
$con=new mysqli('127.0.0.1','root','') or die (mysql_error());
mysqli_select_db($con,'acquisti') or die (mysql_error());
$query = "SELECT idprodotto,nome,quantita,prezzo
          FROM prodotti";
$result=mysqli_query($con,$query);

if(!$result)
 echo "errore caricamento...".(mysql_error());
else
 { 
     $rs=mysqli_fetch_row($result);
     for($i=0;$i<sizeof($rs);$i++)
     { 
         if(($prodotti[$i]==$rs[0])&&($rs[2]!=0)&&($rs[2]>0)){
          
             $query = " UPDATE prodotti
                        SET quantita=quantita- ".$quantita[$i].";";
             mysqli_query($con,$query) or die (mysql_error());
          
             $query_carta = " SELECT cartacredito
                              FROM persone
                              WHERE nome='$nome' AND cognome='$cognome'";
                              $cartacredito = mysqli_query($con,$query_carta);
                              $cc=mysqli_fetch_row($cartacredito);
             $query_prezzo = " SELECT prezzo
                               FROM prodotti
                               WHERE nome='$prodotti[$i]' ";
                              $prezzo = mysqli_query($con,$query_prezzo);
                              $p=mysqli_fetch_row($prezzo);
             $query_id = "    SELECT idcliente
                              FROM persone
                              WHERE nome='$nome' AND cognome='$cognome'";
                              $id = mysqli_query($con,$query_id);
                              $i=mysqli_fetch_row($id);
             $query_art = "   SELECT idprodotto
                              FROM prodotti
                              WHERE nome='$prodotti[$i]' ";
                              $art = mysqli_query($con,$query_art);
                              $ar=mysqli_fetch_row($art);
          

             $query_ins = " INSERT INTO scontrini (carta_cred,datacquisto,prezzo_u,cod_cliente,cod_art)
                            VALUES ('$cc[$i]','22032017','$p[$i]','$i[$i]','$ar[$i]')";
             mysqli_query($con,$query_ins) or die (mysql_error());
             echo "Carrello In Caricamento";       
         }
      
         $rs=mysqli_fetch_row($result);
     }
  
  
  
  }

}
mysqli_close($con);
?>

</body>

questo codice in teoria dovrebbe permettermi di inserire i valori dentro la tabella scontrini , ma ciò non avviene e non capisco come dovrei procedere. Attendo risposte please!

Alcune Note :
$prodotti = contiene le chiavi dei prodotti , cosicche da confrontarli....
$quantita = contiene le quantita dei prodotti richiesti....
una funzione tipo curdate() può essere inserita , nella query di inserimento?
 
Ultima modifica di un moderatore:
Hai provato ad eseguire la query direttamente sul database? Se hai phpmyadmin installato puoi farlo facilmente

Inviato dal mio ONE A2003 utilizzando Tapatalk
 
PHP:
     for($i=0;$i<sizeof($rs);$i++)
     {
         if(($prodotti[$i]==$rs[0])&&($rs[2]!=0)&&($rs[2]>0)){
credo di capire che la variabile $i, usata nel for, rappresenti le 4 colonne selezionate,
ed assuma solo i valori da 0 a 3,
nulla a che vedere con i prodotti passati nel $_POST
o mi sbaglio ?
 
Le query non le ho provate nel database , perchè ritenendole semplici , non ritengo di provarle , ma nel bene o nel male le proveró .
Ora che ci penso io controllo le celle/righe della tabella prodotti , confrontate con gli elementi scelti dal cliente ... il problema è che il metodo delle query applicate alle variabili non vale...
Ora che ci penso i prodotti vengono contati e incrementati finché non vengono verificate le celle/righe forse c'è una incongruenza ...
 
ci sono diverse incongruenze, sarebbe meglio che riscrivessi il tutto cercando di identificare bene la logica delle operazioni
ti ho scritto che non puoi usare un indice riferito alle colonne della riga selezionata dal database per indicizzare i prodotti che vengono scelti dall'utente
sembra di chiamare pera il cavolo .....
 
Codice:
$con=new mysqli('127.0.0.1','root','') or die (mysql_error());
mysqli_select_db($con,'acquisti') or die (mysql_error());
$query = "SELECT idprodotto,nome,quantita,prezzo
          FROM prodotti";
$result=mysqli_query($con,$query);

if(!$result)
 echo "errore caricamento...".(mysql_error());
else
 {  
     while($rs=mysqli_fetch_row($result))
       {
           for($i=0;$i<sizeof($prodotti);$i++){
               if(($prodotti[$i]==$rs[0])&&($rs[2]!=0)&&($rs[2]>0))
               {  
                   $calo_q = "UPDATE prodotti
                              SET quantita=quantita-'$quantita[$i]'
                              WHERE idprodotto='$prodotti[$i]'";
                              $cq=mysqli_query($con,$calo_q);
                     
                   $query_carta = "SELECT cartacredito
                                   FROM persone
                                   WHERE nome='$nome'";
                                   $carta=mysqli_query($con,$query_carta);
                                   $cc=mysqli_fetch_row($carta);
                 
                   $query_p =     "SELECT prezzo
                                   FROM prodotti
                                   WHERE idprodotto='$prodotti[$i]'";
                                   $prezzo=mysqli_query($con,$query_p);
                                   $prez=mysqli_fetch_row($prezzo);
                                 
                   $query_idcl = "SELECT idcliente
                                   FROM persone
                                   WHERE nome='$nome' AND cognome='$cognome'";
                                   $id=mysqli_query($con,$query_idcl);
                                   $i=mysqli_fetch_row($id);
                                 
                   $query_idart = "SELECT idprodotto
                                   FROM prodotti
                                   WHERE idprodotto='$prodotti[$i]'";
                                   $ida=mysqli_query($con,$query_idart);
                                   $idar=mysqli_fetch_row($ida);
                 
                   $q_i = "INSERT INTO scontrini (carta_cred,datacquisto,prezzo_u,cod_cliente,cod_art)
                           VALUES ('$cc[0]',curdate(),'$prez[0]','$i[0]',$idar[0])";              
                           $insert=mysqli_query($con,$q_i) or die (mysql_error());
               }
           }
         
         
         
         
       }
         
  }

}
mysqli_close($con);
?>

scusatemi , ma con il ciclo while ,impostato in questo modo , dovrebbe scovare ogni riga del mio database ,confrontandole con ciò che ha scelto l'user.... non capisco perchè non scenda di riga , ad un certo punto mi da errore durante la selezione del prezzo ...mi dice che l'index dei prodotti è illegale ... aiuto please!
chiamo @marino51 in causa ;)
 
no , perchè mi conta correttamente i prodotti all'interno ... non vengono processati , quelli della tabella ,non so comunque dove sia l'errore
 
Ultima modifica:
Posta l'errore preciso, se parli di index di $prodotti il problema è nell'indice dell'array o nel ciclo for che a un certo punto va a raggiungere un index che non esiste. Aiutaci a capire meglio il problema.

Inviato dal mio ONE A2003 utilizzando Tapatalk
 
grazie , di rispondere alle mie domande @the_jurgs , allora mi dice questo :

Warning
: Illegal offset type in C:\Program Files (x86)\EasyPHP-Devserver-16.1\eds-www\Acquisti\carrellopag.php on line 88

che corrisponde a ....
Codice:
 $query_p =     "SELECT prezzo
                                   FROM prodotti
                                   WHERE idprodotto='$prodotti[$i]'";
                                   $prezzo=mysqli_query($con,$query_p);
                                   $prez=mysqli_fetch_row($prezzo);
"
precisamente nella parte di " idprodotto='$prodotti[$i]' "


 
Il tipo di errore indica principalmente 2 possibilità:
1 - o stai trattando un Oggetto come se fosse un Array,
2 - o stai inserendo un indice che PHP non riesce ad interpretare

Quindi proviamo una cosa, giusto per cominciare a togliere qualche elemento dalla lista degli indiziati.
Subito dopo
PHP:
$prodotti = $_POST['prodotti']

inserisci le seguenti righe
PHP:
$messaggio = "I prodotti sono: ".count($prodotti);
echo $messaggio;
echo $prodotti;
print_r($prodotti);

Fammi sapere cosa ne esce fuori
 
sono riuscito a risolverlo!
ora ho intoppato in un'altro problema diamine , sto per finire!

Codice:
 $query="SELECT id_scon,prezzo_u,quantita
               FROM scontrini";
       $rs=mysqli_query($con,$query) or die (mysql_error());
       $fetch=mysqli_fetch_row($rs);
       $importo=0;
       for($i=0;$i<sizeof($rs);$i++)
          {   
           $importo=$importo+($fetch[1]*$fetch[2]);
           $fetch=mysqli_fetch_row($rs);
       }echo $importo;
      /*
       $qc = "INSERT INTO carrelli (n_carr,cod_scontrino,importo)
                  VALUES (NULL,'$rs[0]','$importo')";
                  $ins=mysqli_query($con_query) or die (mysql_error());*/

non posso inserire importo , non me lo mette!
@the_jurgs
 
Spiegati meglio, non funziona la INSERT? Restituisce qualche errore? Perchè la INSERT è commenta?
PS spiegaci come hai risolto il problema di prima ;)
 
Fatal error: Cannot use object of type mysqli_result as array in C:\Program Files (x86)\EasyPHP-Devserver-16.1\eds-www\Acquisti\carrellopag.php on line 98

nell'inserimento dell'importo
 

Discussioni simili