Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    420

    Passaggio di parametri in stringa

    Ciao a tutti, sto provando a passare ad un programma php dati sia tramite stringa che tramite form, ma non riesco a far coincidere le varie parti...
    La pagina "inserisci.php" mi carica una serie di righe prese da un file di testo con il seguente formato:

    (id|NumeroArticolo|Titolo|NumeroParagrafo|testo|fo to)

    articoli.txt
    1|1|titolo1|1|testo|foto|
    2|1|titolo1|2|testo|foto|
    3|1|titolo1|3|testo|foto|
    4|2|titolo2|1|testo|foto|
    5|2|titolo2|2|testo|foto|
    6|2|titolo2|3|testo|foto|
    7|2|titolo2|4|testo|foto|


    e vicino ad ogni riga posiziona il link "salva" tramite il quale passo il numero articolo e il numero di paragrafo dell'eventuale testo o titolo modificato. Se posiziono il cursore sul link, mi visualizza le variabili correttamente

    inserisci.php:

    codice:
    <?php
    
    $textfile = fopen("articoli.txt", "r");
    
    while ($rigafile = fgets($textfile,4096)) {
         $campiriga = explode("|", $rigafile);
         ?>
         <p align="center">
         <form action="update.php" method="POST">
             Numero articolo <?php echo $campiriga[1];?>
             <?php
             caricarticolo($campiriga[1],$campiriga[2],$campiriga[3],$campiriga[4]);
         </form>
         <?php
    }                    
    ?>
    
    
    
    
    
    
    <?php
        function caricarticolo($numart, $numpar, $titolo, $testo)  {
            ?>
            <a href = "updatearticolo.php?numart=<?php echo $numart;?>&numpar=<?php echo $numpar;?>">Salva</a>
            Titolo <textarea name="titolo" rows="1" cols="80"><?php echo $titolo;?></textarea>
            Testo <textarea name="passo" rows="19" cols="60"><?php echo $testo;?></textarea>
    ?>


    Il link richiama questo script in cui con un ciclo controllo tutto il file di testo e quando trovo numero articolo e numero paragrafo passati dal link, sostituisco testo e titolo e trascrivo il file

    update.php:


    codice:
    <?php
    
    $numart = $_POST["numart"];           
    $numpar = $_POST["numpar"];
    
    $textfile = fopen("articoli.txt", "r");
    $textfile_new = fopen("articoli_new.txt", "a");
    
    while ($rigafile = fgets($textfile,4096)) {
        $cr = explode("|", $rigafile);
        if (($cr[1] == $numart)&&($cr[3] == $numart)) {
    	$cr[2] = $_POST["titolo"];
    	$cr[4] = $_POST["passo"];
            
            $nuovariga = $cr[0]."|".$cr[1]."|".$cr[2]."|".$cr[3]."|".$cr[4]."|".$cr[5]."|".$cr[6]."|\r\n";
    	fwrite($textfile_new, $nuovariga);
            
        }else{
    	fwrite($textfile_new, $rigafile);
        }
    }
    
    
    ?>

    Almeno questo dovrebbe essere il funzionamento ma quest'ultimo script mi da errore alle righe 2 e 3 come se non trovasse quelle variabili.
    A questo script passo le variabili "numart" e "numpar" tramite link, mentre "titolo" e "passo" tramite fo

  2. #2

    Re: Passaggio di parametri in stringa

    Originariamente inviato da sitodue
    Ciao a tutti, sto provando a passare ad un programma php dati sia tramite stringa che tramite form, ma non riesco a far coincidere le varie parti...
    La pagina "inserisci.php" mi carica una serie di righe prese da un file di testo con il seguente formato:

    (id|NumeroArticolo|Titolo|NumeroParagrafo|testo|fo to)

    articoli.txt
    1|1|titolo1|1|testo|foto|
    2|1|titolo1|2|testo|foto|
    3|1|titolo1|3|testo|foto|
    4|2|titolo2|1|testo|foto|
    5|2|titolo2|2|testo|foto|
    6|2|titolo2|3|testo|foto|
    7|2|titolo2|4|testo|foto|


    e vicino ad ogni riga posiziona il link "salva" tramite il quale passo il numero articolo e il numero di paragrafo dell'eventuale testo o titolo modificato. Se posiziono il cursore sul link, mi visualizza le variabili correttamente

    inserisci.php:

    codice:
    <?php
    
    $textfile = fopen("articoli.txt", "r");
    
    while ($rigafile = fgets($textfile,4096)) {
         $campiriga = explode("|", $rigafile);
         ?>
         <p align="center">
         <form action="update.php" method="POST">
             Numero articolo <?php echo $campiriga[1];?>
             <?php
             caricarticolo($campiriga[1],$campiriga[2],$campiriga[3],$campiriga[4]);
         </form>
         <?php
    }                    
    ?>
    
    
    
    
    
    
    <?php
        function caricarticolo($numart, $numpar, $titolo, $testo)  {
            ?>
            <a href = "updatearticolo.php?numart=<?php echo $numart;?>&numpar=<?php echo $numpar;?>">Salva</a>
            Titolo <textarea name="titolo" rows="1" cols="80"><?php echo $titolo;?></textarea>
            Testo <textarea name="passo" rows="19" cols="60"><?php echo $testo;?></textarea>
    ?>


    Il link richiama questo script in cui con un ciclo controllo tutto il file di testo e quando trovo numero articolo e numero paragrafo passati dal link, sostituisco testo e titolo e trascrivo il file

    update.php:


    codice:
    <?php
    
    $numart = $_POST["numart"];           
    $numpar = $_POST["numpar"];
    
    $textfile = fopen("articoli.txt", "r");
    $textfile_new = fopen("articoli_new.txt", "a");
    
    while ($rigafile = fgets($textfile,4096)) {
        $cr = explode("|", $rigafile);
        if (($cr[1] == $numart)&&($cr[3] == $numart)) {
    	$cr[2] = $_POST["titolo"];
    	$cr[4] = $_POST["passo"];
            
            $nuovariga = $cr[0]."|".$cr[1]."|".$cr[2]."|".$cr[3]."|".$cr[4]."|".$cr[5]."|".$cr[6]."|\r\n";
    	fwrite($textfile_new, $nuovariga);
            
        }else{
    	fwrite($textfile_new, $rigafile);
        }
    }
    
    
    ?>

    Almeno questo dovrebbe essere il funzionamento ma quest'ultimo script mi da errore alle righe 2 e 3 come se non trovasse quelle variabili.
    A questo script passo le variabili "numart" e "numpar" tramite link, mentre "titolo" e "passo" tramite fo

    Attenzione che queste due variabili:
    $numart = $_POST["numart"];
    $numpar = $_POST["numpar"];

    le stai passando in GET e non in POST

    quindi dorevvero essere:
    $numart = $_GET["numart"];
    $numpar = $_GET["numpar"];

    ho letto velocemente credo si aquello..fammi sapere
    ciao

  3. #3

    Re: Passaggio di parametri in stringa

    Originariamente inviato da sitodue
    Ciao a tutti, sto provando a passare ad un programma php dati sia tramite stringa che tramite form, ma non riesco a far coincidere le varie parti...
    La pagina "inserisci.php" mi carica una serie di righe prese da un file di testo con il seguente formato:

    (id|NumeroArticolo|Titolo|NumeroParagrafo|testo|fo to)

    articoli.txt
    1|1|titolo1|1|testo|foto|
    2|1|titolo1|2|testo|foto|
    3|1|titolo1|3|testo|foto|
    4|2|titolo2|1|testo|foto|
    5|2|titolo2|2|testo|foto|
    6|2|titolo2|3|testo|foto|
    7|2|titolo2|4|testo|foto|


    e vicino ad ogni riga posiziona il link "salva" tramite il quale passo il numero articolo e il numero di paragrafo dell'eventuale testo o titolo modificato. Se posiziono il cursore sul link, mi visualizza le variabili correttamente

    inserisci.php:

    codice:
    <?php
    
    $textfile = fopen("articoli.txt", "r");
    
    while ($rigafile = fgets($textfile,4096)) {
         $campiriga = explode("|", $rigafile);
         ?>
         <p align="center">
         <form action="update.php" method="POST">
             Numero articolo <?php echo $campiriga[1];?>
             <?php
             caricarticolo($campiriga[1],$campiriga[2],$campiriga[3],$campiriga[4]);
         </form>
         <?php
    }                    
    ?>
    
    
    
    
    
    
    <?php
        function caricarticolo($numart, $numpar, $titolo, $testo)  {
            ?>
            <a href = "updatearticolo.php?numart=<?php echo $numart;?>&numpar=<?php echo $numpar;?>">Salva</a>
            Titolo <textarea name="titolo" rows="1" cols="80"><?php echo $titolo;?></textarea>
            Testo <textarea name="passo" rows="19" cols="60"><?php echo $testo;?></textarea>
    ?>


    Il link richiama questo script in cui con un ciclo controllo tutto il file di testo e quando trovo numero articolo e numero paragrafo passati dal link, sostituisco testo e titolo e trascrivo il file

    update.php:


    codice:
    <?php
    
    $numart = $_POST["numart"];           
    $numpar = $_POST["numpar"];
    
    $textfile = fopen("articoli.txt", "r");
    $textfile_new = fopen("articoli_new.txt", "a");
    
    while ($rigafile = fgets($textfile,4096)) {
        $cr = explode("|", $rigafile);
        if (($cr[1] == $numart)&&($cr[3] == $numart)) {
    	$cr[2] = $_POST["titolo"];
    	$cr[4] = $_POST["passo"];
            
            $nuovariga = $cr[0]."|".$cr[1]."|".$cr[2]."|".$cr[3]."|".$cr[4]."|".$cr[5]."|".$cr[6]."|\r\n";
    	fwrite($textfile_new, $nuovariga);
            
        }else{
    	fwrite($textfile_new, $rigafile);
        }
    }
    
    
    ?>

    Almeno questo dovrebbe essere il funzionamento ma quest'ultimo script mi da errore alle righe 2 e 3 come se non trovasse quelle variabili.
    A questo script passo le variabili "numart" e "numpar" tramite link, mentre "titolo" e "passo" tramite fo

    Attenzione che queste due variabili:
    $numart = $_POST["numart"];
    $numpar = $_POST["numpar"];

    le stai passando in GET e non in POST

    quindi dorevvero essere:
    $numart = $_GET["numart"];
    $numpar = $_GET["numpar"];

    ho letto velocemente credo si aquello..fammi sapere
    ciao

  4. #4

    Re: Passaggio di parametri in stringa

    Originariamente inviato da sitodue
    Ciao a tutti, sto provando a passare ad un programma php dati sia tramite stringa che tramite form, ma non riesco a far coincidere le varie parti...
    La pagina "inserisci.php" mi carica una serie di righe prese da un file di testo con il seguente formato:

    (id|NumeroArticolo|Titolo|NumeroParagrafo|testo|fo to)

    articoli.txt
    1|1|titolo1|1|testo|foto|
    2|1|titolo1|2|testo|foto|
    3|1|titolo1|3|testo|foto|
    4|2|titolo2|1|testo|foto|
    5|2|titolo2|2|testo|foto|
    6|2|titolo2|3|testo|foto|
    7|2|titolo2|4|testo|foto|


    e vicino ad ogni riga posiziona il link "salva" tramite il quale passo il numero articolo e il numero di paragrafo dell'eventuale testo o titolo modificato. Se posiziono il cursore sul link, mi visualizza le variabili correttamente

    inserisci.php:

    codice:
    <?php
    
    $textfile = fopen("articoli.txt", "r");
    
    while ($rigafile = fgets($textfile,4096)) {
         $campiriga = explode("|", $rigafile);
         ?>
         <p align="center">
         <form action="update.php" method="POST">
             Numero articolo <?php echo $campiriga[1];?>
             <?php
             caricarticolo($campiriga[1],$campiriga[2],$campiriga[3],$campiriga[4]);
         </form>
         <?php
    }                    
    ?>
    
    
    
    
    
    
    <?php
        function caricarticolo($numart, $numpar, $titolo, $testo)  {
            ?>
            <a href = "updatearticolo.php?numart=<?php echo $numart;?>&numpar=<?php echo $numpar;?>">Salva</a>
            Titolo <textarea name="titolo" rows="1" cols="80"><?php echo $titolo;?></textarea>
            Testo <textarea name="passo" rows="19" cols="60"><?php echo $testo;?></textarea>
    ?>


    Il link richiama questo script in cui con un ciclo controllo tutto il file di testo e quando trovo numero articolo e numero paragrafo passati dal link, sostituisco testo e titolo e trascrivo il file

    update.php:


    codice:
    <?php
    
    $numart = $_POST["numart"];           
    $numpar = $_POST["numpar"];
    
    $textfile = fopen("articoli.txt", "r");
    $textfile_new = fopen("articoli_new.txt", "a");
    
    while ($rigafile = fgets($textfile,4096)) {
        $cr = explode("|", $rigafile);
        if (($cr[1] == $numart)&&($cr[3] == $numart)) {
    	$cr[2] = $_POST["titolo"];
    	$cr[4] = $_POST["passo"];
            
            $nuovariga = $cr[0]."|".$cr[1]."|".$cr[2]."|".$cr[3]."|".$cr[4]."|".$cr[5]."|".$cr[6]."|\r\n";
    	fwrite($textfile_new, $nuovariga);
            
        }else{
    	fwrite($textfile_new, $rigafile);
        }
    }
    
    
    ?>

    Almeno questo dovrebbe essere il funzionamento ma quest'ultimo script mi da errore alle righe 2 e 3 come se non trovasse quelle variabili.
    A questo script passo le variabili "numart" e "numpar" tramite link, mentre "titolo" e "passo" tramite fo

    Attenzione che queste due variabili:
    $numart = $_POST["numart"];
    $numpar = $_POST["numpar"];

    le stai passando in GET e non in POST

    quindi dorevvero essere:
    $numart = $_GET["numart"];
    $numpar = $_GET["numpar"];

    ho letto velocemente credo si aquello..fammi sapere
    ciao

  5. #5

    Re: Passaggio di parametri in stringa

    Originariamente inviato da sitodue
    Ciao a tutti, sto provando a passare ad un programma php dati sia tramite stringa che tramite form, ma non riesco a far coincidere le varie parti...
    La pagina "inserisci.php" mi carica una serie di righe prese da un file di testo con il seguente formato:

    (id|NumeroArticolo|Titolo|NumeroParagrafo|testo|fo to)

    articoli.txt
    1|1|titolo1|1|testo|foto|
    2|1|titolo1|2|testo|foto|
    3|1|titolo1|3|testo|foto|
    4|2|titolo2|1|testo|foto|
    5|2|titolo2|2|testo|foto|
    6|2|titolo2|3|testo|foto|
    7|2|titolo2|4|testo|foto|


    e vicino ad ogni riga posiziona il link "salva" tramite il quale passo il numero articolo e il numero di paragrafo dell'eventuale testo o titolo modificato. Se posiziono il cursore sul link, mi visualizza le variabili correttamente

    inserisci.php:

    codice:
    <?php
    
    $textfile = fopen("articoli.txt", "r");
    
    while ($rigafile = fgets($textfile,4096)) {
         $campiriga = explode("|", $rigafile);
         ?>
         <p align="center">
         <form action="update.php" method="POST">
             Numero articolo <?php echo $campiriga[1];?>
             <?php
             caricarticolo($campiriga[1],$campiriga[2],$campiriga[3],$campiriga[4]);
         </form>
         <?php
    }                    
    ?>
    
    
    
    
    
    
    <?php
        function caricarticolo($numart, $numpar, $titolo, $testo)  {
            ?>
            <a href = "updatearticolo.php?numart=<?php echo $numart;?>&numpar=<?php echo $numpar;?>">Salva</a>
            Titolo <textarea name="titolo" rows="1" cols="80"><?php echo $titolo;?></textarea>
            Testo <textarea name="passo" rows="19" cols="60"><?php echo $testo;?></textarea>
    ?>


    Il link richiama questo script in cui con un ciclo controllo tutto il file di testo e quando trovo numero articolo e numero paragrafo passati dal link, sostituisco testo e titolo e trascrivo il file

    update.php:


    codice:
    <?php
    
    $numart = $_POST["numart"];           
    $numpar = $_POST["numpar"];
    
    $textfile = fopen("articoli.txt", "r");
    $textfile_new = fopen("articoli_new.txt", "a");
    
    while ($rigafile = fgets($textfile,4096)) {
        $cr = explode("|", $rigafile);
        if (($cr[1] == $numart)&&($cr[3] == $numart)) {
    	$cr[2] = $_POST["titolo"];
    	$cr[4] = $_POST["passo"];
            
            $nuovariga = $cr[0]."|".$cr[1]."|".$cr[2]."|".$cr[3]."|".$cr[4]."|".$cr[5]."|".$cr[6]."|\r\n";
    	fwrite($textfile_new, $nuovariga);
            
        }else{
    	fwrite($textfile_new, $rigafile);
        }
    }
    
    
    ?>

    Almeno questo dovrebbe essere il funzionamento ma quest'ultimo script mi da errore alle righe 2 e 3 come se non trovasse quelle variabili.
    A questo script passo le variabili "numart" e "numpar" tramite link, mentre "titolo" e "passo" tramite fo

    Attenzione che queste due variabili:
    $numart = $_POST["numart"];
    $numpar = $_POST["numpar"];

    le stai passando in GET e non in POST

    quindi dorevvero essere:
    $numart = $_GET["numart"];
    $numpar = $_GET["numpar"];

    ho letto velocemente credo si aquello..fammi sapere
    ciao

  6. #6

    scusami

    si è rimbambito il sito io ti ho risposto una sola volta :-)

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    420
    Ciao, grazie per la risposta...
    In effetti prendendo le variabili con GET non mi da più quell'errore, ma resta su pagina bianca senza fare nulla...
    Io non sono sicuro che nello script "update.php" recepisca correttamente le variabili "titolo" e "passo" tramite il form... di solito per passare variabili in quel modo richiamo lo script tramite un submit e non tramite un link come in questo caso....

  8. #8
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    1 stai usando un a "CSV"
    2 puoi usare la funzione file() per estrarre i dati del file e' spezzati su array
    3 scorri l'array ed esegui l'explode rispetto al carattere "|"
    4 MAI MAI MAI MAI MAI MAI MAI MAI mescolare cicli e codice html inline!!!!!!
    4.1 fatti 1 procedura che chiami csvToArray($filename)
    4.2 fatti 1 procedura arrayToHTML($data,$opts)
    5 usa le procedure sviluppate e stampa l'output nella porzione di html.


    esempio

    file di funzioni functions_csv.php
    Codice PHP:
    function csvToArray($filename)
    {
        if( !
    file_exists($filename) )
        { return 
    false ; }

        return 
    file$filename ) ;
    }

    function 
    arrayToHTML($data,$opts=false)
    {
        if( !
    is_array($data) )
        { return 
    false ; }

        
    $separator "|" 
        
    // Gestiamo eventuali opzioni
        
    if( $opts && is_array($opts) && count($opts)>)
        {
            if( isset(
    $opts["separator"]) && trim($opts["separator"])!="" )
            { 
    $separator $opts["separator"] ; }
            
    // ALTRE EVENTUALI OPZIONI :: quelle che ti pare
        
    }

        
    $outRows "" ;
        foreach( 
    $data as $row )
        {
            
    $tmp explode$separator $row ) ;

            
    $outRows .= '<tr>' ;

            foreach( 
    $tmp as $cell )
            {
                
    $outRows.='<td>'.$cell.'</td>' ;
            }

            
    $outRows .= '</tr>' ;

        }

        
    $out '<table>'.$outRows.'</table>' ;

        return 
    $out ;


    QUINDI nel file che visualiza i dati :

    Codice PHP:
    include( "funcitions_csv.php" ) ;
    $data csvToArray("./filesPool/csv001.csv") ;
    $table "NO TABLE" ;
    if(
    $data)
    $table arrayToHTML($data) ; } 

    AS EASY AS THAT !!!!

  9. #9
    Utente di HTML.it L'avatar di jcsnake
    Registrato dal
    Jun 2010
    Messaggi
    629
    Ciao virus_101, ho notato che parecchie volte consigli di non usare codice PHP con all'interno output HTML...come mai?è un problema di programmazione logicamente errata oppure ci sono altri fattori?

  10. #10
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    si hai ragione, ti spiego subito

    in primis questa tecnica genera codice illegibile, confisionario e poco manuntenibile.
    Usare continui <?php if() : ?> <div id="" ></div> <?php endif ?> etc.... puo creare confusione se usato male.E spesso lo si usa peggio.
    Ci sono contesti dove utilizzare questa soluzione puo' essere comodo, a volte mi capita pure a me ma cerco di limitare al minimo queste casisitiche.

    In secudins, spesso chi utilizza questa tecnica la ritulilizza in funzioni o classi il che e' pure peggio del singolo sccript, in quanto generi codice inutile. Una funzione deve prendere in ingresso dei dati e restituirne altri, una procedure deve prendere in ingresso dei dati e non restituire nulla.
    Echo interni servono solo per eventuali debugs, non come norma per la generazione di contenuti(comef a wp tra le altre cose)

    Performance... ho notato delle belle cose in termini fi performance.
    Se il server e' configurato per rilasciare l'output degli script a chiamata di funzione e non a aterminazione dello script, le tue procedure possono raggiungere tempi di esecuzione fino a 100 volte superiori. Inglobando tutto con la gestione dell'output buffer puoi cmq riportare i tempi di esecuzione in linea con la configurazione del server std.

    Ci sono molti motivi per cui sconsiglio questo approccio unitamente al fatto che come anche in questo caso con la costruzione di 2 funzioni la soluzione avrebbe generato un software piu' pulito, e avresti avuto delle funzioni da poter riutilizzare anche in altri contesti, applicando invece il codice inline dentro whiles etc... rendi il codice non riutilizzabile a meno di non dovreci metterele mani sopra.

    Tutto cio' unitamente al fatto di non applicare uno dei must della programmazione il famoso "divide et impera", il fatto di spezzare il problema in sotto-problemi e risolverli singolarmente per poi procedere a asviluppare le procedure per livelli di complessità.

    Quindi non mescolare model view e controller per interderci, ma tenendoli separati nelle opportune classi/funzioni/files. Rendi il codice piu' flessibile, l'applicazione e' piu' pulita e facile da gestire, nonche' hai set di funzioni/classi riutilizzabili ove serva e non devi fare copia incolla degli scripts e via discorrendo.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.