Pagina 2 di 3 PrimoPrimo 123 UltimoUltimo
Visualizzazione risultati 31 fino 60 di 63

Discussione: Collegare HTML a php

  1. #31
    Guest

    Predefinito

    in effetti ha ragione, ho provato io il suo script e semplicemente il js non parte, ho anche corretto gli errori che avevo fatto io e l'apice in più che aveva messo lui, ma niente, inoltre la pagina risulta pesantissima

  2. #32
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Ho trovato l'errore.
    Usi document.write all'interno della funzione. Quando la richiami la pagina è già carica (window.onload) il contenuto della pagina si svuota e allora perdi il suo vecchio contenuto (form, script).

  3. #33
    Guest

    Predefinito

    strano però, la prova che ho fatto io non fa proprio partire lo script javscript, quindi oltre a quello ci deve essere altro

  4. #34
    Guest

    Predefinito

    Ragazzi semplifichiamo le cose ;)
    index.html:
    Codice HTML:
    <HTML>
    <HEAD>
    <TITLE>X Javascripter</TITLE>
    <script src="elevato.js" type="text/javascript"></script>
    </HEAD>
    <BODY>Hello world :)
    <form name="f" action="database.php" method="post">
    <input type="hidden" name="nome">
    </form>
    </BODY>
    </HTML>
    elevato.js:
    Codice HTML:
    function compilaForm() {
    	var form = document.forms.f;
    nome=prompt("Come ti chiami?","");
    	form.nome.value = nome;
    	form.submit();
    }
    window.onload = compilaForm;
    database.php:
    Codice PHP:
    <?php
    $file
    = 'file.txt'; // specifica il percorso del file qui
    $code = "{$_POST['nome']} \n---\n"; // specifica la riga da aggiungere al file
    $fh = fopen($file, 'a');
    if(
    fwrite($fh, $code))
    echo
    'Dati inseriti!';
    else
    echo
    'Errore';
    fclose($fh);
    ?>
    file.txt: vuoto
    -----
    Provate con i vostri occhi e i vostri browser ;)
    Pagina
    TXT

    Ha ragione Javascript il problema sono i documwnt.write...per qualche motivo quando li metto non passa al php...
    Ultima modifica di bozzysblog : 23-06-2010 alle ore 13.46.25

  5. #35
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Citazione Originalmente inviato da worldpixel Visualizza messaggio
    strano però, la prova che ho fatto io non fa proprio partire lo script javscript, quindi oltre a quello ci deve essere altro
    Lo script parte, ho provato il link che ha postato bozzysblog.
    Il problema è quello che ho indicato sopra.
    Ultima modifica di javascripter : 23-06-2010 alle ore 13.29.35

  6. #36
    Guest

    Predefinito

    Leggi il post sopra, il problema sono quelle dannate document.write ;) Perchè fanno questo scherzetto?
    Interagiscono con il window.onload = compilaForm;?

  7. #37
    Guest

    Predefinito

    ora che hai tolto tutta quella roba funziona, il motivo del malfunzionamento dei document.write, come ha detto javascripter, è che li usi quando il documento non si é ancora caricato, quindi cancella il form e per questo non funziona, prova a fare in un altreo modo:
    Codice HTML:
    <body>
    testo<br/>
    <div id="testo"></div><br/>
    //Qui il form che c'é prima
    nel file js, sostituisci tutti i document write con:
    Codice:
    document.getElementById('testo').innerHTMl += "Il testo che vuoi tu<br/>";
    così non sovrascrive il form ma "riempie" il div

  8. #38
    Guest

    Predefinito

    Da quanto ho capito viene creata una variabile "testo" string che viene incollata nell'htm...
    Interessante =D grazie worldpixel :)
    Ma dovrò cambiarla ogni volta vero?
    E poi per inserire qualche variabile tipo "nome" al testo come faccio?
    Va bene tipo:
    document.getElementById('testo').innerHTMl += "<p></p><p>COMMENTO SU SAPONETTA: <b>"+saponetta+"</b>";
    O devo fare altro?
    Ultima modifica di bozzysblog : 23-06-2010 alle ore 15.17.39

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

    Predefinito

    non è una variabile, ma un id!

    Tipo
    Codice HTML:
    <div id='testo'></div>
    Ciao!
    Ultima modifica di alemoppo : 23-06-2010 alle ore 15.20.23

  10. #40
    Guest

    Predefinito

    Citazione Originalmente inviato da bozzysblog Visualizza messaggio
    Da quanto ho capito viene creata una variabile "testo" string che viene incollata nell'htm...
    Interessante =D grazie worldpixel :)
    Ma dovrò cambiarla ogni volta vero?
    E poi per inserire qualche variabile tipo "nome" al testo come faccio?
    Va bene tipo:
    document.getElementById('testo').innerHTMl += "<p></p><p>COMMENTO SU SAPONETTA: <b>"+saponetta+"</b>";
    O devo fare altro?
    va benissimo, comunque innerHTMl scrive una stringa all'interno di un tag (che può essere un div ma anche body o altro)

  11. #41
    Guest

    Predefinito

    Non vedo gli id nel codice sorgente della pagina guardate:
    index.php e comunque non funzia più...
    Guardatevi la sorgente, dentro c'è anche il link di elevato.js...
    Ma forse si deve aggiornare il server...

  12. #42
    Guest

    Predefinito

    io li vedo, comunque non serve che metti un div per ogni testo, ne basta uno solo, perché l'operatore += accoda la nuova stringa alla precedente
    poi sostituisci tutti gli <p></p> vuoti con il tag <br/> che serve per andare a capo
    Ultima modifica di worldpixel : 23-06-2010 alle ore 16.30.59

  13. #43
    Guest

    Predefinito

    No scherzavo non funziona:
    Osservate attentamente il listato della index e della .js citati nella sorgente
    http://bozzysblog.altervista.org/Prova/index.html se andate al link vi farà due finestrelle ma lasciatele perdere, osservate e vedrete che anche se c'è un id nell .js non viene scritto, e non perchè c'è lo sfondo nero ma perchè non funzia...che accade?
    Questa è la linea trascurata dal browser: document.getElementById('testo').innerHTMl += "NOME UTENTE REGISTRATO CON SUCCESSO: "+nome+"</p>";
    Ultima modifica di bozzysblog : 23-06-2010 alle ore 17.07.59

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

    Predefinito

    Ho guardato velocissimamente un po lo script e mi sono saltate all'occhio alcune cose:

    1- si scrive
    Codice HTML:
    document.getElementById('testo').innerHTML
    non come lo hai scritto tu!

    2- sostituisci
    Codice HTML:
    form.nome.value = nome;
    con
    Codice HTML:
    document.f.nome.value = nome;
    ..se vuoi fare come hai fatto te, devi scrivere
    Codice HTML:
    var form = document.f;
    !

    3- saponetta che è?? Dove è inizializzata?? cosa vale?? dove è dichiarata???

    Al massimo devi scrivere
    Codice HTML:
    document.f.saponetta.value
    ..prima di postare qui, cerca di cavartela da solo e non prendere la "pappa fatta"; lo dico soltanto per il tuo bene, altrimenti non imparerai mai. Impara anche ad usare la utilissima "console degli errori" (se usi firefox), meglio ancora se abbinata con firebug. La console la trovi sotto "strumenti", mentre firebug è un addons di firefox

    Citazione Originalmente inviato da worldpixel

    nel file js, sostituisci tutti i document write con:
    Codice:
    document.getElementById('testo').innerHTMl += "Il testo che vuoi tu<br/>";
    così non sovrascrive il form ma "riempie" il div
    A parte che, come detto prima, la L è maiuscola.. poi all'inizio il div con id testo non è inizializzato.. cioè la prima assegnazione è bene non farla con il "+=", ma soltanto con "="... so benissmo che funziona ugualmente, ma è una brutta abitudine (a mio avviso) non inizializzare le "variabili" (anche se in questo caso, ad alto livello, non è una vera e propria variabile)... Poi in altri linguaggi potreste ritrovarvi in sgradevoli situazioni

    Ciao!
    Ultima modifica di alemoppo : 23-06-2010 alle ore 18.25.49

  15. #45
    Guest

    Predefinito

    la l minuscola é un errore di battitura, la parte di:
    Codice:
    form.nome.value = nome;
    é giusta, in quanto form é inizializzato come:
    Codice:
    var form = document.forms.f;
    cosa intendi con il div con id testo non é inizializzato?

  16. #46
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Mica non è inizializzato, in quel momento innerHTML è una stringa vuota.

    E' come dire che:
    Codice:
    var pippo = '';
    pippo += 'ciao';
    è errato, quando è una procedura corretta!

    Per quanto riguarda il form, è meglio abituarsi ad usare document.forms per accedere al form. ( e per essere ancora più pignoli document.forms.nome_form.elements per accedere ai suoi elementi )
    Ultima modifica di javascripter : 23-06-2010 alle ore 18.52.31

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

    Predefinito

    Citazione Originalmente inviato da worldpixel Visualizza messaggio
    , la parte di:
    Codice:
    form.nome.value = nome;
    é giusta, in quanto form é inizializzato come:
    Codice:
    var form = document.forms.f;
    Io nel sorgente vedo:
    Codice HTML:
    var form = document.forms.f;
    
    	nome=prompt("Come ti chiami?","nome e cognome");
    	form.nome.value = nome;
    che è scorretto.

    Così è corretto:
    Codice HTML:
    var form = document.f;
    nome=prompt("Come ti chiami?","nome e cognome");
    form.nome.value = nome;

    Citazione Originalmente inviato da worldpixel Visualizza messaggio
    cosa intendi con il div con id testo non é inizializzato?
    Intendo che all'inizio non sai dentro il div cosa c'é.. potrebbero esserci dei valori indesiderati (in HTML non accade, ma è bene prendere una buona abitudine ad inizializzare correttamente gli elementi...)

    Ciao!

    EDIT:

    Citazione Originalmente inviato da javascripter
    E' come dire che:
    Codice:
    var pippo = '';
    pippo += 'ciao';
    è errato, quando è una procedura corretta!
    Nel caso nostro, non vedo dove fa il primo assegnamento .. e comunque non ho detto che è errato, nemmeno scorretto, ma è una buona abitudine inizializzare gli elementi prima di "aggiungere" qualcosa. Ho capito cosa intendi: il div è di per sé vuoto, perché è creato in questo modo:
    Codice HTML:
    <div id='testo'></div>
    Ma è bene prendere abitudine di inizializzare sempre gli elementi... (anche se in questo caso è già inizializzato)

    Citazione Originalmente inviato da javascripter
    Per quanto riguarda il form, è meglio abituarsi ad usare document.forms per accedere al form. ( e per essere ancora più pignoli document.forms.nome_form.elements per accedere ai suoi elementi )
    ma forms[] è un array e andrebbe usato con le quadre, se non erro... (su questo non son molto sicuro )

    Ciao!
    Ultima modifica di alemoppo : 23-06-2010 alle ore 19.02.57

  18. #48
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Io nel sorgente vedo:
    Codice HTML:
    var form = document.forms.f;
    
    	nome=prompt("Come ti chiami?","nome e cognome");
    	form.nome.value = nome;
    che è scorretto.
    Fossi in te proverei, prima di fare false affermazioni ;)

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    ma forms[] è un array e andrebbe usato con le quadre, se non erro... (su questo non son molto sicuro )
    Ciao!
    In realtà per javascript anche un array è un oggetto :)!
    Le quadre si usano per qualcosa di dinamico!
    Codice:
    var nome_dinamico = 'form', form = document.forms[nome_dinamico];
    Ultima modifica di javascripter : 23-06-2010 alle ore 19.08.57

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

    Predefinito

    Citazione Originalmente inviato da javascripter Visualizza messaggio
    Fossi in te proverei, prima di fare false affermazioni ;)

    avevo detto che non ero sicuro

    ma forms[] è un array e andrebbe usato con le quadre, se non erro... (su questo non son molto sicuro )

    Ciao!

  20. #50
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    avevo detto che non ero sicuro
    , ti ho risposto proprio per questo.
    Un oggetto è accessibile in entrambi i modi sia con il . sia con le []

    Codice:
    var obj = {
        a: 'non lo so',
        b: '.....'
    };
    
    alert(obj['a'] +  ' - ' + obj.a);
    Accedere con le graffe serve per rendere tutto più dinamico, evitando di usare eval:
    Codice:
    var obj = {};
    
    function assegna(nome, valore) {
            obj[nome] = valore;
            // con eval, qualcosa del genere: eval('obj.' + nome + '="' + valore + '"'); // orrendo :P
    }
    Inoltre, typeof [] e typeof {} restituiscono entrambi object. Quindi la differenza tra array e object in realtà è minima, gli array vengono usati per creare semplici liste [1, 2, 3 ,4].
    Ultima modifica di javascripter : 23-06-2010 alle ore 19.44.41

  21. #51
    Guest

    Predefinito

    Ragazzi eheh non litigate...e poi mi da fastidio che arriva il primo che passa, e solo perchè non ha letto tutti i post e trova una stringa intitolata "saponetta" mi dice che devo fare pratica...
    ma per favore se proprio vuoi aiutarci leggiti tutto il problema e dacci una mano veramente ;)

    Allora avete trovato un accordo per quale procedura è meglio utilizzare per mandare tante stringe inserite da prompt su un database? Potendo intanto ad interagire con delle scritture sulla html tra alcuni prompt senza interagire con il processo di invio dati al php?

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

    Predefinito

    Citazione Originalmente inviato da bozzysblog Visualizza messaggio
    e poi mi da fastidio che arriva il primo che passa, e solo perchè non ha letto tutti i post e trova una stringa intitolata "saponetta" mi dice che devo fare pratica...
    1-




    ...dove ho scritto che devi far pratica?? Ho detto che, prima di prendere la pappa fatta, dovresti provare da solo a sbatterci la testa ... e poi ho visto che non hai usato il mio consiglio ..altrimenti non avresti scritto quello che ho quotato.

    -----

    2- non mi pare abbiamo litigato anzi... ho imparato qualcosa

    Ciao!

    EDIT:

    Citazione Originalmente inviato da bozzysblog
    Allora avete trovato un accordo per quale procedura è meglio utilizzare per mandare tante stringe inserite da prompt su un database? Potendo intanto ad interagire con delle scritture sulla html tra alcuni prompt senza interagire con il processo di invio dati al php?
    Per la prima domanda, secondo me il modo migliore è l'utilizzo di ajax, nativo o tramite jQuery.

    La seconda domanda non l'ho capita

    Ciao!

    ________________________

    EDIT2:

    @javascripter: una curiosità: in javascript anche un array è un oggetto ??? no, vero?
    Ultima modifica di alemoppo : 23-06-2010 alle ore 20.55.40

  23. #53
    Guest

    Predefinito

    Dunque ricominciamo dall'inizio ;)
    Il mio progetto è un po' più lungo e c'era anche la stringa saponetta ma ho tolto il 90% per semplificare il progetto:
    Creare una pagina interattiva con dei prompt che ti chiedano alcune domande, e tra un prompt e l'altro venga anche scritto del testo normale, sulla pagina mia index.html, con stringhe in mezzo...
    E poi, alla fine della pagina, le stringhe vengano inviate ad un file di testo tramite un database.php...tutto qui ;)

    Dunque avevo semplificato il mio progetto in questo modo:

    File elevato.js:
    Codice HTML:
    function compilaForm() {
    	var form = document.forms.f;
            nome=prompt("Come ti chiami?","nome e cognome");
    	form.nome.value = nome;
    	document.getElementById('testo').innerHTMl += "<p>Commenta su facebook ;) </p>";
    // invia il form
    	form.submit();
    }
    window.onload = compilaForm;
    File index.html:
    Codice HTML:
    <html>
    <head>
    <title>SPAMMATAAA!!!</title>
    <script src="elevato.js" type="text/javascript"></script>
    </head>
    <body>
    Ciao qua dovrebbe comparire un Commenta su facebook ↓
    <div id="testo"></div>
    <form name="f" action="database.php" method="post">
    <input type="hidden" name="nome">
    </form>
    </body>
    </html>
    File database.php:
    Codice PHP:
    <?php
    $file
    = 'file.txt'; // specifica il percorso del file qui
    $code = "{$_POST['nome']}\n---\n"; // specifica la riga da aggiungere al file
    $fh = fopen($file, 'a');
    if(
    fwrite($fh, $code))
    echo
    'Dati inseriti!';
    else
    echo
    'Errore';
    fclose($fh);
    ?>
    E poi il file.txt, che è vuoto...
    Allora, cosa devo fare per fare in modo che la pagina giri, tra le vostre tante proposte? ;)
    Il tutto lo vedete qui ;)
    Ultima modifica di bozzysblog : 23-06-2010 alle ore 22.14.30 Motivo: Modificato dopo risposta di Worldpixel grazie :)

  24. #54
    Guest

    Predefinito

    c'é un errore nel body, non hai messo la parte <div id="testo"></div>

  25. #55
    Guest

    Predefinito

    Giustissimo ora è corretto
    Ma ora provo a mettere un prompt dopo il
    Codice HTML:
    document.getElementById('testo').innerHTMl += "<p>Commenta su facebook ;) </p>";
    Per farvi vedere che l'id non si vuole scrivere così com'è :)
    Quindi come va scritto?
    url
    Ultima modifica di bozzysblog : 23-06-2010 alle ore 22.43.10

  26. #56
    Guest

    Predefinito

    nel file elevato.js metti questo codice:
    Codice:
    function compilaForm() {
    	var form = document.forms.f;
            nome=prompt("Come ti chiami?","nome e cognome");
    	form.nome.value = nome;
    	document.getElementById('testo').innerHTMl += "<p>Commenta su facebook ;) </p>";
            window.alert('Bene ora dovresti leggere "commenta su facebook ;)" e poi dovrebbe andare al php e scrivere "Dati inseriti"');
    // invia il form
    	setTimeout(form.submit, 5000);
    }
    window.onload = compilaForm;
    in questo modo teoricamente aspetta 5 secondi prima di inviare il form

  27. #57
    Guest

    Predefinito

    Fico! Ma...la mia domanda rimane, come faccio a inserire del testo sulla pagina tra un prompt e l'altro? ;)
    "Commenta su facebook ;)" non compare, eppure c'è tra le istruzioni, come devo modificare questa istruzione
    Codice HTML:
    document.getElementById('testo').innerHTMl += "<p>Commenta su facebook ;) </p>";
    ?
    Grazie ;)

  28. #58
    Guest

    Predefinito

    esattamente come ti ho detto poco fa, il prolema che c'é é che appena chiudi il prompt viene inviato il form e quindi finisci nella pagina database.php, prova a mettere il setTimeout (sempre che funzioni, non sono molto pratico con quello)

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

    Predefinito

    Ehm.. scusate se mi (ri)intrometto... sembrerò stressante ma....

    Codice HTML:
    innerHTMl
    Ho detto oggi che quello corretto è:

    Codice HTML:
    innerHTML
    ...a volte mi sembra di parlare al vento

    Ciao!

    EDIT:

    Fico! Ma...la mia domanda rimane, come faccio a inserire del testo sulla pagina tra un prompt e l'altro? ;)
    "Commenta su facebook ;)" non compare, eppure c'è tra le istruzioni, come devo modificare questa istruzione
    Come ho detto oggi, la cosa più "giusta" sarebbe di inviare i dati tramite ajax (nativamente o con jQuery).

    Altrimenti un modo più semplice è quello di reindirizzare i dati nella stessa pagina ed aggiornando via via i campi... una cosa del genere:

    Codice PHP:
    <?php
    if(isset($_POST['nome']))
    {
    $file = 'file.txt'; // specifica il percorso del file qui
    $code = "{$_POST['nome']}\n---\n"; // specifica la riga da aggiungere al file
    $fh = fopen($file, 'a');
    if(
    fwrite($fh, $code))
    echo
    'Dati inseriti!'; #in questo sorgente non ha senso
    else
    echo
    'Errore'; #in questo sorgente non ha senso
    fclose($fh);
    }
    if(
    file_exists('file.txt'))
    {
    echo
    '
    <html>
    <head>
    <title>SPAMMATAAA!!!</title>
    <script src="elevato.js" type="text/javascript"></script>
    </head>
    <body>
    Ciao qua dovrebbe comparire un Commenta su facebook ?'
    ;
    $arr = file('file.txt');
    foreach(
    $arr as $valore)
    echo
    '<div id="testo">'.$valore.'</div>';
    echo
    '
    <form name="f" action="" method="post">
    <input type="hidden" name="nome">
    </form>
    </body>
    </html>'
    ;
    }
    else
    {
    echo
    '
    <html>
    <head>
    <title>SPAMMATAAA!!!</title>
    <script src="elevato.js" type="text/javascript"></script>
    </head>
    <body>
    Ciao qua dovrebbe comparire un Commenta su facebook ?
    <div id="testo"></div>
    <form name="f" action="" method="post">
    <input type="hidden" name="nome">
    </form>
    </body>
    </html>'
    ;
    }
    ?>
    Ecco qui un esempio --> Per uscire, premere "ok" lasciando "nome e cognome"

    NATURALMENTE E' soltanto una dimostrazione.... E' sicuramente da modificare

    Ciao!
    Ultima modifica di alemoppo : 24-06-2010 alle ore 00.18.20

  30. #60
    Guest

    Predefinito

    c'é un problema nel tuo script, ovvero che la pagina continua a ripartire in un loop infinito, che é abbastanza scomodo

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
  •