Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di KatAlive
    Registrato dal
    Jan 2020
    residenza
    Piacenza
    Messaggi
    10

    Android e PHP - Connessione e Inserimento DB PHPMyAdmin

    Ciao Ragazzi,
    Premetto che sono proprio all'inizio della mia avventura con PHP e Android, fino ad ora ho solo ed esclusivamene programmato in JAVA. Quindi non insultate se faccio domande o richieste scontate per esperti del settore come voi, ma cerco di imparare.

    Ho appena terminato con android studio una app che possiede solo dei campi testo e due bottoni; lo scopo della app è prendere il contenuto di quei campi testo ed andarli ad inserire all'interno di un Database creato con WampServer e PHPMyAdmin. In Java, popolare i campi testo ed inserire il tutto nel DB, modificare dati del DB ecc è estremamente facile, perchè Java ha la connessione diretta al DB, mentre Android no, per operare su DB devo passare tramite fogli PHP contenenti query e variabili $_POST, se non erro dovrebbe essere così.

    La parte android, sfruttando anche vari tutorial l'ho terminata e sembra funzionare perfettamente, ciò che non va è la parte PHP. Chiedo a qualche esperto del settore se può visionare il mio script di inserimento dati e connessione per vedere se con PHP7 vi sono degli errori. Innanzitutto posto uno screen di come è la app android, così si capisce cosa va inserito nel DB e poi i miei codici PHP con relativo errore nel test dello script :

    Layout app android :

    Annotazione 2020-01-18 140111.jpg

    Script PHP per connessione ed operazione inserimento nel DB :
    Codice PHP:
    $db_name "consumabili";
    $mysql_username "root";
    $mysql_password "password";
    $server_name "localhost";
    $connection mysqli_connect($server_name,$mysql_username,$mysql_password,$db_name);

    $codice $_POST('codice');
    $descrizione $_POST('descrizione');
    $data $_POST('data');
    $ora $_POST('ora');
    $pallet $_POST('pallet');
    $bulk $_POST('bulk');
    $unita $_POST('unita');
    $locazione $_POST('locazione');
    $operatore $_POST('operatore');

    $sql "INSERT INTO deposito (Codice, Descrizione, Data, Ora, Pallet, Bulk, Unita, Locazione, Operatore) VALUES(?,?,?,?,?,?,?,?,?)";
    $stmt$conn -> prepare($sql);
    $stmt->bind_param("sssssssss"$codice$descrizione$data$ora$pallet$bulk$unita$locazione$operatore);
    $stmt->execute();

    $connection -> close(); 
    ERRORE riscontrato eseguendo il file tramite indirizzo : localhost/stoccaggio.php :

    Annotazione 2020-01-18 145833.jpg

    La riga 8 del codice impattato è la seguente :
    Codice PHP:
    $codice $_POST('codice'); 
    Sarei grato a chiunque mi potesse aiutare a risolvere questo problema con PHP.

    Saluti e grazie in anticipo.

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    11,811
    Ciao, ci sono diversi errori.
    Quello che ti propone PHP è dovuto al fatto che hai usato le parentesi tonde invece delle quadre sull'array $_POST, deve essere $_POST['nome_chiave'] e non $_POST('nome_chiave'), le parentesi tonde si usano per le funzioni e $_POST non è una funzione.

    Risolto questo, PHP si lamenterà per la variabile $conn non definita, occhio, la connessione l'hai chiamata $connection non $conn.

    A questo punto avrai un errore sulla prepare() perché hai definito la connessione al database usando un approccio procedurale, mentre lì usi la connessione come se fosse la versione object oriented, nel tuo caso $connection non è un oggetto, quindi dovrai usare le funzioni mysqli_prepare() e compagnia bella.

    Qui trovi degli esempi
    https://www.php.net/manual/en/mysqli.prepare.php
    c'è sia l'approccio OO che quello procedurale, tu li stai mischiando e non si può, o usi uno oppure l'altro.

  3. #3
    Utente di HTML.it L'avatar di KatAlive
    Registrato dal
    Jan 2020
    residenza
    Piacenza
    Messaggi
    10
    Perfetto Alhazred, Grazie mille per le dritte! Mi metto a lavoro.

  4. #4
    Utente di HTML.it L'avatar di KatAlive
    Registrato dal
    Jan 2020
    residenza
    Piacenza
    Messaggi
    10
    Ho provato a rivoluzionare un pò tutto e seguendo il tuo consiglio di non mischiare ma adottare o una o l'altra strada, ho puntato sulla versione object oriented, il file PHP ora è diventato così :

    Codice PHP:
    $mysqli = new mysqli("localhost""root""password""consumabili");

    /* controllo connessione */
    if (mysqli_connect_errno()) {
        
    printf("Connect failed: %s\n"mysqli_connect_error());
        exit();
    }else{
        
    printf("Connection Success!");
    }

    /* dichiarazioni variabili */
    $descrizione $_POST['descrizione'];
    $data $_POST['data'];
    $ora $_POST['ora'];
    $pallet $_POST['pallet'];
    $bulk $_POST['bulk'];
    $unita $_POST['unita'];
    $locazione $_POST['locazione'];
    $operatore $_POST['operatore'];

    /* creazione statement */

    if ($stmt $mysqli->prepare("INSERT INTO deposito (Codice, Descrizione, Data, Ora, Pallet, Bulk, Unita, Locazione, Operatore) VALUES(?,?,?,?,?,?,?,?,?)")) {
    $stmt->bind_param("sssssssss"$codice$descrizione$data$ora$pallet$bulk$unita$locazione$operatore);
    $stmt->execute();
    $stmt -> close();
    }
    $mysqli -> close() 
    Dici che va un pò meglio adesso? anche se ora l'errore che dà è il seguente :

    Parse error: syntax error, unexpected ',', expecting ']' in C:\wamp64\www\stoccaggio.php on line 26


    La riga 26 è la seguente :
    Codice PHP:
    $stmt->bind_param("sssssssss"$codice$descrizione$data$ora$pallet$bulk$unita$locazione$operatore); 
    Immagino che un problema siano le ")", lui vuole le "]", ma il resto...

  5. #5
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    11,811
    Non hai inizializzato la variabile $codice, la usi nella query senza mai averla valorizzata.

  6. #6
    Utente di HTML.it L'avatar di KatAlive
    Registrato dal
    Jan 2020
    residenza
    Piacenza
    Messaggi
    10
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Non hai inizializzato la variabile $codice, la usi nella query senza mai averla valorizzata.
    Buongiorno Alhazred,
    Si errore mio di distrazione, nella fretta di risistemare ho scordato di inserirla all'inizio, sopra a $descrizione.
    Ho aggiunto la variabile $codice valorizzandola ma l'errore che mi da è sempre lo stesso :

    Parse error: syntax error, unexpected ',', expecting ']' in C:\wamp64\www\stoccaggio.php on line 27

    Ecco la nuova stesura completa di variabile "codice" aggiunta e parentesi tonde modificate in quadre :

    Codice PHP:
    /* dichiarazioni variabili */
    $codice $_POST['codice'];
    $descrizione $_POST['descrizione'];
    $data $_POST['data'];
    $ora $_POST['ora'];
    $pallet $_POST['pallet'];
    $bulk $_POST['bulk'];
    $unita $_POST['unita'];
    $locazione $_POST['locazione'];
    $operatore $_POST['operatore']; 
    Codice PHP:
    /* creazione statement */
    if ($stmt $mysqli->prepare("INSERT INTO deposito (Codice, Descrizione, Data, Ora, Pallet, Bulk, Unita, Locazione, Operatore) VALUES(?,?,?,?,?,?,?,?,?)")) {
    $stmt->bind_param["sssssssss"$codice$descrizione$data$ora$pallet$bulk$unita$locazione$operatore];
    $stmt->execute();
    $stmt -> close();
    }
    $mysqli -> close() 

    L'errore è sempre nella riga :

    Codice PHP:
    $stmt->bind_param["sssssssss"$codice$descrizione$data$ora$pallet$bulk$unita$locazione$operatore]; 
    Ultima modifica di KatAlive; 19-01-2020 a 12:42

  7. #7
    Utente di HTML.it L'avatar di KatAlive
    Registrato dal
    Jan 2020
    residenza
    Piacenza
    Messaggi
    10
    Vedo che la mia risposta non appare come ultimo messaggio della discussione, quindi temo che nessuno riesca a vedere che sono in attesa di una risposta, aggiungo queste due righe per vedere se compare qualcosina o se risulta sempre che l'ultimo mess è di Alhazred del 18/01

  8. #8
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    11,811
    Hai scritto
    $stmt->bind_param["sssssssss", $codice, $descrizione, $data, $ora, $pallet, $bulk, $unita, $locazione, $operatore]

    ci vanno le parentesi tonde non le quadre

  9. #9
    Utente di HTML.it L'avatar di KatAlive
    Registrato dal
    Jan 2020
    residenza
    Piacenza
    Messaggi
    10
    Ok, provo, perchè se non sbaglio mettendo le () mi dava un botto di errori sulle variabili, provo e quando torno da lavoro aggiorno, grazie mille.

  10. #10
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    11,811
    Beh, non è che puoi mettere parentesi tonde o quadre come ti fa comodo, ci sono delle regole, se il manuale dice che servono parantesi tonde, devi metterci le parentesi tonde.
    bind_param è un metodo, non è un array.

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2020 vBulletin Solutions, Inc. All rights reserved.