Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2017
    Messaggi
    41

    non riconosce le variabili

    ho scritto questo programma
    deve prendere una stringa di testo dal file prova txt e modificarlo
    il problema è che all avvio mi da l errore che non trova le variabili e mi elimina la stringa di testo però dopo il programma funziona alla grande il problema si verifica solamente all avvio
    aiutatemi perfavore grazie mille sotto allego il file di testo e il codice

    /--------------------------------------------------------------------------/

    <html>
    <head>
    </head>
    <body>
    <?php

    $testo=fopen("prova.txt","r");
    $new=fopen("iscrittin.txt","a");
    while($rigafile=fgets($testo)){
    $campiriga=explode("|",$rigafile);
    $idriga=$campiriga[0];
    if($idriga=="1"){

    $cnome=$_POST["nome"];
    $ccognome=$_POST["cognome"];
    $cvia=$_POST["via"];
    $nuovariga=$idriga."|".$cnome."|".$ccognome."|".$c via."\n";
    fwrite($new,$nuovariga);
    }else{
    fwrite($new,$rigafile);
    }
    }
    fclose($testo);
    fclose($new);
    //cancellare vecchio file
    unlink("prova.txt");
    //rinomina file
    rename("iscrittin.txt","prova.txt");
    ?>


    <form method="post" action="">
    ID:<br>
    <input type="text" name="id" value="<?=$idriga?>"><br>
    NOME:<br>
    <input type="text" name="nome" value="<?=$cnome?>"><br>
    COGNOME:<br>
    <input type="text" name="cognome" value="<?=$ccognome?>"><br>
    VIA:<br>
    <input type="text" name="via" value="<?=$cvia?>"><br>
    <input type="submit" value="MODIFICA">
    </form>
    </body>
    </html>

    /----------------------------------------------/

    1|matteo|adriani|via casamassima, 62
    2|Giovanni|Verdi|Viale dei colori 2|390939|Padova|PD|info@verdi.it|
    3|Giuseppe|Bianchi|Viale dei colori 3|39939939|Padova||info@bianchi.it|
    4|Luca|Gialli|Viale dei colori 4|3967939|Padova|PD|info@gialli.it|
    Cattura.JPG

    grazie mille ancora

  2. #2
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,565
    Non ho mica capito il senso del tuo codice, cmq appena carichi la pagina non ci sono le variabile $_POST. Ovviamente perchè saranno impostate dopo che fai il submit. Quindi prima di aggiornare il file verifica che effettivamente queste variabili ci sono (o se la richiesta è di tipo post).
    Banalmente:
    Codice PHP:
    <?php

    if(isset($_POST['submit'])){
      
    $testo fopen(...);
      ...
      
    rename("iscrittin.txt","prova.txt");
    }
    ?>
    <form method="post" action="">
    ...
    <!-- occhio al name -->
    <input type="submit" value="MODIFICA" name ="submit">  
    </form>
    </body>
    </html>

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2017
    Messaggi
    41
    si perdonami sono stato poco chiaro questo è un esercizio di un corso quindi non sono molto esperto
    ho provato anche con if(isset) e fa peggio mi da all interno delle caselle del form che non trova le variabili scritte in codice nel form
    e mi elimina tutto il file di testo lasciandomelo vuoto

  4. #4
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,565
    Come ti ho detto, non è che (per me) ha molto senso il tuo codice
    Io farei così:
    Codice PHP:
    <?php
    $idDaModificare 
    1// magari poi lo prendi da $_GET;
    $testo=fopen("prova.txt","r");
    $new=fopen("iscrittin.txt","a");
    while(
    $rigafile=fgets($testo)){
      
    $campiriga=explode("|",$rigafile);
      
    $idriga=$campiriga[0];
      if(
    $idriga==$idDaModificare ){
         if(isset(
    $_POST['submit'])){
           
    $cnome=$_POST["nome"];
           
    $ccognome=$_POST["cognome"];
           
    $cvia=$_POST["via"];
           
    $nuovariga=$idriga."|".$cnome."|".$ccognome."|".$c via."\n";
           
    fwrite($new,$nuovariga);

         }else{
            
    $cnome $campiriga[1];
            
    $ccognome $campiriga[2];
            ...
         }
      }else{
        
    fwrite($new,$rigafile);   
      }
     }
    }
    fclose($testo);
    fclose($new);
     
    //cancellare vecchio file 
    unlink("prova.txt");
    //rinomina file
    rename("iscrittin.txt","prova.txt");
    Ultima modifica di boots; 22-08-2017 a 17:46

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2017
    Messaggi
    41
    ho compilato il programma e mi da sempre questo errore
    io sono sincero ,non essendo esperto non capisco da cosa derivi l errore mi puoi spiegare le circostanze per cui si verifica e come risolverlo?
    non voglio copiare e incollare, vorrei cercare di capire il perchè accade ,altrimenti in futuro mi troverò sempre davanti questi problemi
    pleeeeeeeeas

  6. #6
    mi da all interno delle caselle del form che non trova le variabili scritte in codice nel form
    Questo penso tu lo possa risolvere o settando un valore di default a monte del codice per le variabili che richiami nei tuoi input es:
    Codice PHP:
    $cnome "";
    $ccognome "";

    ...
    ... 
    altro codice
    ...

    FORM HTML 
    oppure al posto che mettere quel dato se non erro mettici come valore i dati nel $_POST ad esempio:
    Codice PHP:
    <input type="text" name="nome" value="<?=$_POST['nome']?>"><br>
    Se non ho letto male è normale che al primo avvio ti elimini il file perchè la scrittura prevede appunto che vi siano dei dati ricevuti dal form, risolveresti banalmente con un
    Codice PHP:
    if(isset($_POST["submit"])){...} 
    e dentro gli metti tutto il codice php.
    Così dovresti risolvere il problema del primo avvio e il problema delle NOTICE come valori negli input. Il resto del codice fatto dovrebbe essere più che sufficiente per la tua esercitazione


  7. #7
    Utente di HTML.it
    Registrato dal
    May 2017
    Messaggi
    41
    if(isset) l ho inserito tu dici di metterlo a monto di tutto il programma?
    e poi ho notato un altra cosa perchè sempre all avvio come id mi visualizza l ultimo id salvato cio in questo caso 4?

  8. #8
    Si hai quei 2 modi che ti ho descritto per evitare gli errori negli input (sperando chiaramente di aver capito bene il tutto).
    Non ho capito cosa intendi per ultimo id salvato, cioè dove ? e perchè in questo caso 4 ?

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2017
    Messaggi
    41
    allora per id e relativo scusami io intendo in numero iniziale che identifica la riga che come vedi va da 1 a 4
    sul form visualizza anche quello
    che fa il programma mi prende l ultimo cioè il 4 scambiandomelo per il numero 1 e cosi mi elimina compretamente la riga 1 perche non la trova piu

  10. #10
    Utente di HTML.it
    Registrato dal
    May 2017
    Messaggi
    41
    comunque il codice e troppo complesso onestamente quindi ne ho fatto una versione a livello primitivo il codice e questo
    <html>
    <body>
    <?php

    $testo=fopen("prova.txt","r");
    $nuovo=fopen("nuovo.txt","a");
    $nome=fgets($testo);
    $newname=$_POST["nome"];
    $new=$newname;
    fwrite($nuovo,$new);
    fclose($testo);fclose($nuovo);
    unlink("prova.txt");
    rename("nuovo.txt","prova.txt");
    ?>
    <form method="post">
    <input type="text" name="nome" value="<?=$new?>"required>
    <input type="submit" name="ok" value="ok">

    </form>
    </body>
    </html>

    nel file di testo ce scritto solo "matteo"
    risultato?
    Cattura.JPG
    ho provato anche con i consigli che mi avete dato mettendo le funzioni isset ,sostituendo i valori dei form con le variabili $_POST[], ho definito anche la variabile ma nulla
    aiutatemi vi prego
    e poi come al solito mi elimina il testo all interno del file
    a me serve solo che quando avvio il programma mi visualizza il nome presente nel file di testo e poi lo posso modificare

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.