Pagina 2 di 3 PrimoPrimo 123 UltimoUltimo
Visualizzazione risultati 31 fino 60 di 61
Like Tree1Likes

Discussione: problema con la connessione mysqli

  1. #31
    Guest

    Predefinito

    Se i database contengono 100 o 10G dati, non credo che la struttura dovrebbe esserne influenzata.

    Ti rispondo su questo e sui css, il resto botta e risposta non mi piace farlo, i css e il colore li cambi con javascript, ma io voglio soffermarmi sul DB, forse non sei entrato nella mentalità, una ditta che ha 300 mila clienti secondo te permette all'utente che lavora in ditta di fare una ricerca e gli escono 300 mila righe di clienti? ma assolutamente no, le ricerche si fanno mirate, per sinonimi e comunque per limiti, ci sono dei limiti inseriti altrimenti la ricerca la fai per codice fiscale, quindi per essere performanti ci vuole anche una gestione mirata altrimenti non si performa una cippa, ricerchi per codice cliente un range etc..etc....
    Adesso fai conto di avere un progetto con 300 file php 300 file html e 300 file javascript, ovviamente qui parliamo di progetti di DATI non di cambiare il colore della scritta, la grafica se vedi nel mio sito la faccio a tempo libero con i frattali, i css li cambio nel tempo libero mai cambiato un css per lavoro, io per lavoro tocco PHP e JAVASCRIPT e gestione DB2(ma del DB2 che non me ne occupo io, io mi occupo del web quindi PHP), tu non puoi entrare nel sito della mia azienda, non hai autorizzazione, entri solo con computer aziendale capisci?Quindi la VERA gestione di dati non è la tabellina che fai su sql sono altre cose, mirate e precise.
    Adesso quando hai un sito di DATI E RIBADISCO DATI, cioè che ogni giorno ci sono nuovi clienti nuove funzionalità nuove direttive aziendali di gestione etc....come puoi unire HTML E PHP nella stessa pagina?diventa un bordello quando hai 50 mila funzionalità e tra l'altro come debugghi se fai injection del javascript nel php FIREBUG non te lo msotra o meglio te lo mostra ma devi fare $.getScript da firebug per includerlo nell'elenco è un bordello e quando hai 300 file php e 300000 mila funzioni javascript la cosa FONDAMENTALE e il DEBUG sapere in 5 minuti che funzione javascript chiama che php stai chiamando e dove entra nel codice...Per fare questo però il progetto deve essere ordinato, io mi incazzo con i miei colleghi perchè avevano preso l'abitudine di invocare le funzioni javascript nel file javascript con $.click, che per il debug è un bordello, tu hai un codice HTML un pulsante e non sai al click del pulsante che funzione chiami, valla a ricercare poi in 300 file javascript vai a fare la ricerca per ID in tutto il progetto, sai quanto ci metti??una marea di tempo, e non hai tempo, perchè l'utente in ditta se ha un errore tu glielo devi risolvere, quindi vedi la differenza tra un progettino dove puoi fare quello che vuoi mescoli tutto e invece un progetto grande e soprattutto devi gestirlo e mantenerlo in base alle richieste che cambiano nel tempo.
    I miei progetti sono tutti ordinati e con file divisi, il debug in 5 secondi sai in che file sei che funzione lato client chiami e che file lato server chiami...5 secondi...var_dump print_r e fai quello che vuoi, i bug fix altrimenti ci metteresti una vita...La mentalità Alemoppo l'ho cambiata con il tempo dovendo scontrarmi tutti i giorni a debuggare PHP, e tra l'altro PHP non è che abbia questi grandi IDE forse PHP storm ma non di certo a livelli di visual studio e PHP è un linguaggio puramente WEB, poco stand alone, e via web hai bisogno di sapere lato client e lato server hai bisogno di firebug e non puoi fare tutto in php non puoi intasare ad ogni comando il server, per questo io preferisco un model MVC(che non ho nel progetto di lavoro perchè è un progetto non nato in MVC, però è comunque strutturato in maniera comoda per debuggare)nel model ti interfacci con il DB punto non nel controller e tanto meno nella view.
    Ti assicuro che la divisione dei file molto importante, certo se ti serve un sito per metterci delle foto e fare un forum puoi farne a meno ma un sito di DATI NO.
    Il DB?Il db dal PHP gestisci i risultati la la select non la fai dal PHP, mai fatta una select diretta dal PHP tu invochi una stored procedure il DB2 gestisce e ti restituisce dati o errori....è un livello avanzato se non ci sei dentro tutti i giorni forse non è così immediato da capire...Ciao
    Ultima modifica di fractalcosmo : 02-09-2015 alle ore 01.01.00

  2. #32
    Guest

    Predefinito

    Ciao alemoppo e ciao fractalcosmo,


    Non volevo far nascere una comparazione o peggio ancora una discussione fra voi due. Inoltre credo che staimo andando leggermente fuori te,ma (non voglio fare il moderatore delle discussioni). Spiego una cosa a tutte e due così vi chiarisco meglio le idee e soprattutto le mie complicazioni a capire e a percepire. Il punto è il seguente. Sono nato nel 72 e all'epoca non esistevano nemmeno i pc e tanto meno i televisori. I primi pc se ne sono visti se non erro negli anni 90 ma non casalinghi ma quelli che occupavano stanze intere della ibm. poi sono usciti spectrum e commodore 64 e con quelli si faceva solo giochi o programmazione basic. Premetto anche che all'epoca non esisteva internet. Tutto questo per farvi capire come sono cresciuto rispetto a voi. Premesso questo c'è da dire anche un'altra cosa e qui non voglio fare del vittimismo anzi è solo per chiarire di più la mia situazione. Sono stato perato ben 25 volte a cuore aperto di cui 6 a cuore aperto, ho un defibrillatore epatite "C" e psoriasi. Inoltre prendo 6 diuretici al giorno e altrettanto di medicine. Due settimane fa sono stato ricoverato di urgenza all'ospedale Gemelli di Roma (partendo da anzio di corsa) perchè è subentrata alle 5 del mattino una tachicardia atriale di 150 battiti al sec. e il defibrillatore che dovrebbe salvarti la vita non è scattato perchè è settato per battiti più alti di 150. Tutto questo discorso vi chiederete che centra ??? Bene ecco la risposta prendendo diversi medicinali la mente ogni tanto ogni spesso si ofusca e fa fatica a perceprire ciò che uno legge. Ritornando a bomba, ringrazio dell'interessamento di entrambi e inoltre avete ragione entrami sia alemoppo dicendo che avere la pappa pronta molto spesso non impari nienete (ma vedi soprai vari motivi che ho descritto ) e sia fractalcosmoche che si è dato da fare a spieragmi tutto e a modificare il mio codice. detto questo vorrei che entarmi non vi odiaste o non vi paragonaste tra di voi perchè finirebbe con una discussione inutile e senza aver raggiunto il proprio scopo. Poi secondo me ognuno ha la sua tecnica di programmazione gisto o sbagliata che sia l'ìmportante è il risultato finale. Con questo spero che non ve la prendiate come offesa perchè non avevo nessuna intenzione di offendere nessuno anzi solo di chiarire alcuni fatti a mio avviso importanti. Grazie comunque ad entrambi.

  3. #33
    Guest

    Predefinito

    ragazzi ho capito dove sta lo sbaglio. Non mi accetta le lettere accentate. Ho messo dei numeri e ha memorizzato quello che ho scritto ho messo una serie di "èèèèèèè" e poi "che c'è" non me le ha accettate e mi da l'errore. Come risolvere una volta per tutte queste lettere ????

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

    Predefinito

    Capisco, mi dispiace.

    È vero, siamo andati un po' OT. Me ne sono accorto ieri ma penso che ne valga la pena per discussioni più o meno costruttive, specialmente in questo caso dove si scontrano (incontrano?) punti di vista differenti.
    Il forum è un posto per imparare. Penso che più dell'80% di cose che so (e che ho dimenticato) le ho imparate qui in questo forum. Senza scambi di opinioni si rischia di rimanere nella propria strada senza vedere altri problemi/punti di vista. Io la trovo una cosa bella, non so perché voi ci vedete astio e competizione; forse è il mio modo di esprimermi o forse il suo o di entrambi che rende questa idea.

    Il discorso di fractalcosmo è condivisibile, anzi approvo: mi è capitato di recente di fare un sito e la logica (PHP) non si trova nel file dedicato all'html. Però il file html è comunque PHP per poterci scrivere dinamicamente i contenuti; non capisco come fare in un file PHP se non usando soltanto javascript+ajax (discorso già affrontato e conosciamo entrambi i nostri differenti punti di vista).

    Tornando invece IT io son ancora lì sulla documentazione. Provo a spiegarti le cose fondamentali poi vedi tu/dimmi tu dove trovi difficoltà: prendiamo come riferimento mysqli_query().

    Tralasciando la versione ad oggetti (Object oriented style), soffermiamoci sulla procedurale (Procedural style):

    Una delle principali cose da guardare è il prototipo della funzione:
    mixed mysqli_query ( mysqli $link , string $query [, int $resultmode = MYSQLI_STORE_RESULT ] )
    Da questa riga si capisce:

    • mixed: Questo è il tipo del dato ritornato dalla funzione. Quando fai
      Codice PHP:
      $variabile=funzione();
      il tipo di dati in $variabile corrisponde a quello che ritorna la funzione. Mixed significa che in realtà non è un tipo specifico, ma può essere un numero, una stringa, un array: nella nostra funzione presa in esame, guardando più sotto viene spiegato più in dettaglio cosa ritorna la funzione (Return Values):
      Returns FALSE on failure. For successful SELECT, SHOW, DESCRIBE or EXPLAIN queries mysqli_query() will return a mysqli_result object. For other successful queries mysqli_query() will return TRUE.
      Quindi ritorna FALSE se la query fallisce. Per query di tipo SELECT, SHOW, DESCRIBE e EXPLAIN ritorna un oggetto mysqli_result dove, cliccandoci, puoi vedere tutte le funzioni che puoi utilizzare (in realtà vengono indicati le proprietà e i metodi utilizzati per la programmazione ad oggetti, ma cliccando in ogniuno specifico viene indicata anche la rispettiva procedurale). La funzione altrimenti ritorna TRUE per le altre query (INSERT, DELETE, ...) se effettuate con successo. Infatti nel tuo codice vai proprio a vedere se ritorna TRUE o FALSE:
      Codice PHP:
      if($result)
      [...]
    • mysqli_query questo è il nome della funzione. Non credo ci sia da dir molto.
    • Dentro le parentesi tonde, il primo parametro è mysqli $link: questo indica che il parametro deve essere di tipo mysqli. Stesso discorso di prima: anche qui puoi cliccarci e vedere tutti i metodi/proprietà e le rispettive funzioni in procedurale come spiegato sopra. Dal nome $link si capisce (o almeno si dovrebbe capire) che si tratta della connessione del database; nel tuo caso $con. Infatti se guardi, $con l'hai generata grazie alla mysqli_connect() che come vedi ritorna proprio un dato di tipo mysqli.
    • Il secondo parametro è string $query. Penso ci sia ben poco da spiegare qui: il tipo deve essere una stringa e i già il nome del parametro fa intendere bene cosa si aspetta la funzione.
    • L'ultimo parametro [, int $resultmode = MYSQLI_STORE_RESULT ] indica che si aspetta un intero (int). Il fatto che sia tra parentesi quadre significa che è opzionale, ovvero puoi non specificarlo. Se non viene specificato di default viene passato il valore MYSQLI_STORE_RESULT. Direi per ora di non soffermarci sul significato di questa cosa.


    Tutto questo discorso in realtà è fatto già dalla documentazione, nella voce "Parameters". In inglese, ma è spiegato chiaramente credo anche per chi non è molto ferrato in quella lingua.
    Più sotto ci sono gli esempi. Prima quello ad oggetti poi il procedurale. L'esempio è la botta finale che dovrebbe chiarire ogni dubbio. È praticamente il codice che ti ha scritto fractalcosmo (ok, non proprio identico ma rende bene l'idea di come usar la funzione):
    Codice PHP:
    <?php
    $link
    = mysqli_connect("localhost", "my_user", "my_password", "world");

    /* check connection */
    if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
    }

    /* Create table doesn't return a resultset */
    if (mysqli_query($link, "CREATE TEMPORARY TABLE myCity LIKE City") === TRUE) {
    printf("Table myCity successfully created.\n");
    }

    /* Select queries return a resultset */
    if ($result = mysqli_query($link, "SELECT Name FROM City LIMIT 10")) {
    printf("Select returned %d rows.\n", mysqli_num_rows($result));

    /* free result set */
    mysqli_free_result($result);
    }

    /* If we have to retrieve large amount of data we use MYSQLI_USE_RESULT */
    if ($result = mysqli_query($link, "SELECT * FROM City", MYSQLI_USE_RESULT)) {

    /* Note, that we can't execute any functions which interact with the
    server until result set was closed. All calls will return an
    'out of sync' error */
    if (!mysqli_query($link, "SET @a:='this will not work'")) {
    printf("Error: %s\n", mysqli_error($link));
    }
    mysqli_free_result($result);
    }

    mysqli_close($link);
    ?>
    Ora, qual è il problema che incontri? Dove trovi difficoltà?

    EDIT:
    Ho visto solo adesso il problema del charset.
    Non mi piace troppo il fatto di convertire i vari charset. Dovresti cercare di usarne uno e usar sempre quello senza mai modificarlo.

    I dati "in arrivo" sono codificati con la codifica della pagina HTML, quindi direi UTF-8. Un modo più elegante del "<meta charset>" per impostare il charset è impostarlo nell'header della richiesta, ovvero:
    Codice PHP:
    header('Content-Type: text/html; charset=utf-8');
    Per il database, dovrebbe essere sufficiente quanto ti ho scritto nella risposta in questa discussione.
    L'esempio di riferimento del manuale per la funzione mysqli_set_charset() è:
    Codice PHP:
    <?php
    $link
    = mysqli_connect('localhost', 'my_user', 'my_password', 'test');

    /* check connection */
    if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
    }

    printf("Initial character set: %s\n", mysqli_character_set_name($link));

    /* change character set to utf8 */
    if (!mysqli_set_charset($link, "utf8")) {
    printf("Error loading character set utf8: %s\n", mysqli_error($link));
    exit();
    } else {
    printf("Current character set: %s\n", mysqli_character_set_name($link));
    }

    mysqli_close($link);
    ?>
    Usa addirittura utf8!
    ----------
    Hai detto che hai fatto la prova con "che c'è". In questo caso non si tratta soltanto di charset. Hai usato un apice singolo e questo per farlo funzionare occorre effettuare l'escape.
    Codice PHP:
    $nome = trim($_POST['nome']);
    $cognome = trim($_POST['cognome']);
    Oltre a trim(), andrebbe usata quindi la mysqli_real_escape_string() per risolvere il problema.
    Codice PHP:
    $nome = mysqli_real_escape_string($con, trim($_POST['nome']));
    $cognome = mysqli_real_escape_string($con, trim($_POST['cognome']));
    Ciao!
    Ultima modifica di alemoppo : 02-09-2015 alle ore 14.18.22

  5. #35
    Guest

    Predefinito

    Ciao alemoppo,

    Grazie di avermi risposto. Spero che tu abbia letto anche quello che ho passato è molto importante se no non l'avrei citato. oggi pomeriggio faccio la prova e poi ti saprò dire il risultato. Ovviamente non volevo fare il supervisore quando ho puntualizzato che stavamo andando out, anzi perdonami.

  6. #36
    Guest

    Predefinito

    Io dal PHP faccio quello che voglio, si può inserire codice javascript e codice html senza nessun problema, l'html è creato dal PHP vuoi sapere come creo io i template html o .tpl come estensione? così


    Codice PHP:

    //instanzio una classe template creata ad Hoc e definisco il percorso e nome del file
    $html = new Tpl("template/mioTemplate.tpl");

    //imposto tutte le variabili da passare al template, nel template la variabileNelHtml sarà ripresa con questa dicitura {variabileNelHtml}
    //ed assumerà il valore $miaVariabile....stessa cosa per la variabile 2 e così via con la valorizzazione dell'array definito nel metodo
    //SetTplVar
    $html -> setTplVar(array("variabileNelHtml" => $miaVariabile,
    "variabileNelHtml2" => $miaVariabile2
    ));
    //procedo il template cioè in processTpl è impostato il ciclo foreach variabile as key=>value imposto il valore che passo nell'output
    $html -> processTpl();
    //stampo il template
    $html -> printTpl();
    Come vedi l'html è creato dal PHP di conseguenza i javascript, tutto è letto dal PHP, alcune funzionalità potrebbero richiedere del javascript dentro il php e non il file html, per esempio l'auto-inserimento di un determinato valore in un input text ma basta aprire uno script in php e fare echo script.Ed è tutto molto dinamico e i file sono divisi.

    Per l'esempio di Fabio, io ieri sera ho provato a salvare non credo sia un problema di charset ma è una osa interna al PHPMyAdmin se il DB ed i campi della tabella sono tutti in UTF8 ed il PHP di base è UTF8 non si capisce perchè convertire in ISO, comunque ieri ho provato a salvare gli accenti e a me li salvava...Adesso scappo ciauuu

  7. #37
    Guest

    Predefinito

    Quindi se ho capito bene l'ultima cosa che mi hai detto si caratteri è aprire nel body i tag header e metterci:


    detto na kazzata scusate va dentro il php :P





    $nome = trim($_POST['nome']);
    $cognome = trim($_POST['cognome']);

    diventerebbe:



    $nome = mysqli_real_escape_string($_POST['nome']);
    $cognome = mysqli_real_escape_string($_POST['cognome']);
    Ho capito male ?????
    Ultima modifica di fabiodefe : 02-09-2015 alle ore 15.01.52

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

    Predefinito

    Citazione Originalmente inviato da fabiodefe Visualizza messaggio
    Ho capito male ?????
    Hai capito bene. Però puoi lasciare anche trim() per eliminare richieste di caratteri speciali come degli spazi che farebbero riconoscere i parametri come "non vuoti".

    Nota che con mysqli_real_escape_string() risolvi il problema degli apostrofi, ma non del charset. Per il charset prova con header() e soprattutto mysqli_set_charset() lato database.

    Ciao!

  9. #39
    Guest

    Predefinito

    Ok ci riproverò. Nell'ultimo tentativo ho messo come input i seguenti nominativi:

    Nome: che kazzo c'è
    Cognome: che c'é

    Scusa il nome ma mi serviva come prova e mi ha dato errore dj cui non ricordo. Il char set va settato anche nel file di connessione al db ???? Ho è solo nella pagina principale ????

  10. #40
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,686

    Predefinito

    Citazione Originalmente inviato da fabiodefe Visualizza messaggio
    Il char set va settato anche nel file di connessione al db ???? Ho è solo nella pagina principale ????
    Prova a impostarlo solo nel file di connessione. Comunque fai delle prove, vedi tu! :)

    Ciao!

  11. #41
    Guest

    Predefinito

    Ciao alemoppo,

    Ho fatto delle prove. E mi da il seuente risultato.


    Ti sei connesso al db. complimenti !!! Nome db: accentate

    Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in C:\xampp\htdocs\Archdvd2\provacharset.php on line 35

    Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in C:\xampp\htdocs\Archdvd2\provacharset.php on line 36
    Nome e cognome devono essere valorizzati

  12. #42
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,686

    Predefinito

    Hai ragione, non avevo analizzato bene il tuo codice. Usa quello che ti ho scritto io sopra:
    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Codice PHP:
    $nome = mysqli_real_escape_string($con, trim($_POST['nome']));
    $cognome = mysqli_real_escape_string($con, trim($_POST['cognome']));
    Comunque dall'errore avresti potuto capire cosa non andava:
    expects exactly 2 parameters, 1 given
    : la mysqli_real_escape_string() si aspetta 2 parametri, e ne hai passato soltanto uno!

    Ciao!

  13. #43
    Guest

    Predefinito

    Ciao alemoppo e ciao fractalcosmo,

    Finalmente sono riusciti ad avere grazie a voi una coclusione finale. Il tuo suggerimento (alemoppo) ha funzionato a dovere ed ora nel db riesco a leggere i caratteri accentati e apostrofati. Ho cambiato solo anzicchè adoperare ut-8_bin ho messo ISO-8859-1 abbiamo partorito. Spero solo che nell'interrogazione del db non abbia problemi. Penso che a questo punto la discussione si possa chiudere. Per fractalcosmo due cose ti ringrazio di avermi sistemato il codice funziona alla grande. Ti volevo fare i complimenti per il sito che hai fatto. Esiste una versione x stampare la discussione ??? Me la volevo conservare. Grazie.

  14. #44
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,686

    Predefinito

    Citazione Originalmente inviato da fabiodefe Visualizza messaggio
    Esiste una versione x stampare la discussione ??? Me la volevo conservare. Grazie.
    In alto, "strumenti discussione" -> "visualizza versione stampabile"

    Ciao!

  15. #45
    Guest

    Predefinito

    Volevo sapere una ma i trattini "_" e "-" sono sempre caratteri speciali ????

  16. #46
    Guest

    Predefinito

    Ciao Fabio,
    Sono contento che hai risolto, per qualsiasi cosa se hai bisogno scrivi pure qui io tempo permettendo una mano la do volentieri, grazie dei complimenti per il progettino palestra.

    Ps:Si sono caratteri speciali.

  17. #47
    Guest

    Predefinito

    Perchè non me le ha codificate come si deve e poi c'è un altro carattere che non sono riuscito a capire a cosa corrisponde devo vedee sul dvd domani ci daró un'occhiata meglio e ti saprò dire a cosa corrisponde. Grazie ancora davvero. Mi spiace che vi siate messi in competizione ma non volevo assolutamente. Spero che anche tu hai letto quello che ho avuto. Credimi è importante per capire perchè ho difficoltà nella programmazione e non solo ma nella vita quotidiana.

  18. #48
    Guest

    Predefinito

    Si ho letto e spero che ti rimetterai e starai più sereno, ma si competizione per modo di dire perchè siamo due testoni, ma non c'è nessun problema alla fine...Per il codice io sto provando con quella piccola modifica che ti ho mandato anche a te e a me sia sul db che ho online che quello in locale mi salva bene tutti i caratteri, cerca solamente di capire la logica poi la metti in atto quando ti serve.
    Buh se vado in xampp dal phpMyAdmin tabelle-->information schema->schemata il default charset del mio db del weblog è UTF8 Ahahahah se faccio charset set name del webLog mi printa latin 1 ahahahahaha....ma vallo a capire, va behh basta saperlo e poi uno si adegua...Lui prende il default charset ma non del database ma di mysql infatti nello xampp mysql è latin1 il default charset della connessione del database quindi quando tu invii dal PHP anche se il database è settato in UTF8 non c'entra una cippa quello che conta è come è connesso mysql....Svelato l'arcano, si può fare anche un update da quella tabella del phpMyAdmin ma io lascio tutto così.

    Ciao ;)
    Ultima modifica di fractalcosmo : 02-09-2015 alle ore 23.15.36

  19. #49
    Guest

    Predefinito

    Ciao
    fractalcosmo,

    Farò altri tentativi sul mio phpmyadmin rifiuta utf-8 e mette ut4mb o qualcosa del genere ora non ricordo. Purtroppo la parola "rimettono presti presto"nel mio vocabolario non esiste. Anzi la cosa peggiore è che vado a peggiorare con il tempo. La cosa migliore è che rimanga stazionaria ma non so per quanto tempo. Comunque sia ringrazio kl Signore ogni giorno per avermi dato la possibilità di aver passato una gornata tranquilla. Basta e avanza x per me. Grazie ancora dell'aiuto da parte di entrambi.

  20. #50
    Guest

    Predefinito

    No ma secondo me tu cerchi di cambiare dalla schermata principale e li non lo cambi, prova ad aprire PhpMyAdmin da xampp ok a sinistra hai dei database cerca information schema(che nel phpMyAdmin online non c'è per questioni di sicurezza) ok apri quel database (Information Schema ) scendi fino a schemata e clicca su SCHEMATA adesso ti si apre la tabella con i campi valorizzati CATALOG_NAME SCHEMA_NAME DEFAULT_CHARSET_SET_NAME ETC...con i database ed i default charset...il set name che poi sarebbe come codifica nell'invio del PHP secondo me, ma sinceramente non uso molto PhpMyAdmin ma da quello che vedo dovrebbe essere proprio mysql...Io nel phpMyAdmin di xampp ho mysql in LATIN1 quando tu chiami la funzione che ti ha messo Alemoppo che ti dice il default charset secondo me è riferito proprio a mysql anche leggendo un pò online dovrebbe essere riferito proprio a quello, quando invii dal PHP al PhpMyAdmin quello che conta è quel charset....Sicuramente anche tu quello ce l'hai a LATIN1 ed è impostato così anche online...Però PHP, inteso linguaggio PHP di default è UTF8 almeno dal 5.6.
    Ciao

  21. #51
    Guest

    Predefinito

    Ok domani proverò. Per il momento vi auguro una buona notte a domani.

  22. #52
    Guest

    Predefinito problema con la connessione mysqli

    Sono di nuovo il rompipalle,


    Allora ho provato ufficialmente nella mia pagina per tutto il casino che ho fatto per farmi aiutare sui caratteri. Il risultato è stato disastroso e mi compare un errore di cui non capisco cosa sia. Questao è lo screenshots con i campi compilati:



    http://s17.postimg.org/ljamkvlin/memorizzadvd.png


    E questo è il file completo che si chiama aggiungi.php

    N.B.: L'ho fatto con il vecchio sistema e non con mysqli in quanto avevo già iniziato a farlo.


    aggiungi.php

    Codice PHP:


    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">

    <title></title>
    </head>
    <body>

    <form action= '' method="POST">

    <!--<meta http-equiv="Content-Type" content="text/html;charset=UTf8_bin"> -->

    <meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1">

    Titolo dvd: <input type="text" name="titolodvd">

    <p> <p>

    <!--Contenuto: <textarea name="contenuto" rows="5" cols="40">-->

    <?php

    require_once "connettixampp2.php";

    header('Content-Type: text/html; charset=iso-8859-1');

    function
    listafiles($directory='')
    {

    set_time_limit(50);

    foreach(
    glob($directory.'*.*') as $file) //elenco tutti i file della directory
    echo $file.PHP_EOL;

    foreach(
    glob($directory.'*', GLOB_ONLYDIR | GLOB_MARK) as $cartella) //per ogni cartella di $directory, richiamo la funzione passando la cartella
    if($cartella != './' && $cartella != '../') //non teniamo conto di ./ altrimenti va in loop infinito, e ../ altrimenti torna anche indietro!
    listafiles($cartella);

    }
    ?>
    Contenuto: <textarea name="contenuto" rows="5" cols="40">

    <?php
    listafiles
    ('e:\\');//la tua directory iniziale
    echo "</textarea>";

    if(!empty(
    $_POST)){

    $titolodvd = trim($_POST['titolodvd']);
    $contenuto = trim($_POST['contenuto']);

    header('Content-Type: text/html; charset=iso-8859-1');


    $query=("INSERT INTO arcdvd2 (titolodvd, contenuto) VALUES('$titolodvd','$contenuto')");
    $result=@mysql_query($query) or die("Error query DataBase:".mysql_error());

    if(
    $result){
    echo(
    "<p> Inserimento avvenuto correttamente </p>");
    } else{
    echo(
    "<p>Inserimento non eseguito </p>");
    }
    }

    ?>

    <div align ="center">
    <p> <p>
    <input type="submit" value="Invia" name="memo">
    </p> </p>
    </p></p>
    </div>
    </form>
    </body>
    </html>

    perchè ora non mi funziona dopo che avete faticato ad aiutarmi e ho trovato pace con i caratteri ???? Spero che mi possiate aiutare di nuov. Grazie.

  23. #53
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,686

    Predefinito

    • la header() puoi usarla soltanto PRIMA di qualsiasi output html. Quindi prima dell'html metti <?php header(.....); ?>
    • Codice PHP:
      $titolodvd = trim($_POST['titolodvd']);
      $contenuto = trim($_POST['contenuto']);
      Mettici anche la mysql_real_escape_string() un po' come ti scrissi qua. Occhio che mysql_real_escape_string() (ovvero quella delle vecchie librerie mysql) ha soltanto un parametro, quindi va in questo modo:
      Codice PHP:
      $titolodvd = mysql_real_escape_string(trim($_POST['titolodvd']));
      $contenuto = mysql_real_escape_string(trim($_POST['contenuto']));


    Ciao!
    Ultima modifica di alemoppo : 03-09-2015 alle ore 21.16.13

  24. #54
    alexkzeta non è connesso Neofita
    Data registrazione
    04-12-2017
    Messaggi
    5

    Predefinito

    Ho lo stesso identico problema di fabiodefe eppure il mio codice è esatto, è preso da un professore di informatica e nel mio pc in locale funziona. Perche mi dice che non trova il database? Vi posto il codice della elogin.php che elabora la form html richiamata su un altro file diverso da questo :
    Codice PHP:
    <?php

    session_start
    ();

    $nl="<br />";

    //recupero credenziali da file ESTERNO alla cartella pubblica del sito
    $accessdata=parse_ini_file('cdb.ini');

    //prima di tutto un po' di sicurezza ...
    if($_SERVER['REQUEST_METHOD'] == 'POST'){
    //ok la pagina è stata davvero richiamata dalla form

    //recupero il contenuto della textbox email
    $email = $_POST['email'];

    //... e quello della textbox password
    $psw = $_POST['password'];


    //quale bottone è stato premuto, 'accedi' o 'nuovo utente'?
    if (isset($_POST['bottaccedi'])){


    //1 stabilire una (o più) connessione/i con un server
    //NB: con @ si sopprimono i warning/errori del comando
    /* $conn = @mysqli_connect($accessData['host'], $accessData['username'],
    $accessData['password']); */

    $conn = mysqli_connect($accessData['host'], $accessData['user'],
    $accessData['pass']);

    if(!
    $conn){
    //gestione dell'errore

    //echo mysqli_connect_errno() . $nl;
    //echo mysqli_connect_error() . $nl;
    //echo mysqli_sqlstate( $conn ) . $nl;
    echo "Connessione al server fallita. Impossibile procedere. Contattare ...";
    die;}


    //2 selezionare il db con cui lavorare
    if(mysqli_select_db($conn, $accessData['name'])){

    /* $comandoSQL = array("email" => "select id, psw from users where email ='" . $email) ."'"."psw" => "select id, psw from users where psw ='" . $psw) ."'"; */

    $comandoSQL = "select id, psw from utenti where email ='" .
    mysqli_escape_string($conn, $email) ."'";

    //echo "Comando: ".$comandoSQL.$nl;

    //2 inviare il comando
    $risultato = mysqli_query($conn, $comandoSQL);

    if(
    $risultato){ //la mail e' stata trovata

    //3 elaborare il risultato
    if ($riga = mysqli_fetch_assoc($risultato)){ //confrontiamo psw

    //echo "Trovata".$nl;
    $autenticato = ($psw === $riga['psw']);}
    else
    $autenticato = false;

    //4 chiudere la/le connessione/i
    mysqli_close($conn);

    //redirect
    if($autenticato){

    $_SESSION['id']=$riga['id'];
    header("Location: main.php");}

    else
    header("Location: index.php");}

    else{
    //fallita mysqli_query

    echo "Problemi con il server data base ...".$nl;
    echo
    mysqli_sqlstate($conn) . $nl;
    echo
    mysqli_errno($conn) . $nl;
    echo
    mysqli_error($conn) . $nl;
    die;}}

    else{
    //fallita mysqli_select_db ...

    echo "Non trovo il data base ...".$nl;
    echo
    mysqli_sqlstate( $conn ) . $nl;
    echo
    mysqli_errno( $conn ) . $nl;
    echo
    mysqli_error( $conn ) . $nl;
    die;}}
    else{
    //echo "Hai premuto NUOVO UTENTE";
    }}


    ?>
    Ultima modifica di alemoppo : 18-12-2017 alle ore 13.37.10 Motivo: +tag [php]

  25. #55
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,896

    Predefinito

    Altervista concede un unico database my_alexkzeta questo è il default e unico su altervista
    http://php.net/manual/en/mysqli.select-db.php questo deve essere utilizzato per modificare il database predefinito è possibile selezionare il database predifinoto con il 4 parametro di mysqli_connect
    Faq MySQL altervista
    Ultima modifica di darbula : 16-12-2017 alle ore 13.43.12

  26. #56
    alexkzeta non è connesso Neofita
    Data registrazione
    04-12-2017
    Messaggi
    5

    Predefinito

    Risolto. Il problema era la password, come un deficente nel name della form avevo messo name="psw" e poi nel file dell elaborazione php avevo messo $psw=$_SERVER['password']; mi è bastato quindi aprire la form html e cambiare name="psw" in name="password". Grazie lo stesso per la risposta AlterGuru. Buona domenica A Tutti. :)
    Ultima modifica di alexkzeta : 17-12-2017 alle ore 16.13.33

  27. #57
    alexkzeta non è connesso Neofita
    Data registrazione
    04-12-2017
    Messaggi
    5

    Predefinito

    Mi trovo ora invece sempre qui con un altro problema. Sto cercando di creare il bottone per la registrazione al nuovo utente php ma sono alle prese piu con la sintassi di mysql che con quella php, vi spiego :

    Praticamente quando vado a inserire il codice mysql nella tabella utenti creata nel db, sfruttando la funzione mysql_query di php, mi crea soltanto l id = 1 nel campo id, mentre in quello email e psw non inserisce nulla.
    Poi dipende dalle sintassi che uso, se uso la sintassi di sql-client :
    Codice:
    INSERT INTO utenti (id, email, psw) VALUES (1, '$email', '$psw');
    non aggiunge nemmeno l' id, mentre se invece uso la sintassi di sql-server :
    Codice:
    INSERT INTO `$name`.`utenti` (`id`, `email`, `psw`) VALUES ('1', '$email', '$psw');";
    Allora sta volta aggiunge soltanto id=1 alla tabella utenti del mio database, mentre ancora se provo a crittare in md5 :
    Codice:
    INSERT INTO `$name`.`utenti` (`id`, `email`, `psw`) VALUES ('1', MD5('$email'), MD5('$psw'));
    Aggiunge id=1, email e password in hash md5 avente entrambi lo stesso e identico valore di stringa; quello della password, esempio :

    id=1, email=d7t6lmn292kjaq62o47m, psw=d7t6lmn292kjaq62o47m

    Addirittura ho provato anche con la funzione mysqli_query come consigliava qualcuno di voi nella ex discussione precedente che ha fatto nascere poi questa e con quella funzione non inserisce nessun record in nessun campo dei 3 appena citati. Qualcuno di voi saprebbe dirmi da che potrebbe essere dovuto? Da phpmyadmin di altervista? Oppure dove potrei sbagliare? Come posso risolvere? Grazie mille per l' aiuto.
    Ultima modifica di alexkzeta : 19-12-2017 alle ore 05.39.11 Motivo: +tag

  28. #58
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,896

    Predefinito

    Devi postare il codice privo di dati sensibili, fai con calma :) (html più MySQL alleggerisci la pagina dallo stile, JavaScript se ti serve solo aiuto per il codice php)..
    Come racchiudere il codice sul forum cioè racchiuso da due tag [PHP]
    Codice PHP:
    //Codice
    [/PHP] o html o code dentro le parentesi quadre , il tag di chiusura inizia sempre "[/"
    Ultima modifica di darbula : 18-12-2017 alle ore 11.45.20

  29. #59
    alexkzeta non è connesso Neofita
    Data registrazione
    04-12-2017
    Messaggi
    5

    Predefinito

    In realta ho provato 2 tipi di script con codici diversi e su altervista che ad eccezione del mio ambiente locale nel quale funzionano, non funziona nessuno dei 2 script; uno è quello creato da me, prendendo spunto dal codice originale del prof da cui sto imparando a farlo, riportato a modo mio che potrebbe avere al suo interno sintassi di codice errate in quanto sono ancora un novellino e non un esperto. Ed è il codice di registrazione nello script chiamato appunto registrazione.php, l' altro è sempre lo stesso codice del prof di informatica postato all' inizio, solo che il prof vi ha aggiunto anche il codice del bottone di registrazione nuovo utente e quindi login e registrazione mischiate nello stesso script e non dovrebbe dare problemi in quanto è scritta da un professore. Vi posto intanto il mio registrazione.php :

    Codice PHP:
    <?php

    $nl
    ="<br />";

    //SESSIONE ID
    session_start();
    $ip=$_SERVER['REMOTE_ADDR'];

    //EOF

    //FILE
    $accessData=parse_ini_file('c/d/cdb.ini');
    $name=$accessData['name'];

    //EOF


    //CONTROLLO EMAIL E PASSWORD REQUEST METHOD POST DELLA FORM
    if($_SERVER['REQUEST_METHOD'] == 'POST'){ //DURA PER TUTTO IL CORPO DELLO SCRIPT registrazione.php
    $email = $_POST['email'];
    $psw = $_POST['password'];
    if(isset(
    $_POST['bottregistrati'])){ //RACCHIUDE SOLO LA PARTE DEL BOTTONE
    //$_POST['bottaccedi'] DELLA FORM

    //EOF


    //CONNESSIONE DATABASE
    $conn = mysql_connect($accessData['host'], $accessData['user'],
    $accessData['pass']);

    //GESTIONE DEGLI ERRORI
    if(!$conn){
    //echo mysqli_connect_errno() . $nl;
    //echo mysqli_connect_error() . $nl;
    //echo mysqli_sqlstate( $conn ) . $nl;
    echo "Connessione al server fallita. Impossibile procedere. Contattare ...";
    die;}

    //CONTROLLO E SELEZIONE DATABASE
    if(mysql_select_db($conn, $accessData['name'])){

    $comandoSQL = "select id, psw from utenti where email ='" .
    mysqli_escape_string($conn, $email) ."'";

    //2 inviare il comando
    $risultato = mysql_query($conn, $comandoSQL);

    if(
    $risultato){ //la mail e' stata trovata

    //3 elaborare il risultato
    if ($riga = mysql_fetch_assoc($risultato)){ //confrontiamo psw

    //echo "Trovata".$nl;
    $autenticato = ($psw === $riga['psw']);}
    else
    $autenticato = false;

    //redirect
    if($autenticato){

    $_SESSION['id']=$riga['id'];
    header("Location: menu/main.php");
    exit;}

    else{
    header("Location: index.php");
    exit;}}


    else{
    //fallita mysqli_query

    echo "Problemi con il server data base ..." . $nl;
    //echo mysql_sqlstate($conn) . $nl;
    echo mysql_errno($conn) . $nl;
    echo
    mysql_error($conn) . $nl;
    die;}}

    else{
    //fallita mysqli_select_db ...

    echo "Non trovo il data base ..." . $nl;
    //echo mysql_sqlstate($conn) . $nl;
    echo mysql_errno($conn) . $nl;
    echo
    mysql_error($conn) . $nl;
    die;}}}


    $insert = "INSERT INTO `$name`.`utenti` (`id`, `email`, `psw`) VALUES ('1', MD5('$email'), MD5('$psw'));";
    $select_db = mysql_select_db($accessData['name']);
    $registraz = mysql_query($insert);


    if(
    $insert){
    echo (
    "<br> Inserimento avvenuto correttamente");}
    else {echo (
    "<br> Inserimento non eseguito");}

    //4 chiudere la/le connessione/i
    mysql_close($conn);

    ?>
    Ultima modifica di alemoppo : 18-12-2017 alle ore 18.57.22 Motivo: +tag [php]

  30. #60
    alexkzeta non è connesso Neofita
    Data registrazione
    04-12-2017
    Messaggi
    5

    Predefinito

    l' altro script è invece quello del professore elogin.php dove c è mischiato sia il codice per l accesso del login, sia l' accesso della registrazione a un nuovo utente, tutto sullo stesso e unico script :


    Codice PHP:
    <?php

    $nl
    ="<br />";

    //SESSIONE ID
    session_start();
    $ip=$_SERVER['REMOTE_ADDR'];

    session_start();

    $nl="<br />";

    //recupero credenziali da file ESTERNO alla cartella pubblica del sito
    $accessData=parse_ini_file('/c/d/cdb.ini');

    //prima di tutto un po' di sicurezza ...
    if ($_SERVER['REQUEST_METHOD'] == 'POST'){
    //ok la pagina è stata davvero richiamata dalla form

    //recupero il contenuto della textbox email
    $email = $_POST['email'];

    //... e quello della textbox password
    $psw = $_POST['password'];

    //1 stabilire una (o più) connessione/i con un server
    //NB: con @ si sopprimono i warning/errori del comando
    $conn = mysqli_connect($accessData['host'], $accessData['user'], $accessData['pass']);

    if(!
    $conn){
    //gestione dell'errore

    //echo mysqli_connect_errno() . $nl;
    //echo mysqli_connect_error() . $nl;
    //echo mysqli_sqlstate( $conn ) . $nl;
    echo "Connessione al server fallita. Impossibile procedere. Contattare ...";
    die;}

    //2 selezionare il db con cui lavorare
    if(mysqli_select_db($conn, $accessData['name'])){
    echo
    "Non trovo il data base ...".$nl;
    echo
    mysqli_sqlstate($conn) . $nl;
    echo
    mysqli_errno($conn) . $nl;
    echo
    mysqli_error($conn) . $nl;
    die;}

    $comandoSQL =
    "select id, psw from utenti where email ='" . mysqli_escape_string($conn, $email) ."'";

    //2 inviare il comando
    $risultatoRicercaEmail = mysqli_query($conn, $comandoSQL);


    //quale bottone è stato premuto, 'accedi' o 'nuovo utente'?
    if(isset($_POST['bottaccedi'])){

    if(
    $risultatoRicercaEmail){ //la query ha avuto successo

    //3 elaborare il risultato
    if ($riga = mysqli_fetch_assoc($risultatoRicercaMail)){ //mail trovata, confrontiamo psw

    //echo "Trovata".$nl;
    $autenticato = ($psw === $riga['psw']);}

    else
    $autenticato = false;

    //4 chiudere la/le connessione/i
    mysqli_close($conn);

    //redirect
    if($autenticato){
    $_SESSION['id']=$riga['id'];
    header("Location: /menu/main.php");}

    else
    header("Location: /index.php?errore=1");

    exit;}

    else{
    //fallita mysqli_query

    echo "Problemi con il server data base ...".$nl;
    echo
    mysqli_sqlstate($conn) . $nl;
    echo
    mysqli_errno($conn) . $nl;
    echo
    mysqli_error($conn) . $nl;
    die;}}

    else{

    //BOTTONE NUOVO UTENTE
    if(mysqli_fetch_assoc($risultatoRicercaEmail)){
    mysqli_close($conn);
    header("Location: /index.php?errore=2"); //email gia' presente
    exit;}

    //insert into utenti values (null, 'e@j.com','eee')
    $comandoSQL = "insert into `utenti` values (null,'".$email."','".$psw."')";
    $esito = mysqli_query($conn, $comandoSQL);

    if(
    $esito){

    $_SESSION['id'] = mysqli_insert_id($conn);
    mysqli_close($conn);
    header("Location: /menu/main.php");}

    else{

    mysqli_close($conn);
    header("Location: /index.php?errore=3");} //inserimento fallito


    exit;}}

    else{
    header("Location: /index.php?errore=4"); //non autenticato
    exit;}


    ?>
    Ultima modifica di alemoppo : 18-12-2017 alle ore 18.57.39

Pagina 2 di 3 PrimoPrimo 123 UltimoUltimo

Regole di scrittura

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