Php e mysql, estrazione da una tabella e inserimento in un'altra tabella

SiKei2

Nuovo Utente
19 Mag 2016
8
0
1
27
Buonasera,
Sono uno studente e devo realizzare un sito simile a JustEat. Sto utilizzando XAMPP come Web services e utilizzo come linguaggi di programmazione PHP e HTML. E' qualche giorno che sono bloccato e non riesco ad andare avanti: quando l'utente si trova sulla pagina che mostra il carrello deve aver la possibilità di confermare il carrello, infatti ho aggiunto un bottone(submit) che, nel momento in cui viene premuto, richiama la pagina in php che si dovrebbe occupare di selezionare i dati nella tabella carrello ed estrarli (SELECT, fetch_assocc()) e inserirli nella tabella ordine (INSERT INTO). Il problema è che la query di inserimento si esegue senza generare errori ma, mi crea solo una riga vuota nel DB.
Come posso risolvere?
Vi posto qui 2 foto delle tabelle sopra citate e il codice che si occupa delle query.
Grazie mille in anticipo.


Carrello.JPG


Ordine.JPG





PHP:
<?php
session_start();
$_SESSION['utente'];
$_SESSION['indirizzo'];
$_SESSION['civico'];
?>
<html>
    <head><title>Ordine</title></head>
    <body>
    <?php
    $host="localhost";     // Host name
    $username="root";     // Mysql username
    $password="";         // Mysql password
    $db_name="sito";     // Database name
    $ID_ristorante=$_GET['ID_ristorante'];
    $utente=$_SESSION['utente'];
    $indirizzo=$_SESSION['indirizzo'];
    $civico=$_SESSION['civico'];
   

    // Connect to server and select database.
    $conn=mysql_connect("$host", "$username", "$password")or die("Errore di connessione".mysql_error());
    mysql_select_db($db_name, $conn)or die("Impossibile accedere al database richiesto".mysql_error());

    $q_mostra="SELECT carrello.ID_carrello, carrello.nome_portata, carrello.descrizione, carrello.prezzo, carrello.quantita, carrello.totale_parziale, carrello.data_carrello, carrello.ora_carrello FROM carrello WHERE carrello.ID_utente='$utente' AND carrello.ID_ristorante='$ID_ristorante' ";
   
    $q_totale="SELECT SUM(carrello.totale_parziale) AS tot FROM carrello WHERE carrello.ID_utente='$utente' AND carrello.ID_ristorante='$ID_ristorante'";
   
    $q_ordine="INSERT INTO ordine (ID_ristorante, ID_utente, ID_carrello, nome_portata, descrizione, quantita, totale_parziale, data_ordine, ora_ordine) VALUES ('$ID_ristorante','$utente','$carrello','$nome_portata','$descrizione','$quantita','$totale_parziale','$data_carrello','$ora_carrello')";


    $ris_mostra=mysql_query($q_mostra);
    $ris_totale=mysql_query($q_totale);
    if(!$ris_mostra && !$ris_totale){
        echo "Query non eseguita";
    }
    //Conta quante righe ha prodotto la ricerca
    $num_mostra=mysql_num_rows($ris_mostra);
    if($num_mostra > 0){
        $totale = mysql_fetch_assoc($ris_totale);
        $totale_finale = $totale['tot'];
        while($dato=mysql_fetch_assoc($ris_mostra)){
            $carrello=$dato['ID_carrello'];
            $nome_portata= $dato['nome_portata'];//estrazione del nome e salvataggio nella variabile
            $descrizione= $dato['descrizione'];//estrazione della descrizione e salvataggio nella variabile
            $prezzo= $dato['prezzo'];//estrazione del prezzo e salvataggio nella variabile
            $quantita= $dato['quantita'];//estrazione della quantità e salvataggio nella variabile
            $totale_parziale= $dato['totale_parziale'];//estrazione del prezzo e salvataggio nella variabile
            $data_carrello=$dato['data_carrello'];
            $ora_carrello=$dato['ora_carrello'];
            $ris_ordine=mysql_query($q_ordine);
        }
       
    }




    mysql_close($conn);
    ?>
    </body>
</html>
 

localhost.nicola

Utente Attivo
11 Dic 2015
58
2
8
Ciao, in poche parole tu, quando l'utente aggiunge un articolo sul carrello, lo carichi su una tabella? E dopo, quando conferma, vuoi estrarre dalla tabella quest'ultimi per poi caricarli su un altra tabella?
 
  • Like
Reactions: SiKei2

Rikk73

Utente Attivo
7 Apr 2015
141
6
18
Arezzo
Io fossi in te intanto lascerei perdere le funzioni mysql che sono deprecate, e passerei subito a mysqli o PDO.
Inoltre, visto che sei uno studente e quindi a meno che tu non debba per forza fare questo doppio passaggio nel db, il carrello temporaneo lo salvere in modo diverso.

