Invio Email usando Array associativo

Monital

Utente Attivo
15 Apr 2009
778
2
18
Intanto buonasera a tutti

scrivo anche qui sperando che qualcuno possa aiutarmia risolvere un semplice problema che mi sta facendo dannare

pongo lo script

Codice:
<?php   // apro in lettura il file  
 $fp =  fopen("email.txt", "r");   
while(! feof($fp)) {     
// leggo una riga del file   
  $row = fgets($fp, 4096);     
// creo un  array dei campi della riga     
// usando il carattere , come separatore     
 $field =  split(",", $row);     
$field[0]=$nome;     
$field[1]=$email;   
  if ($utentex=$nome ) { 
$nome=$email;     
}  
 }   
 fclose($fp);

dopo il comando close c'è tutto il php per inviare l'email dove in $indirizzo mettendo un indirizzo email l'email viene spedita regolarmente

in pratica in $indirizzo invece di mettere l'indirizzo email voglio inserire la variabile $email che deve essere ricavata dallo script quotato......in pratica lo script quotato apre un file txt diviso in
Utentex,indirizzoemailx
utentey,indirizzoemaily

la variabile $utentex e presenet in un menù a tendina e proviene da un altra pagina php

devo dire che ho fatto molte prove tra cui una prova per verificarla con
Codice:
echo $nome
dopo la funzione if e così mi stampa a video il nome dell'utente x ma se metto
Codice:
echo $email
niente mi dà pagina bianca

quindi sono convinto che sbaglio la sintassi dell'array associativo ho fatto molte prove

Codice:
$array[$nome]=$email
$ciao=array($nome=$email)
etc.
ma niente di niente

sono un neofita del php e sopratutto autodidatta ma la sintassi dell'array con l'uso delle variabili non è molto chiara

qualcuno saprebbe aiutarmi a sistemare il codice?

Grazie dell'attenzione e spero che qualcuno possa aiutarmi
 

jan267

Utente Attivo
6 Mar 2003
1.950
2
38
35
Milano
twitter.com
PHP:
$field[0]=$nome;
$field[1]=$email;
Uno degli errori è sicuramente quì... quindi una cosa per volta.
Devi invertire l'ordine di assegnamento.
In php l'ordine è: $nuova_variabile = $variabile_esistente quindi:
PHP:
$nome = $field[0];
$email = $field[1];

E non mi stancherò mai di dirlo: INDENTARE IL CODICE.
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
PHP:
$field[0]=$nome;
$field[1]=$email;
Uno degli errori è sicuramente quì... quindi una cosa per volta.
Devi invertire l'ordine di assegnamento.
In php l'ordine è: $nuova_variabile = $variabile_esistente quindi:
PHP:
$nome = $field[0];
$email = $field[1];

E non mi stancherò mai di dirlo: INDENTARE IL CODICE.

jan sei come una luce nel buio :beer:

ok questa cosa che hai spiegato mi sarà molto utile per il futuro, ho già invertito come da te suggerito però adesso se nella parte finale del codice per verificare se funziona inserisco

Codice:
echo $email;     
}  
else{ 
echo $nome;     
}  
 }

ci sono due cose che non funzionano

A)finalmente riesco a visualizzare anche il $field[1] però non me lo visualizza in funzione del $nome ma vedo tutta la colonna stessa cosa dicasi del nome

il database è strutturato così

Codice:
utentex,indirizzoemailx
utentey,indirizzoemaily

B) c'è da dire che nella pagina1.php ci sono 3 menù a tendina in uno c'è la lista dell'utentew che da un altro menù inserisce dei dati e decide di inviarli tramite terzo menù a utentex quindi facendo delle prove ho notato che anche quando apro solo l'utentew mi appare la colonna degli indirizzi mentre lo script deve visualizzarmi solo l'email (che poi andrà ad inserire in $indirizzo dello script per inviare l'email)dell'utentex

Può darsi che non vada bene il comando split ma provando con explode mi fà la stessa cosa

Spero in un tuo aiuto per sistemare sta cosa dell'array

P.s.. Cosa intendi epr INDENTARE il codice?

Grazie per l'aiuto :beer:
 

jan267

Utente Attivo
6 Mar 2003
1.950
2
38
35
Milano
twitter.com
Passo due.
Elimina:
PHP:
if ($utentex=$nome ) { 
$nome=$email;     
}
e sostituiscilo con:
PHP:
$array_utenti[$nome] = $email;
oppure con:
PHP:
$array_utenti[] = array('nome' => $nome, 'email' => $email);
I codici sono differenti ma fanno più o meno la stessa cosa... dipende dalle tue esigenze.

Il primo codice lo puoi richiamare con:
PHP:
$array_utenti['nome_del_tuo_utente']
e ti restituisce l'email.

Nel secondo caso lo richiami con:
PHP:
$array_utenti[0]['nome']
e restituisce il nome oppure con:
PHP:
$array_utenti[0]['email']
e restituisce l'email.
Nel secondo caso al posto dello 0 (zero) devi mettere l'indice dell'array (che parte da 0).

