array non riconosciuta fuori dal foreach

  • Creatore Discussione Creatore Discussione Monital
  • Data di inizio Data di inizio

Monital

Utente Attivo
15 Apr 2009
778
2
18
vi starete chiedendo: ancora??????????

ebbene si.

preciso che mi rivolgo qua ed in giro quando proprio sono alla frutta e dopo non aver trovato neinte in giro

premesso ciò il problema che ho riscontrato è che la variabile array fuori dal foreach la perdo

mi spiego

ho un array ricavato da un form action. la richiamo

con

PHP:
$variabile=$_POST['variabile'];

la passo in foreach
PHP:
foreach($variabile as $var){

.....varie istruzioni....
}
fin qui tutto ok
se l'array era pippoplutotopolino stampando $var."<br>" mi da
pippo
pluto
topolino

però se faccio an cosa del genere
PHP:
foreach($variabile as $var){

.....varie istruzioni....
}

update tabella set $var

mi mette solo topolino

avevo pensato di upparla nel database per poi riprenderla in u altro file incluso nel file principale allora ho provato a inserirla direttamente

PHP:
foreach($variabile as $var){

.....varie istruzioni....
}

//....altri dati con altre istruzioni....

echo $var;

mi da solo topolino cioè l'ultimo elemento dell'array.

come mai sta cosa?

diemnticavo ho fatto anche un altra prova ho inviato le varie variabili ad un terzo file dove poi andavoa d incluidere l'ultimo
ho riforeachato tutte le variabili(sono 3 e tutte risultati di array)sul file nuovo
quindi
PHP:
foreach($variabile as $var){

foreach($variabile1 as $var1){

foreach($variabile2 as $var2){

}
}.
}
echo $var
echo $var1
echo $var 2

ma niente

ora che sto imparando l'uso degli array e delle caselle multiple inizia a piacermi :love:
 
È normale che stampi solo l'ultimo valore dell'array. Se vuoi avere tutti gli elementi concatenati puoi fare così:
PHP:
$variabile = array('pippo', 'pluto', 'topolino');
echo implode(',', $variabile);
Che visualizzerà:
Codice:
pippo,pluto,topolino

Per maggiori informazioni dai un'occhiata alla documentazione della funzione implode().
 
È normale che stampi solo l'ultimo valore dell'array. Se vuoi avere tutti gli elementi concatenati puoi fare così:
PHP:
$variabile = array('pippo', 'pluto', 'topolino');
echo implode(',', $variabile);
Che visualizzerà:
Codice:
pippo,pluto,topolino

Per maggiori informazioni dai un'occhiata alla documentazione della funzione implode().

ho usato implode ma non mi davaa niente in pratica devo rimmeterlo nell'array

provo
 
ho trovato cosa sbagliavo però nons o come risolvere

cmq in pratica io avevo fatto
PHP:
foreach($variabile as $var){
$newvar=$var."(".$v).";
}

quindi quando andavoa inserire o ad usare $newvar in altri richiami andava in pappa

difatti ho provato a richimare fuori dalla foreach $variabile e va

allora $v è un dato fisso in abse a dove è piazzata $variabile

cmq sia ho risolto così grazie alla tua intuizione
la fase rpecedente l'ho lasciata così perchè mis erve così in quel file ed invece epr la registrazione ho usato
PHP:
$newvar2=implode(",",$variabile)."(".$v.")";

così me la chiama giusta

ora dovrò solo provare a updatarla nel database

quindi mi sa ritorno a breve in questo topic
:asd:
 
allora riguardo le variabili provenienti dalla select multiple funziona perfettamente ma non da quelle provenienti dal input text del topic precedente

in pratica la variabile $x ha il valore isnerito dall'utente 1-2-3 etc.
l'ho associato al'id(come da istruzioni precedenti) e ricavato il nome per ogni casella con valore diverso da 0
PHP:
$variante=array();
$sql = "SELECT * FROM tabella where ID='{$id1}' order by Nome";
$result = mysql_query($sql);
while ($lin = mysql_fetch_array($result, MYSQL_ASSOC)) {
$variante[]=$lin['Nome'];
}

foreach($variante as $vat){
$finale=$vat."(".$value1.")";
echo $finale;
}
praticamente fin qua funziona tutto ma dopo il foreach ho incluso una pagina a cui serve la lista dei nomi cioè $finale ho provato ricreando l'array facendo implode sia di $finale che di $variante che di $vat mi restituisce solo l'ultimo valore anche usando implode

niente di niente



