Associare caselle di testo ad array

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

Monital

Utente Attivo
15 Apr 2009
778
2
18
Questa è dura

spiego brevemente

estraggo una lista di nomi daun database

PHP:
<td>
<?php
$nomi=array();
$sql = "SELECT * FROM $tabella where Provinca='$provincia'  order by Nome";
$result = mysql_query($sql);
while ($lin = mysql_fetch_array($result, MYSQL_ASSOC)) {
$nomi[]=$lin['Nome'];
}
foreach($nomias $mfc){
echo $mfc."<br>";
}
?>
</td>

ora vorrei isnerire delle caselle di teste affianco ho fatto an cosa del genere

PHP:
<td height="16px"><center>
<?php
$sql = "SELECT ID FROM $tabella where Provincia='$provincia' order by Nome";
$result = mysql_query($sql);
$number = mysql_numrows($result);
  for ($i = 0; $i<$number; $i++) {
echo "<INPUT TYPE=\"text\" NAME=\"marcaB$i\"  style=\" font-size: 8pt;color: #000000; height:16px; width:30px;\" value=\"0\"><br>";
  }
  ?>
</td>

iltutto è dentro un form

ora a prescidnere che nonr iesco a richiamare la variabile marcaB perchè non so come fare ma sopratutto come faccioa d associare la casella di testo al nome corrispondente?

nella casella di testo devo emtte dei numeri quindi ad ogni nome poi deve risultare un numero

qualcuno mi aiuta?
 
Allora puoi fare una cosa del genere:
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>
</td>
A questo punto nella pagina che processa i dati puoi scrivere:
PHP:
<?php
$marcaB = isset($_POST['marcaB']) ? $_POST['marcaB'] : array();

if (count($marcaB)) {
    foreach ($marcaB as $id => $value) {
        // $id rappresenta l'ID del record nella tabella
        // $value il valore che l'utente ha immesso
    }
}
?>
E puoi eseguire tutte le operazioni che vuoi.
 
Nella tabella da cui estrai le informazioni non è presente anche un campo ID univoco che si incrementa?

quando ho letto questo ho già festeggiato, sapevo che avevi la soluzione

sei un grande ale non mi stancherò mai di dirlo

sei che sei mi spieghi o mi rimandi dove posso capire l'uso dei simboli?

tipo

? : %

grazie ancora funziona tutto egregiamente

ps. ah ale na domanda e se per effettuare un controllo vorrei fare la somma di $_POST['marcaB'] per veere se il totale dei numeri corrisponde ad un numero totale che ho già
 
Ultima modifica:
scusate ho provato as ostiuire alla casella di teso le caselle checkbox cambiando ovviamente il type però non funziona uguale comemai?

il principio dovrebbe essere lo stesso
 
Puoi farmi vedere come hai modificato lo script?
semplicemnte ho sostituito da text a checkbox
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=\"checkbox\" name=\"marcaB[{$row['ID']}]\" style=\"font-size: 8pt; color:#000000; height:16px; width:30px;\" value=\"0\" /> <br />";
        }
        ?>
    </center>
</td>

non è così vero? :rolleyes:
 
ale ho risolto in altra maniera molto più seplice

usando una select multipla quindi non ti affannare se poi la sai già la risposta postala lo stesso eprlomeno se ricapita

ah mmi sono documentato su

PHP:
isset($_POST['marcaB']) ? $_POST['marcaB'] : array();

in pratica significa se postmarca esiste recupera la variabile e assegnagli l'array
più o meno
 
Scrivere:
PHP:
$marcaB = isset($_POST['marcaB']) ? $_POST['marcaB'] : array();
Equivale a scrivere:
PHP:
if (isset($_POST['marcaB'])) {
    $marcaB = $_POST['marcaB'];
}
else {
    $marcaB = array();
}
In questo modo la variabile $marcaB sarà sempre un array.
 
Ritorno qua perchè la'rgomento credo sia lo stesso

dato che non ne vengo a capo con questo sistemo eprchè non riesco più a riprendere le variabili ricavate dal foreach

ho pensato di fare una cosa per aggirare il problema

allora l'utente mette un numero (ad esmpio 3) la variabile si chiama $numero

nella pagina successvia richiamo $numero e poi in un form ho fatto questo

PHP:
<?php
for($i=0;$i<$numero;$i++){
echo "<input type=\"text\" name=\"nomi$i\" size=\"20\" value=\"\" /> <br />";
        }
        ?>

ora in qeusta pagina si aprono correttaemten tante input text pari a $numero

ora se l'utente inserisce inq ueste 3

pitto
topolino
pluto

in un'altra pagina non riesco più a richiamare $nome con $nome=$_POST['nome']
ho fatto un var dump ma mi risulta vuota(NULL)

come posso fare?
 
allora credo dia ver risolto la prima fase ciclando

$marcaB=$_POST['marcaB'];

ma anche inq uesto caso il uttto funziona se resto nel ciclofor

aldifuori la variabile mi restituisce sempre valore nullo

mi sto iniziando a spazientire
 
Il campo non si deve chiamare nomi$i ma nomi[$i], perché è l'indice di un array.

giusto

però il problema mi resta perchè quando lo vado a richiamare con post per avere i valori devo sempre usare foreach e fuori dl foreach non mni fa vedere tutti gli elemnti ma solo lì'ultimo

dato che dopo aver utilizzato la variabile nel file inserisco con include un altra pagina ed a questa pagina serve $nomi come fare?
 
ti faccio due esempi

PHP:
 $rc=$_POST['rc'];
for($i=0;$i<$rc;$i++){
$marca=$_POST['marca'.$i];
echo $marca;
}

FUnziona mi stampa (nel caso ho selezionato 3 caselle) i 3 nomi

PHP:
 $rc=$_POST['rc'];
for($i=0;$i<$rc;$i++){
$marca=$_POST['marca'.$i];
}
echo $marca;

non mi stampa più le 3 ma solo l'ultimo

mentre per il foreach stessa cosa

PHP:
foreach($marca as $marprova){
echo $marprova;
}

mi stampa giusto el variabili
mentre

PHP:
foreach($marca as $marprova){
}

echo $marprova;
nla perde quindi se io dopo includo un file che deve scrivermi $marprova nel database mi scrive solo l'ultimo
 
Ripeto: questo è normale in PHP. Mi sembra ovvio che la variabile assume il valore dell'ultimo elemento. Basta che esegui il foreach nel file che includi... non vedo quale sia il problema.


cioè dici che eseguendo il foreach nel file incluso e riprende la variabile? proverò
 

Discussioni simili