Non l'ho testato ma dovrebbe funzionare...
Chiaramente puoi utilizzare e quindi sostituire quel codice con entrambi i modi che ti ho dato... l'importante è che cambi il nome a una delle due variabili perchè altrimenti si sovrappongono.

Per quanto riguarda il "cosa intendi per indentare il codice"... ti consiglio di leggere questo articolo: Indentazione.
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
:beer::beer::beer::beer::beer::beer::beer::beer::beer:

funziona sei un grande

però ti prego stammi dietro altri due minuti

A) quando faccio echo $array etc

mi visualizza più volte l'indirizzo email dell'utente segnato come mai?

es: [email protected]@[email protected]@xxxx.it

B)al posto di $array_utenti['nomeutente'] devo mettere $arrai_utenti[$variabile] dove la $variabile altro non è che $utentex proveniente da pagina1.php provando però mji dà pagina bianca e non mi visualizza l'email sai dirmi come mai?

Grazie grazie grazie ero da due settimane qua sù mi stai risollevando il morale :beer:
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
Strano... potresti postare l'url del file?
Se è in locale... caricalo su qualche server!


in utente2 clicca utentex

poi riguardo al punto B

la sintassi $array_utenti[$variabile] è corretta? se si come mai mi visualizza pagina bianca ?

devo forse richiamare la variabile con $utentex=$_POST[$utentex] ? se si in quale riga va inserita?

@ eliminato l'indirizzo visto che ho capito il motivo
 
Ultima modifica:

Monital

Utente Attivo
15 Apr 2009
778
2
18
in utente2 clicca utentex

poi riguardo al punto B

la sintassi $array_utenti[$variabile] è corretta? se si come mai mi visualizza pagina bianca ?

devo forse richiamare la variabile con $utentex=$_POST[$utentex] ? se si in quale riga va inserita?

ok trovato il problema

in pratica sistemato il discorso della variabile facendo delle prove ho trovato il perchè ripete l'indiirzzo email o meglio in che modo pesa l'indirizzo

esempio:

nel file email.txt mettiamo caso ci siano 10 rige e l'utente x è alla 1^riga
lo script ripete l'indirizzo email fino alla fine del file per tot righe ossia 10 volte mentre se viene selezionato l'utente y che è alla 7^riga lo script ripete l'indirizzo email fino la fine del file quindi 3 volte e così via

probabilmente dipende dalla while(!feof) che legge l'intero file almeno credo

come si può ovviare al problema?


come si può ovviare al problema?
 

jan267

Utente Attivo
6 Mar 2003
1.950
2
38
35
Milano
twitter.com
Prova a usare questo codice:
PHP:
$file = file('email.txt');
for ($i = 0; count($file) > $i; $i++) {
  $file[$i] = str_replace("\n", '', $file[$i]);
  $field = explode(',', trim($file[$i]));
  $nome = $field[0];
  $email = $field[1];
  $array_utenti[] = array('nome' => $nome, 'email' => $email);  
}
Non l'ho testato eh...
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
Prova a usare questo codice:
PHP:
$file = file('email.txt');
for ($i = 0; count($file) > $i; $i++) {
  $file[$i] = str_replace("\n", '', $file[$i]);
  $field = explode(',', trim($file[$i]));
  $nome = $field[0];
  $email = $field[1];
  $array_utenti[] = array('nome' => $nome, 'email' => $email);  
}
Non l'ho testato eh...


:crying::crying:

niente dà lo stesso risultato e ripete l'indirizzo email con lo stesso criterio

credo che si dovrebbe modificare la while dandogli l'istruzione di fermarsi a leggere finchè trova la riga contenente l'utente x ho letto qualcosa in giro mi rimetto in ricerca se poi magari trovi qualcosa te fammi sapere

:beer:
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
Mi spiace, ma quel codice l'ho appena testato e funziona perfettamente.
Contenuto del file email.txt: Se si richiama $array_utenti con entrambi i modi che ti ho segnalato funziona.

Se non ti funziona, cerca di spiegarti meglio, così magari si cerca di capire di che cosa sei in cerca.

:beer::beer:

sei un GENIO avevi ragine funziona avevo sbaglito ad indirizzare il file

scusami avevo creato una nuova cartella ma l'action del form della pagina1.php era ancora indirizzata alla cartella vecchia

GRAZIE se eri donna ti mandavo un bacio :tifoso: erano diversi giorni se non settimane che ci lavoravo su

lo script nel complesso sarà molto più articolato quindi spero di poter contare nel tuo aiuto anche nelle prossime problematiche


intanto adesso provo ad accorpare questo script a quello epr inviare l'email sperando mi riconosca la variabile $email per la scelta dell'indirizzo

ciao e GRAZIE ancora
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
a proposito per la felicità ho dimenticato uina cosa forse la più importante:

potresti spiegarmi concettualmente come funziona quel codice?
 