Ad esempio io ho ina classe cart.class.php (se vuoi darci un'occhiata te la allego) che il temporaneo lo slava in file xml, poi quando recuperi i dati da questo file, anche in un secondo momento quindi, fai la INSERT per confermare definitivamente l'ordine.
 

Allegati

  • cart.class.zip
    4,7 KB · Visite: 370

localhost.nicola

Utente Attivo
11 Dic 2015
58
2
8
Secondo me non è molto conveniente. Potresti più semplicemente utilizzare una tabella carrello dove ogni qual volta un utente aggiunge un articolo nel carrello tu aggiungi un record, con magari id_legame_articolo, dove inserirai l'id dell'articolo.

Tutto ciò secondo me.
 
  • Like
Reactions: Rikk73

SiKei2

Nuovo Utente
19 Mag 2016
8
0
1
27
Rikk73 so che MySQL è obsoleto ed è meglio utilizzare PDO ma dato che ho già scritto la maggior parte delle altre pagina con la MySql tradizionale non mi conviene cambiare tutto ora. Inoltre nemmeno lo hanno spiegato a scuola PDO, è meglio utilizzare quindi un linguaggio di programmazione che conosco meglio.

Nicola non ho capito cosa intendi. Io h bisogno di tirar giù i dati da una tabella e inserirli in un'altra tabella. Tu quali modifiche apporteresti al mio codice?

Grazie a entrambi comunque
 

Rikk73

Utente Attivo
7 Apr 2015
141
6
18
Arezzo
prova a fare un var_dump($dato) dopo che lo hai valorizzato, prima di $ris_ordine e guarda se il problema sta nella valorizzazione delle variabili da inserire nella tabella
 

SiKei2

Nuovo Utente
19 Mag 2016
8
0
1
27
Ora provo, comunque il problema secondo me è che mi estrae tutti i dati della tabella in un colpo solo e quindi l'INSERT INTO non riesce ad inserire un dato preciso. Dovrebbe invece estrarre un dato alla volta e inserirlo nell'altra tabella.
Capito?
 

localhost.nicola

Utente Attivo
11 Dic 2015
58
2
8
Io intendevo dire che è proprio sbagliata la logica.. Comunque per estrarre e inserire in una nuova tabella il record appena estratto devi eseguire una query di inserimento dentro al ciclo di estrazione. Prova e vedrai che se non ci sono errori di sintassi funziona.

Saluti
 

SiKei2

Nuovo Utente
19 Mag 2016
8
0
1
27
Nicola, scusa, io è proprio quello che faccio, dentro il while che estrae i dati faccio eseguire la query che inserisce. Cosa c'è di sbagliato quindi?
 

localhost.nicola

Utente Attivo
11 Dic 2015
58
2
8
Crea la query direttamente dentro al ciclo.

PHP:
<?php
session_start();
$_SESSION['utente'];
$_SESSION['indirizzo'];
$_SESSION['civico'];
?>
<html>
 <head><title>Ordine</title></head>
 <body>
<?php
 $host="localhost"; // Host name
 $username="root"; // Mysql username
 $password=""; // Mysql password
 $db_name="sito"; // Database name
 $ID_ristorante=$_GET['ID_ristorante'];
 $utente=$_SESSION['utente'];
 $indirizzo=$_SESSION['indirizzo'];
 $civico=$_SESSION['civico'];
 

 // Connect to server and select database.
 $conn=mysql_connect("$host", "$username", "$password")or die("Errore di connessione".mysql_error());
 mysql_select_db($db_name, $conn)or die("Impossibile accedere al database richiesto".mysql_error());

 $q_mostra="SELECT carrello.ID_carrello, carrello.nome_portata, carrello.descrizione, carrello.prezzo, carrello.quantita, carrello.totale_parziale, carrello.data_carrello, carrello.ora_carrello FROM carrello WHERE carrello.ID_utente='$utente' AND carrello.ID_ristorante='$ID_ristorante' ";
 
 $q_totale="SELECT SUM(carrello.totale_parziale) AS tot FROM carrello WHERE carrello.ID_utente='$utente' AND carrello.ID_ristorante='$ID_ristorante'";
 
 


 $ris_mostra=mysql_query($q_mostra);
 $ris_totale=mysql_query($q_totale);
 if(!$ris_mostra && !$ris_totale){
 echo "Query non eseguita";
 }
 //Conta quante righe ha prodotto la ricerca
 $num_mostra=mysql_num_rows($ris_mostra);
 if($num_mostra > 0){
  $totale = mysql_fetch_assoc($ris_totale);
   $totale_finale = $totale['tot'];

 while($dato=mysql_fetch_assoc($ris_mostra)){

    $carrello=$dato['ID_carrello'];
       $nome_portata= $dato['nome_portata'];//estrazione del nome e salvataggio nella variabile
           $descrizione= $dato['descrizione'];//estrazione della descrizione e salvataggio nella variabile
                $prezzo= $dato['prezzo'];//estrazione del prezzo e salvataggio nella variabile
                       $quantita= $dato['quantita'];//estrazione della quantità e salvataggio nella variabile
                                $totale_parziale= $dato['totale_parziale'];//estrazione del prezzo e salvataggio nella variabile
                                     $data_carrello=$dato['data_carrello'];
                                               $ora_carrello=$dato['ora_carrello'];

#CODICE DI INSERIMENTO NUOVA TABELLA
$q_ordine="INSERT INTO ordine (ID_ristorante, ID_utente, ID_carrello, nome_portata, descrizione, quantita, totale_parziale, data_ordine, ora_ordine) VALUES ('$ID_ristorante','$utente','$carrello','$nome_portata','$descrizione','$quantita','$totale_parziale','$data_carrello','$ora_carrello')";


 $ris_ordine=mysql_query($q_ordine);
#FINE CODICE INSERIMENTO NUOVA TABELLA

 }
 
 }




 mysql_close($conn);
 ?>
 </body>
</html>
 

SiKei2

Nuovo Utente
19 Mag 2016
8
0
1
27
Nicola, sei un mago? FUNZIONA! Grazie mille davvero. Quindi scrivere prima la query ed eseguirla dopo, al posto che scriverla ed eseguirla nello stesso momento ha questa differenza?! Mi sarà d'aiuto d'ora in poi!! Ancora mille grazie a entrambi.
 
Discussioni simili
Autore Titolo Forum Risposte Data
L estrazione dati da mysql in php e salvataggio in cartella del server PHP 51
P Codifica caratteri speciali mysql php PHP 0
F Applicazione PHP/MySQL per prenotazioni: limitare il numero massimo di posti prenotabili PHP 20
L tipo boolean non funzionante su mariadb (mysql). E codice php 7.4. PHP 0
M PHP/MySQL - Estrarre valori min e max di ogni gruppo PHP 5
F Ricreare struttura php+mysql su Xampp Apache 0
M Array associativi php su 2 campi mysql PHP 10
L php mysql non salva solo id PHP 21
L php mysql cerca e visualizza pagina PHP 0
R Aggiornare record mysql con Ajax, jQuery e php Ajax 2
Z MySql injection PHP PHP 1
D problema php mysql PHP 1
D problema php mysql PHP 1
L Google chart php mysql PHP 2
L Aiuto per programma web php/mySQL PHP 2
S Problemi delle funzioni eliminate con PHP e MySQL PHP 4
C Aiuto compiuto scuola PHP/MySQL PHP 2
G Problema caricamento tabelle MySql da PhP PHP 0
L update tabelle in php mysql [risolto] PHP 6
F Passare una variabile php dal DB mysql alla pagina PHP 3
B Fare calcoli con php da tabella mysql PHP 2
D [MySQL] [PHP] SQL andare da capo MySQL 0
P [OFFRO] Realizzazione siti web in PHP/MYSQL, responsive e Ottimizzati SEO Offerte e Richieste di Lavoro e/o Collaborazione 0
Tommy03 Firebase o PHP+Mysql? Sviluppo app per Android 0
pjtertdj Visualizzazione dati in php da mysql con funzione matematica in javascript PHP 1
E Cerco programmatore PHP/Mysql - retribuito Offerte e Richieste di Lavoro e/o Collaborazione 0
K [RISOLTO] Problema Griglia Php+Mysql PHP 13
Z Gestionale in Php/mysql: Quanto farsi pagare? Aiuto! Discussioni Varie 0
E Inserimento dati da PHP in tabella MySQL PHP 5
R radio input php mysql PHP 2
E Caricare dati da DB MySql all'apertura pagina, meglio PHP o Javascript? PHP 1
giusebos [retribuito] Cercasi programmatore PHP/MySql Offerte e Richieste di Lavoro e/o Collaborazione 1
N Apache + MySQL + PHP MacOs Mojave Web Server 0
T PHP+MYSQL: problema con quelle maledette lettere accentate... PHP 5
K [PHP + MYSQL ] Inserimento dati in database da form dinamico PHP 13
M [PHP] Metodo migliore per fare login a un DB Mysql PHP 1
gandalf1959 problema con la codifica caratteri accentati e speciali tra php e mysql PHP 3
webmachine [PHP][MYSQL] Problema con le SELECT PHP 5
V Creare tabella mysql con php non funziona PHP 1
W Area riservata sicura PHP MySQL PHP 12
G php salvare file in campo blob mysql: massimo 4MB PHP 1
xone [Vendo] Gestionale Magazzino PHP-MYSQL Altri Annunci 0
M Stampare con php e mysql PHP 8
P Importazione dati da file xml in db mysql con php PHP 17
xone [Vendo] Script gestionale php-mysql gestione pratiche Altri Annunci 0
D problemi login php 5.6 mysql PHP 1
T PHP+MYSQL: stampare record con numero progressivo PHP 3
F php PDO mysql connessione(select_db) PHP 3
O paginazione php mysql PHP 10
Fede72 Controllo registrazioni PHP Mysql PHP 5

Discussioni simili