deve essere sicuramente una sciocchezza indi confido in voi
 
Mi sorge un dubbio. Il tuo script seleziona dalla tabella i record il cui campo ID corrisponde ad un determinato valore. Se hai seguito la logica, ogni record dovrebbe avere un campo ID diverso, perché serve per identificarlo e distinguerlo dagli altri. Quindi l'array $variante conterrà sempre un solo record, perché estrarrà solo il record con quell'ID.
 
Mi sorge un dubbio. Il tuo script seleziona dalla tabella i record il cui campo ID corrisponde ad un determinato valore. Se hai seguito la logica, ogni record dovrebbe avere un campo ID diverso, perché serve per identificarlo e distinguerlo dagli altri. Quindi l'array $variante conterrà sempre un solo record, perché estrarrà solo il record con quell'ID.

mi lasci perplesso perchèio quando vado a stampare $variante sempre nel foreach eprò, mi stampa la lista mentre come esco dalle graffe stampa solo l'ultimo

a rigor di logica credo di aver compreso cosa dici ma allora come faccio so incatenato? conta che devo riutoilizzare sia $variante che $value (il vaore della cassella di testo) e fuori dalla foreach

:incazz:
 
Il fatto è che io non ho ancora capito bene cosa vuoi fare. Puoi rispiegarmelo?

allora

ho una variabile che provviene da qui

PHP:
<td height="16px">
    <center>
        <?php
        $sql = "SELECT * FROM {$tabella} where Provincia = '{$provincia}' order by Nome";
        $result = mysql_query($sql);

        while ($row = mysql_fetch_assoc($result)) {
            echo "<input type=\"text\" name=\"marcaB[{$row['ID']}]\" style=\"font-size: 8pt; color:#000000; height:16px; width:30px;\" value=\"0\" /> <br />";
        }
        ?>
    </center>

ora ho proceduto così
PHP:
if (count($marcaB)) {
    foreach ($marcaB as $id1 => $value1) {
		if($value1!=0){
$recfcasa=array();
$sql = "SELECT * FROM tabella where ID='{$id1}' order by Nome";
$result = mysql_query($sql);
while ($lin = mysql_fetch_array($result, MYSQL_ASSOC)) {
$recris[]=$lin['Nome'];
}

$inifcasa= substr($fc, 0, 2);
foreach($recris as $mfc){

echo $mfc."(".$value1." ".$inifcasa.")";

$marcatop=$mfc."(".$value1." ".$inifcasa.")";


}

	}

    }
}

adesso quando faccio l'echo di $mcf etc. mi stampa la lista come volevo, il problema nasce dal fatto che i dati contenuti in $mcf o $marcatop mi servono per il file successivo.

preciso che l'ho strutturato così

ho paginaprincipale.php
PHP:
include('pagina1.php');
include('pagina2.php');
include('pagina3.php');

tutto il codice di cui sopra è in pagina2.php mentre in pagina 3 php faccio lavorare lo script su le variabili presenti nei due file precedenti, questo eprchè ho voluto evitare la trasmissione dei dati con hidden.(coa cmq che ho provato ma non funziona).

ora se eseguo un'istruzione qualunque all'interno del foreac della pagina2 sulla variabile $mcf è tutto ok ma dato che la pagina 3 è successiva e quindi fuori dal foreach non mi riconosce + $mcf o $marcatop. mi stampa/inserisce/elabora solo l'ultimo elento di $mcf il resto niente.

a me serve la variabile intera

ho provato anche ad inviare i dati tramite un hidden su un altra pagina ma non la richiama con $_POST


spero die ssere stato più chiaro
 
forse ci sono

PHP:
foreach($recris as $mfc){

echo $mfc."(".$value1." ".$inifcasa.")";

$marcatop=$mfc."(".$value1." ".$inifcasa.")";


}

ho fatto na amrea di prove di tutte le maniere ho rpovato a riodrinare l'array con sort poi resettarlo e con un ciclo while each ho provato a riassegnargli le chiavi però poi mi so accorto di una cosa

selezionando due caselle di teste e recuperando il nome tramite la select come da codice sopra, con foreach($recris as mc) $mc elenca i due nomi ma facendo

print_r($recris) mi da sto risultato

array([0]=>Nome1)array([0]=>Nome2) quindi con le stesse chiavi
in pratica in $recris ci sono ranti array singoli quyante soeno le caselle diverse da 0 non sapevo si potesse fa e comunque come faccioa scinderli?
 
Ultima modifica:

Discussioni simili