jan267

Utente Attivo
6 Mar 2003
1.950
2
38
35
Milano
twitter.com
La funzione file() apre un file e crea un array con ogni singola riga del file.
I ciclo for lavora su ogni riga del file singolarmente.
La funzione replace() l'ho usato per evitare che ci sia l'a-capo.
La funzione explode() separa una stringa tramite un carattere a scelta.
E il resto te l'avevo già spiegato prima!
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
La funzione file() apre un file e crea un array con ogni singola riga del file.
I ciclo for lavora su ogni riga del file singolarmente.
La funzione replace() l'ho usato per evitare che ci sia l'a-capo.
La funzione explode() separa una stringa tramite un carattere a scelta.
E il resto te l'avevo già spiegato prima!

grazie sei proprio un GRANDE quindi all fine questo codice val bene per altre occasioni e si potrebbe usare anche epr popolare una select.
 

jan267

Utente Attivo
6 Mar 2003
1.950
2
38
35
Milano
twitter.com
Ovviamente sì!
Basta cambiare il codice...
Se hai bisogno di altro chiedi pure... (dopo aver fatto magari una bella ricerchina su google :p) ovviamente aprendo un'altra discussione e non in questa!

Bye :byebye:
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
Ovviamente sì!
Basta cambiare il codice...
Se hai bisogno di altro chiedi pure... (dopo aver fatto magari una bella ricerchina su google :p) ovviamente aprendo un'altra discussione e non in questa!

Bye :byebye:

tranquillo non è mia abitudine cercare la pappa pronta diceva mio nonno:

"Se trovi un affamato pesca per lui e lo avrai sfamato per un giorno insegnagli a pescare e lo avrai sfamato epr sempre"

quindi cerco sempre di arrivarci da solo poi ovviamente facendo le cose solo epr passione e non per lavoro e non avendo studiato il php ogni tanto mi serve uno spunto

oggi te me ne hai dato da mangiare :mavieni:

thank
 
Discussioni simili
Autore Titolo Forum Risposte Data
M Invio dati database via email php PHP 0
Z PHP.INI - STMP per invio email con PHP Server Dedicati e VPS 0
M Invio di email PHP 0
Cosina Upload multiplo con invio allegati per email PHP 0
S Invio email da form PHP 8
max1974 Invio email PHP 12
F Estrazione Email di persone selezionate e attive / facebook + invio di massa! Annunci servizi di Social Media Marketing 0
ANDREA20 [PHP] Modulo email invio PHP 5
Tommy03 Errore invio email con PHP PHP 1
C [PHP] Problema Invio Email Elseif PHP 2
Tommy03 Invio email con PHP PHP 3
bubino8 [WordPress] Invio email da sito WordPress 2
A [PHP] Invio email quando viene visitata una pagina PHP 7
L Settaggio parametri per invio email Ip Cam Sricam IP Cam e Videosorveglianza 13
B MYSQL-INVIO EMAIL O MESSAGGIO AVVISO MySQL 0
Matteo Lorenzon [PHP][WORDPRESS] Form in Wordpress, creazione PDF con dati del form ed invio tramite email WordPress 1
R PROBLEMA INVIO EMAIL AL CAMBIO DI STATO ORDINE E-Commerce 1
ANDREA20 [MySQL] [PHP] Invio email ordine MySQL 12
ANDREA20 [PHP] Non riesco ad impostare reset password invio via email PHP 6
Y INVIO AUTOMATICO EMAIL CON PHP PHP 4
ANDREA20 [PHP] Invio ordine via email PHP 14
P problemi invio email con phpmailer PHP 47
L invio smtp con phpmailer - problema invia due volte la email allo stesso utente PHP 0
Monital Invio email con dati di una funzione JS PHP 1
A Invio Email alla connessione di un Client su Lan Reti LAN e Wireless 2
B Invio email multiple PHPMAILER PHP 3
asevenx problema invio email tramite form PHP 3
Y Invio email automatico database background Database 1
S creazione test con invio risposta a una email prescelta PHP 4
A invio email con immagine inline senza clips PHP 0
J Scritp invio email convalida indirizzo PHP 13
R invio email php con allegato PHP 1
P Problemi con phpmail ed invio email PHP 0
A invio email dove sbaglio PHP 1
Task Mc Problema form invio email da sito ç__ç PHP 4
Z Invio email PHP 6
J while dentro while per invio email blocchi PHP 0
L Aiuto per ultimazione form invio email PHP 3
T invio email Classic ASP 4
F Problema form invio email php PHP 3
F form invio email php PHP 5
N Invio email a blocchi PHP 9
A problema con l'invio della password tramite email PHP 23
P Eroore su invio email PHP 6
P Invio email e richiamo di una funzione PHP 11
V invio automatico email PHP 11
P Problema invio email da php PHP 9
E Invio email (era: phpmailer) PHP 52
S Invio Email Tramite Php PHP 2
M invio email con più di un allegato PHP 1

Discussioni simili