Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    foreach...in foreach (credo)

    Ciao a tutti,

    avrei bisogno una piccola consulenza PHP.

    Spiego:
    In Flash realizzo un piccolo giochino di arredamento.
    Da Flash faccio scrivere un .txt.
    Sempre da Flash faccio inviare una mail con il riepilogo delle informazioni selezionate.

    Il file .txt è strutturato in questo modo:

    codice:
    sommier=3----Sommier XXX, XXX----misure XXX cm, colorazione XXX----0000,00 euro&piedini=3----Piedini XXX----00,00 euro&testiera=3----Testiera XXX, XXX----misure XXX cm, colorazione XXX----0000,00 euro&cuscini=1----Guanciale XXX----00,00 euro&materasso=1----Materasso XXX----misure XXX cm----000,00 euro&cuscinoaggiunto=1&totale=0000&iva=0
    Leggo il txt con il file index.php:

    codice:
    <?
    $sommier ="sommier=".$_POST["valuessommier"];
    $testiera ="testiera=".$_POST["valuestestiere"];
    $cuscini ="cuscini=".$_POST["valuescuscini"];
    $materasso ="materasso=".$_POST["valuesmaterassi"];
    $piedini ="piedini=".$_POST["valuespiedini"];
    $cuscinoaggiunto ="cuscinoaggiunto=".$_POST["valuescuscinoaggiunto"];
    $totale ="totale=".$_POST["valuestotale"];
    $iva ="iva=".$_POST["valuesiva"];
    
    $myFile = "salvataggio.txt";
    $scrivere = "$sommier&$piedini&$testiera&$cuscini&$materasso&$cuscinoaggiunto&$totale&$iva";
    $fh = fopen($myFile, 'w') or die ("impossibile aprire il file");
    
    fwrite($fh, $scrivere) or die ("impossibile scrivere sul file");
    //echo "salvato";
    fclose($fh);
      
    ?>
    Invio con questo file invia.php:

    codice:
    <? 
    $var=fopen("salvataggio.txt","r");
    $leggi=fread($var,filesize("salvataggio.txt"));
    $sss=nl2br($leggi);
    fclose($var);
    $es = explode ("&",$sss);
    foreach ($es as $articoli){ 
    	$num = strpos($articoli, "=");
    	$articoli = substr($articoli, $num);
    	if($articoli != "="){
    	$articoli = str_replace("=","
    ",$articoli);
    	$artfinali .= $articoli;
    	}
    }
    
    
    $tua_email = "XXX@XXX.XX";
    
    if (( $_POST["privacy_p"] == 1)) {
    	$privacyint = "
    Acconsente
    ";
    	}
    	else {
    	$privacyint = "
    Non acconsente
    ";
    }
    ?>
    <html>
    <head>
    <title>Modulo contatti</title>
    
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    </head>
    <body topmargin="50" margineight="50">
    <table width="400" align="center">
    <tr>
    <td>
    
    <?php
    $tipo = $_POST["tipo_p"];
    $sigla = $_POST["sigla_p"];
    $nome = $_POST["nome_p"];
    $cognome = $_POST["cognome_p"];
    $indirizzo = $_POST["indirizzo_p"];
    $citta = $_POST["citta_p"];
    $telefono = $_POST["telefono_p"];
    $email = $_POST["email_p"];
    $note = $_POST["note_p"];
    if (( $_POST["sigla_p"] == "")) {
    	$sigla = "-";
    }
    if (( $_POST["indirizzo_p"] == "")) {
    	$indirizzo = "-";
    }
    if (( $_POST["citta_p"] == "")) {
    	$citta = "-";
    }
    if (( $_POST["note_p"] == "")) {
    	$note = "-";
    }
    
    $corpo = '
    <html>
    <head>
    </head>
    
    <body>
    <table width="500" border="0" cellspacing="0" cellpadding="0" align="center">
    <tr>
        <td colspan="2">';
    	$corpo .= '
    
    ';
    	$corpo .= '</td></tr>';
    	$corpo .= '<tr><td width="50%" valign="top">';
    	$corpo .= '[img]logo_mail.jpg[/img]';
    	$corpo .= '
    
    ';
    	$corpo .= '
    
    ';
    	$corpo .= '
    
    ';
    	$corpo .= '</td></tr>';
    	$corpo .= '<tr><td width="50%" valign="top">';
    	$corpo .= 'Tipologia di cliente:';
    	$corpo .= $tipo;
    	$corpo .= '
    
    ';
    	$corpo .= '</td></tr>';	
    	$corpo .= '<tr><td width="50%" valign="top">';
    	$corpo .= 'Sigla:';
    	$corpo .= $sigla;
    	$corpo .= '
    
    ';
    	$corpo .= '</td></tr>';	
    	$corpo .= '<tr><td width="50%" valign="top">';
    	$corpo .= 'Nome:';
    	$corpo .= $nome;
    	$corpo .= '
    
    ';
    	$corpo .= '</td></tr>';
    	$corpo .= '<tr><td width="50%" valign="top">';
    	$corpo .= 'Cognome:';
    	$corpo .= $cognome;
    	$corpo .= '
    
    ';
    	$corpo .= '</td></tr>';
    	$corpo .= '<tr><td width="50%" valign="top">';
    	$corpo .= 'Indirizzo:';
    	$corpo .= $indirizzo;
    	$corpo .= '
    
    ';
    	$corpo .= '</td></tr>';
    	$corpo .= '<tr><td width="50%" valign="top">';
    	$corpo .= 'Città:';
    	$corpo .= $citta;
    	$corpo .= '
    
    ';
    	$corpo .= '</td></tr>';
    	$corpo .= '<tr><td width="50%" valign="top">';
    	$corpo .= 'Telefono:';
    	$corpo .= $telefono;
    	$corpo .= '
    
    ';
    	$corpo .= '</td></tr>';
    	$corpo .= '<tr><td width="50%" valign="top">';
    	$corpo .= 'E-mail:';
    	$corpo .= $email;
    	$corpo .= '
    
    ';
    	$corpo .= '</td></tr>';
    	$corpo .= '<tr><td width="50%" valign="top">';
    	$corpo .= 'Note:
    ';
    	$corpo .= $note;
    	$corpo .= '
    
    ';
    	$corpo .= '</td></tr>';	
    	$corpo .= '<tr><td width="50%" valign="top">';
    	$corpo .= 'Trattamento dei dati personali:';
    	$corpo .= $privacyint;
    	$corpo .= '
    
    ';
    	$corpo .= '</td></tr>';	
    	$corpo .= '<tr><td width="50%" valign="top">';
    	$corpo .= 'Articoli dei quali si richiede informazioni:
    ';
    	$corpo .= $artfinali;	
    	$corpo .= '
    
    ';
    	$corpo .= '</td></tr>';		
    	$corpo .= '</table>
    </body>
    </html>';
    	$mail_in_html .= "MIME-Version: 1.0\r\n";
            $mail_in_html .= "Content-type: text/html; charset=UTF-8\r\n";
    	$mail_in_html .= "From:XXX@XXX.XX\r\n";
    	$mail_in_html .= "BCC:$email\r\n";
    
    mail($tua_email,"XXX",$corpo,$mail_in_html);
    ?>
    
    </td>
    </tr>
    </table>
    
    </body>
    </html>
    Funziona tutto...,ma...Ecco la domanda:
    come vedete, la variabile $artfinali mi restituisce una stringa composta dai vari articoli ogni qualvolta nel leggere trova una &.

    Cosa avrei bisogno ora:
    ok la scomposizione in articoli, ma vorrei avere una voce numerata per ogni "sotto articolo".
    Es.
    articolo1:
    sottoarticolo1a: 3
    sottoarticolo2b: Sommier XXX, XXX
    sottoarticolo2c: misure XXX cm, colorazione XXX
    sottoarticolo2d: 0000,00 euro
    articolo 2:
    sottoarticolo2a: 3
    sottoarticolo2b: Piedini XXX
    sottoarticolo2c: 00,00 euro
    articolo 3:
    ...


    In questo modo posso impaginare meglio il riepilogo nella mail.
    Specifico che non vorrei toccare il .fla che è già abbastanza incasinato.

    Credo di dover inserire un altro foreach ma non sono stato in grado.

    Spero di essere stato chiaro. Scusate se sono stato prolisso.

    Chi può darmi una mano?

    Grazie e buona giornata!
    @lex!

  2. #2
    Specifico:
    ok la scomposizione in articoli, ma vorrei avere una voce numerata per ogni "sotto articolo"
    per voce intendo una variabile.

    Grazie! Ho fiducia in voi!
    @lex!

  3. #3

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    570
    aggiungi un counter all'interno del foreach per capire a quale articolo sei arrivato e fai sempre un append anche di quel numero nella stringa

    inoltre usa un extract invece di riassegnare N variabili in giro per il mondo.

  5. #5
    Ciao Nickcv e grazie per l'attenzione al mio post.

    Sono davvero impreparato in .php.
    Forse aggiungere un counter nel foreach...ce la posso fare. Intendi aggiungere una variabile che si incrementa?

    Quanto ad "append" e "extract"...non so di cosa tu stia parlando.

    Se hai modo, per favore, avresti voglia di pubblicare un esempio?

    Ti ringrazio comunque.

    Buona giornata.
    @lex!

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    570
    dunque, sì per un contatore intendo una variabile che si autoincrementa.

    questo è un append

    Codice PHP:
    <?php
    $var 
    .= ' aggiungi quest altro testo a $var';

    ?>
    per l'extract o.o
    http://lmgtfy.com/?q=php+extract

  7. #7
    Ragazzi, sono giorni che ci smadonno ma non riesco a fare passi avanti.

    Come suggerito da Nick, la variabile che si auto incrementa l'ho messa $cont.

    Ma non riesco a fare nessun extract! Non riesco ad ottenere ulteriori sottovalori dall'array (o variabile) $articoli o $artfinali

    Qualcuno sarebbe così gentile da suggerirmi cosa mettere e dove per ottenere il risultato voluto?

    Il codice è questo:
    codice:
    <? 
    $var=fopen("salvataggio2.txt","r");
    $leggi=fread($var,filesize("salvataggio2.txt"));
    $sss=nl2br($leggi);
    fclose($var);
    $cont = 0;
    $es = explode ("&",$sss);
    foreach ($es as $articoli){ 
    	$num = strpos($articoli, "=");
    	$articoli = substr($articoli, $num);
    	if($articoli != "="){
    		$cont++;
    		$articoli = str_replace("=","
    ",$articoli);
    		$artfinali .= $articoli;
    		$artfinali .= $cont;
    	}
    }
    Grazie a tutti.
    @lex!

  8. #8
    Ok, sono riuscito dall'array $artfinali a ricavare un nuovo array con gli articoli "singoli" divisi da un accapo.

    Codice PHP:
    <? 
    $var
    =fopen("salvataggio2.txt","r");
    $leggi=fread($var,filesize("salvataggio2.txt"));
    $sss=nl2br($leggi);
    fclose($var);
    $cont 0;
    $es explode ("&",$sss);
    foreach (
    $es as $articoli){ 
        
    $num strpos($articoli"=");
        
    $articoli substr($articoli$num);
        if(
    $articoli != "="){
    //        $cont++;
            
    $articoli str_replace("=","
    "
    ,$articoli);
            
    $artfinali .= $articoli;
    //        $artfinali .= $cont;
        
    }
    }
    $es2 explode ("&",$artfinali);
    foreach (
    $es2 as $articoli2){ 
        
    $num2 strpos($articoli2"----");
        
    $articoli2 substr($articoli2$num2);
        if(
    $articoli2 != "----"){
            
    $articoli2 str_replace("----","
    "
    ,$articoli2);
            
    $artfinali2 .= $articoli2;
        }
    }
    Ora credo si tratti di fare l'extract. Come dicevo ho necessità di avere una variabile singola per ogni articolo individuato così da poter impaginare il report finale a mio piacimento.
    Per ora il risultato video è questo:

    codice:
    Sommier, texture
    misure 140x195/200 cm, colorazione
    0000,00 euro
    3
    Piedini
    18,00 euro
    3
    Testiera, texture
    misure 150/160 cm
    0000,00 euro
    1
    Guanciale
    00,00 euro
    1
    Materasso
    misure 150x195/200 cm
    0000,00 euro
    0000
    0
    Grazie!
    @lex!

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