• User

    Form scomparso

    Ciao a tutti,
    vi chiedevo se potevate darmi qualche idea per controllare come mai un form scompare nel momento in cui viene visualizzato un alert javascript che avverte che alcuni campi obbligatori non sono stati compilati.
    Il form html è contenuto in un file include.
    Purtroppo però non scompare tutte le volte e non capisco che cosa controllare per verificare quando succede.

    Molte grazie!
    :ciauz: Ciao Patpat


  • User

    Ciao,
    ci vorrebbe il sorgente per capire dove possa essere il problema.


  • User

    Ciao!
    Ecco il codice un po' semplificato:

    form.php
    non ha nulla di particolare se non che richiama se stesso
    form .... action="<?php echo $_SERVER['PHP_SELF'];?>" method="post" enctype="multipart/form-data">

    Ecco questo php controlla e include il form:

    if (!isset($_POST['bottone']))
    // prima visualizzazione del modulo vuoto
    {
    include("form.php");
    exit();
    }
    else
    {
    // ho vari pulsanti solo se confermo controllo i campi
    if (($_POST['bottone']) == "Conferma") {
    unset($array_errori);
    // controllo i dati obbligatori CAMPI FILES
    foreach ($_FILES as $type => $array) { // immagine es. imgpic imggra
    if ( $array['name'] == "" ) // se il nome è vuoto
    {
    if ($type == "imgpic")
    // solo nel caso dei files obbligatori
    {
    switch ($type){
    case "imgpic":
    $array_errori[] = "Inserire immagine";
    break;
    default:
    $array_errori[] = "Errore {$type}";
    break;
    }
    }
    }
    }
    if (@sizeof($array_errori) > 0)
    { // se mancano dei campi lo segnalo
    $erroreinsert = "Controlla i dati inseriti nel modulo: \r\n";
    foreach($array_errori as $errore) {
    $erroreinsert .= "{$errore} \r\n";
    }
    $erroreinsert = json_encode($erroreinsert); ?>
    <script type="text/javascript">alert(<?php echo ($erroreinsert);?>); </script>
    <?php
    extract($_POST);
    include ("form.php");
    }
    else {echo "Tutti i campi sono ok";
    extract($_POST);
    include("form.php");}
    }
    }

    Spero di non aver tralasciato niente di importante 😉

    Grazie
    Patpat


  • User

    Il codice sembra ok,
    ma focalizzando l'attenzione al codice che stampa l'alert
    [PHP]alert(<?php echo ($erroreinsert);?>);[/PHP]

    sei sicuro di non generare un errore javascript in caso di alcuni errori (che magari conengono apici o altri carateri speciali) e quindi non stampa il successivo form?


  • User Attivo

    Condivico con topseo :
    [PHP] alert(<?php echo ($erroreinsert);?>);[/PHP] Genera errore perchè non è incluso tra virgolette.
    Prova così :
    [PHP] alert('<?php echo ($erroreinsert);?>');[/PHP]


  • User

    Grazie per le risposte!:)

    Però il codice javascript non mi da problemi. I messaggi che visualizzo sono giusti.
    Il problema è che quando clicco sul bottone di conferma, il messaggio js mi compare su una schermata bianca perdendo il form che ho sotto.
    Dando l'ok sul messaggio js ritorna il form.
    Mi sembrava una schifezza che scomparisse!
    Che ne pensate??

    Ciao
    Patpat


  • User

    Sapete che mi succede anche se nell'alert visualizzo un testo fisso non una variabile ??!!! :mmm:

    :bho: Non so più che fare

    Ciao Patpat


  • User

    Adesso ho capito.
    E' perfettamente normale, l'alert blocca l'esecuzione della pagina finchè non premi l'ok, per far stampare comunque il form sotto allora non devi far altro che spostare il codice che genera l'alert sotto a quello che include il form.


  • User

    Ciao TopSeo!

    Ho messo cosi:
    extract($_POST);
    include ("form.php");
    ?>
    <script type="text/javascript">alert('errore');</script><?php

    Provo a dare conferma varie volte di seguito a volte scompare a volte no
    ...per quello che all'inizio del post dicevo che non era sempre uguale... 😮
    Confido nella tua pazienza 😄
    Ciao
    Patpat


  • User

    Di nuovo io!
    Ho visto che il tutto non funziona solo con IE 7 :p!

    Usavo proprio IE perchè mi fa sempre al contrario di quello che voglio!
    E lo tenevo d'occhio!
    Ma questa volta non ci ho pensato!:(

    E ora che posso fare?????

    Ciao

    Patpat


  • User

    Ho trovato la soluzione per IE:

    $errore = preg_replace("/\r?\n/", "\n", addslashes($errore));
    echo "<script type="text/javascript">\n"; echo " alert("$errore");\n"; echo "</script>\n\n";

    Era un problema sui ritorni a capo.

    😄

    Patpat