Visualizzazione risultati 1 fino 9 di 9
Like Tree3Likes
  • 1 Post By alemoppo
  • 2 Post By mzanella

Discussione: Database PHPMyAdmin, missione impossibile...

  1. #1
    L'avatar di emmeoennemon
    emmeoennemon non è connesso Neofita
    Data registrazione
    07-08-2016
    Messaggi
    12

    Predefinito Database PHPMyAdmin, missione impossibile...

    Spero di non aver sbagliato sezione...

    Avrei preferito evitare di scrivere qui, ma dopo molti tentivi, tutti così dannatamente simili tra loro ma tutti senza alcun riultato se non negativo, non ho potuto far altrimenti; ovviamente ho prima fatto ricerche su ricerche sia su google che in questo forum ma come detto non ho avuto alcun risultato quindi scusate se sono qui come l'ennesimo imbecille che non capisce come funzionano queste cose o chissà quale motivo arcano c'è .

    Avendo letto decine di topic sull'argomento evito altre parole inutili, in poche parole ho intenzione di creare minigiochi per un GDR di un forum, il problema non è nato sul come creare minigiochi, anzi, in 10 minuti ho trovato una soluzione su come fare ma ciò che in giorni non sono riuscito è sapere come memorizzare quando, chi (inserendo il nome prima di iniziare) e quanti punti ha fatto su un determinato minigioco, proprio per quel GDR; ho creato una tabella nel database di nome "database", con 4 elementi, "data_ora", text (all'inizio datatime ma pensando che fosse questo il problema...), "nome", text, "punti", integer, "extra", text... per capire come immettere dati nel database ho creato un form dove scrivere manualmente, insomma, come già detto l'ho preso da internet quindi immagino abbiate ben chiaro cosa intendo... ma ogni volta un errore diverso, non so se dipeso dal file php, "database.php", o la pagina creata per provare, "prova.html", entrambi i file cambiati molte volte; ma in verità a me serve che i dati vengano memorizzato come input dopo aver completato una partita o sessione di gioco, il problema non è come creare l'input ma come immettere i dati nel database.

    Ripeto, so che è stato chiesto da molti ma questo non è servito per risolvere il mio problema, sarà io che sbaglio qualcosa, non so, nonostante prenda pari pari i codici degli altri modificando solamente nome delle variabili e simili; abbiate quindi pazienza e grazie.

  2. #2
    L'avatar di alemoppo
    alemoppo è connesso ora Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,171

    Predefinito

    PhpMyAdmin serve soltanto per visualizzare il database. In realtà non ti è granché utile in quel che vuoi fare (se non per visualizzare le tabelle e il loro contenuto e vedere che tutto sta funzionando correttamente).

    Il linguaggio che si usa per interagire con il database è Mysql tramite delle query (INSERT, UPDATE, SELECT, ...).
    Qui su altervista, l'unico modo per interagire con il database (quindi tramite le query Mysql) è gestito con PHP.

    Ora php supporta 2 librerie per eseguire le query: Mysqli (vedi esempi qui) o PDO (vedi esempi qui). Se decidi di usarne uno devi continuare con quello e non mischiare i comandi (in realtà ci sarebbe anche la Mysql originale ma è sconsigliata perché obsoleta e non andrebbe più utilizzata).

    Mysqli c'è sia ad oggetti che procedurale. Invece PDO mi sembra ci sia soltanto ad oggetti.

    Passando al tuo problema, per poterti aiutare sarebbe utile vedere che tipo di errori ricevi ed il codice che stai usando (va bene prenderli online, però poi se li metti assieme c'è il rischio che non siano compatibili tra loro).

    Ciao!
    Ultima modifica di alemoppo : 04-10-2016 alle ore 19.38.45

  3. #3
    L'avatar di emmeoennemon
    emmeoennemon non è connesso Neofita
    Data registrazione
    07-08-2016
    Messaggi
    12

    Predefinito

    Certo, PhpMyAdmin serve solo per visualizzare non per modificare ma infatti a me interessa anche visualizzare, non ha senso creare un database che non voglio visualizzare, XD... ora posto i codici (spero funzioni come in altri forum e non combinare pasticci, XD)

    prova.html

    Codice:
    <!DOCTYPE html>
    <html>
    <head>
    
    <script>
    function invia()
    {
     $.ajax({
      url:"database.php",
      data: 
      {  
       data_ora: data_ora.value,
       nome: nome.value,	
       punti: punti.value,
       extra: extra.value
      } ,
      success: function(msg)
      {
       $("#risultato").html(msg);  
       alert("Aggiunto, grazie!");
      },
       error: function()
      {
       alert("Chiamata fallita, si prega di riprovare..."); 
      }
     });
    }
    </script>
    
    </head>
    <body>
    
    <form name="modulo" ACTION="http://emmeoennemon.altervista.org/database.php">
    
    <input id="data_ora" name="data_ora" class="form-control"  placeholder="data e ora" type="text" value="" size="100" maxlength="200" method="GET"> 
    <input id="nome" name="nome" class="form-control"  placeholder="nome" type="text" value="" size="100" maxlength="200" method="GET"> 
    <input id="punti" name="punti" class="form-control"  placeholder="punti" type="integer" value="" size="100" maxlength="200" method="GET"> 
    <input id="extra" name="extra" class="form-control"  placeholder="extra" type="text" value="" size="100" maxlength="200" method="GET"> 
    
    <br><br>
    <p align="center" > <button  class="btn btn-primary" onclick="invia()">Invia  Dati</button> </p>
    </form>
    
    </body>
    </html>
    database.php

    Codice:
    <?php
    
    $servername = "localhost";
    $username = "emmeoennemon";
    $password = "";
    $dbname = "my_emmeoennemon";
    
    // Create connection
    $conn = new mysqli($servername,$username, $password, $dbname);
    // Check connection
    if ($conn->connect_error)
    {
     die("Connection failed: " . $conn->connect_error);
    } 
    
    $data_ora = $_GET['data_ora'];
    $nome = $_GET['nome'];
    $punti = $_GET['punti'];
    $extra = $_GET['extra'];
    
    $query = "INSERT INTO database (data_ora, nome, punti, extra) VALUES ('$data_ora', '$nome', '$punti', '$extra')";
    
    if (mysqli_query ($conn, $query)) 
     echo ("Inserimento riuscito!"); 
    else 
     echo ("Errore nell'inserimento :-(".mysqli_error($conn)); 
      
    if (mysqli_query ($conn, $query1)) 
     echo ("Inserimento riuscito!"); 
    else 
     echo ("Errore nell'inserimento :-(".mysqli_error($conn));
    
    $conn->close();
    
    ?>
    Entrambi presi, poi adattati ai miei elementi, dallo stesso topic di questo forum; sia che apro direttamente database.php sia che riempa i textbox poi premo il pulsante in prova.html subito dopo mi esce...

    Codice:
    Errore nell'inserimento :-(You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'database (data_ora, nome, punti, extra) VALUES ('', '', '', '')' at line 1Errore nell'inserimento :-(You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'database (data_ora, nome, punti, extra) VALUES ('', '', '', '')' at line 1
    Eppure all'altra persona ha funzionato, ho solamente modificato ciò che è diverso nel mio database rispetto al suo.

  4. #4
    L'avatar di alemoppo
    alemoppo è connesso ora Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,171

    Predefinito

    non ha senso creare un database che non voglio visualizzare
    In realtà i database li leggi da PHP ricavando i dati che ti servono, spesso prima elaborati.


    Lato form, elimina pure la parte javascript. Ti scrivo la parte "essenziale":
    Codice HTML:
    <!DOCTYPE html>
    <html>
    	<head>
    		<title>titolo della pagina</title>
    	</head>
    	<body>
    		<form name="modulo" action="http://emmeoennemon.altervista.org/database.php" method="GET">
    			<input name="data_ora" placeholder="data e ora" type="text" value="" size="100" maxlength="200"> 
    			<input name="nome" placeholder="nome" type="text" value="" size="100" maxlength="200"> 
    			<input name="punti" placeholder="punti" type="integer" value="" size="100" maxlength="200"> 
    			<input name="extra" placeholder="extra" type="text" value="" size="100" maxlength="200"> 
    			<p style="text-align:center; margin-top: 40px;">
    				<button type="submit">Invia  Dati</button>
    			</p>
    		</form>
    	</body>
    </html>

    Il problema però sta nella parte PHP: hai utilizzato mysqli per la gestione del database. Ti sei connesso con la modalità ad oggetti ma le query le esegui con le funzioni procedurali.

    Invece della funzione mysqli_query() dovresti usare il metodo query, quindi una cosa del tipo:

    Codice PHP:
    if($conn->query($query))
    echo
    'Inserimento riuscito';
    else echo
    'Errore: '.$conn->error;
    Poi non ho capito perché esegui un'altra query ($query1) che non esiste.

    Prova a correggere questo e riprova.

    Ciao!
    Ultima modifica di alemoppo : 05-10-2016 alle ore 00.24.01
    mzanella likes this.

  5. #5
    L'avatar di emmeoennemon
    emmeoennemon non è connesso Neofita
    Data registrazione
    07-08-2016
    Messaggi
    12

    Predefinito

    Ehm... intendi il php così?

    Codice:
    <?php
    
    $servername = "localhost";
    $username = "emmeoennemon";
    $password = "";
    $dbname = "my_emmeoennemon";
    
    // Create connection
    $conn = new mysqli($servername,$username, $password, $dbname);
    // Check connection
    if ($conn->connect_error)
    {
     die("Connection failed: " . $conn->connect_error);
    } 
    
    $data_ora = $_GET['data_ora'];
    $nome = $_GET['nome'];
    $punti = $_GET['punti'];
    $extra = $_GET['extra'];
    
    $query = "INSERT INTO database (data_ora, nome, punti, extra) VALUES ('$data_ora', '$nome', '$punti', '$extra')";
    
    if($conn->query($query))
    echo 'Inserimento riuscito';
    else echo 'Errore: '.$conn->error;  
    
    $conn->close();
    
    ?>
    Perchè dopo aver compilato e premuto il pulsante esce:

    Codice:
    Errore: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'database (data_ora, nome, punti, extra) VALUES ('aaa', 'nome', '4433', 'prova')' at line 1

  6. #6
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    database e' una parola riservata per linguaggio SQL,, non puoi usarla come nome per una tabella, a meno che tu non la racchiuda tra backquotes nella query: "INSERT INTO `database`...".
    E` anche un nome un po' fuorviante: cio` che hai chiamato database non e` un database, ma una tabella.

    Di secondaria importanza: quando inserisci i punti non servono virgolette od apici, in quanto valori numerici. Anzi, usando gli apici li converti in stringa, e poi MySQL li deve riconvertire in valori numerici.
    alemoppo and vplaza like this.

  7. #7
    L'avatar di emmeoennemon
    emmeoennemon non è connesso Neofita
    Data registrazione
    07-08-2016
    Messaggi
    12

    Predefinito

    Ho modificato il nome della tabella in "db" per evitare ulteriori problemi, XD, alla fine funziona con tale codice PHP...

    Codice:
    <?php
    
    $servername = "localhost";
    $username = "emmeoennemon";
    $password = "";
    $dbname = "my_emmeoennemon";
    
    // Create connection
    $conn = new mysqli($servername,$username, $password, $dbname);
    // Check connection
    if ($conn->connect_error)
    {
     die("Connection failed: " . $conn->connect_error);
    } 
    
    $data_ora = $_GET[data_ora];
    $nome = $_GET[nome];
    $punti = $_GET[punti];
    $extra = $_GET[extra];
    
    $query = "INSERT INTO db (data_ora,nome,punti,extra) VALUES ('$data_ora','$nome','$punti','$extra')";
    
    if($conn->query($query))
    echo 'Inserimento riuscito';
    else echo 'Errore: '.$conn->error;  
    
    $conn->close();
    
    ?>
    Quindi grazie mille a tutti e due... il punto è che ho provato ad inviare i dati attraverso input diversi dal form e textbox ma senza risultato, XD, giusto per completare come potrei inviare i dati di variabili alla tabella del tabase grazie a questo codice PHP per esempio con input "onclick"? Spero non sia un problema

  8. #8
    L'avatar di alemoppo
    alemoppo è connesso ora Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,171

    Predefinito

    Non ho capito cosa vorresti fare: vuoi aggiungere altri input diversi da quelli che hai oppure cos'altro? Come mai ti serve l'evento onClick?

    In ogni caso, un esempio con l'evento onClick (uso addEventListener che è meglio):

    Codice HTML:
    <!DOCTYPE html>
    <html>
    	<head>
    		<title>titolo della pagina</title>
    	</head>
    	<body>
    		<form name="modulo" action="http://emmeoennemon.altervista.org/database.php" method="GET">
    			<input name="data_ora" placeholder="data e ora" type="text" value="" size="100" maxlength="200"> 
    			<input name="nome" placeholder="nome" type="text" value="" size="100" maxlength="200"> 
    			<input name="punti" placeholder="punti" type="integer" value="" size="100" maxlength="200"> 
    			<input name="extra" placeholder="extra" type="text" value="" size="100" maxlength="200"> 
    			<p style="text-align:center; margin-top: 40px;">
    				<button type="submit">Invia  Dati</button>
    			</p>
    		</form>
    		
    		<p id="scritta_magica">Cliccando questa scritta, il form verrà inviato grazie al sorgente sotto:</p>
    		<script type="text/javascript">
    		var scritta = document.getElementById('scritta_magica'); //prelevo il riferimento a <p> tramite il suo id che si chiama "scritta_magica"
    		scritta.addEventListener("click", function(){  //aggiungo l'evento "click"
    					/*  qui dentro il codice da eseguire quando viene cliccata la scritta  */
    					
    					var form = document.modulo; //prelevo il form, anche qui avresti potuto benissimo assegnare un id al form e prelevarlo con la getElementById, oppure con document.forms[0]
    					form.submit(); //invochiamo il suo metodo "submit"
    		}); 
    		</script>
    	</body>
    </html>
    p.s: tutto il codice javascript poteva esser scritto più brevemente così:
    Codice:
    <script type="text/javascript">
    	document.getElementById('scritta_magica').addEventListener("click", function(){
    		document.modulo.submit();
    	}); 
    </script>
    Ma scrivendotelo come ho fatto sopra credo sia più comprensibile se non conosci bene javascript.

    EDIT:
    Inoltre, invece di GET prova a passare i dati tramite POST: con POST non verranno passati tramite URL ma attraverso l'header della richiesta http.


    Ciao!
    Ultima modifica di alemoppo : 05-10-2016 alle ore 19.17.51

  9. #9
    L'avatar di emmeoennemon
    emmeoennemon non è connesso Neofita
    Data registrazione
    07-08-2016
    Messaggi
    12

    Predefinito

    Esattamente questo, dato che con "style=display:none" posso rendere il form invisibile (dato che non mi serve per quello che devo fare) ma grazie al codice da te postato posso comunque reagirci attraverso una funzione... beh, finalmente tutto risolto, grazie ancora, speriamo di non incontrare altri problemi, XD

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •