Newsgroup: it.comp.www.php
Titolo: caselel che si ripetono con nomi simili e query...

Ho una serie di campi text in una form con nome casella1, casella2, casella3
ecc.
Dovrei utilizzare i valori di questi campi in una query all'interno di un
ciclo ed ho una variabile count che mi tiene i valori 1,2,3 ad ogni
passaggio:
$count=1;
 while ($valori = mysql_fetch_array ($query))
  {
   $dati = "UPDATE `categorieofferte` SET `Ordine` = 'QUI_CI_VA_LA_CASELLA'
WHERE `Id` = '" .$valori[Id]. "' LIMIT 1 ;";
   mysql_query ($dati, $link)
   or die ("Non riesco ad eseguire la query: $dati");
   $count++;
  }
Al posto di QUI_CI_VA_LA_CASELLA cosa devo mettere per utilizzare il valore
presente in casella1, casella2 ecc.??? Ho provato una marea di soluzioni
tranne quella giusta... :( Alla fine dovrei ottenere qualcosa come
"$casella" + "$count" il primo interpretato come una stringa ed il secondo
come variabile in modo che la stringa finale sia $casellaNUMERO cosě che
nella query venga interpretata come variabile $casellaNUMERO.
Spero di essermi spiegato... :|


hai provato così?
 $dati = "UPDATE `categorieofferte` SET `Ordine` = '".$casella.$count."'
WHERE `Id` = '" .$valori[Id]. "' LIMIT 1 ;";
Cristiano

 WHERE `Id` = '" .$valori[Id]. "' LIMIT 1 ;";
Provato, non funziona :(

 ha scritto nel messaggio
news:2Z3nd.186611$b5.92...@news3.tin.it...

che vuol dire non funziona? che errore hai?
Ad esempio non specifichi da dove viene $casella.
se nel ciclo scrivi
 echo "campo: ".$casella.$count;
che succede?
Cristiano

$count=1;
while ($valori = mysql_fetch_array ($query))
{
    $nome casella="casella".$count;
    $dati = "UPDATE `categorieofferte` SET `Ordine` = '$$nome casella' WHERE


"nome_casella" non "nome casella", in entrambe le occorenze

 che succede?
Se scrivo un normale echo come hai scritto tu non funziona lo stesso nel
senso che io vorrei che stampasse qualcosa tipo:
campo: 7campo: 2campo: 9campo: 41campo: 2campo: 3 (esempio di valori
contenuti in $casella1/2/3/4/5/6)
e invece mi stampa:
campo: 1campo: 2campo: 3campo: 4campo: 5campo: 6
come se avessi scritto echo"campo: " .$count;

> "nome_casella" non "nome casella", in entrambe le occorenze
Provato anche cosě e la query che mi stampa č questa:
 UPDATE `categorieofferte` SET `Ordine` = '$casella0' WHERE `Id` = '1' LIMIT
1 ;
Porco cane.... :(((
come faccio a fargli capire che la prima $ non č un carattere ma si
riferisce al valore della variabile?

La query che risulta č cosě:
 UPDATE `categorieofferte` SET `Ordine` = '1' WHERE `Id` = '1' LIMIT 1 ;
Ma il valore contenuto in $casella1 non č '1'... :(

hai usato il doppio $$ cioč $$nome_casella o solo $nome_casella?
Comunque se usassi come nome di tuttu le caselle casella[] potresti fare
cosi:
while ($valori = mysql_fetch_array ($query))
{
  foreach($_POST['casella']as $casella_tmp)
  {
     $dati = "UPDATE `categorieofferte` SET `Ordine` = '$casella_tmp' WHERE


 }
Per usare come nome di tutte le caselle casella[] come dovrei fare? Io
adesso le creo cosě:
<input type='text' name='casella" .$count. "' size='3' value='"
.$valori["Ordine"]. "'>
Ma per metterle in un array come faccio?

per esempio un ciclo con dentro
<input type='text' name='casella[]' size='3' value='"> .$valori["Ordine"].
"'>
name='casella[]'

ti posto il codice ustato per il test elimina i commenti per le query e la
riga che ho ustao per la visualizazione
<form NAME="form1" METHOD="post" ACTION="<?php echo $_SERVER['PHP_SELF'];
?>">
<input NAME="casella[]" TYPE="text" VALUE="">
<input NAME="casella[]" TYPE="text" VALUE="">
<input NAME="submit" TYPE="submit" VALUE="submit">
</form>
<?php
if(isset($_POST['casella']))
{
/*
while ($valori = mysql_fetch_array ($query))
{
*/
foreach($_POST['casella'] as $casella_tmp)
{
$dati = "UPDATE `categorieofferte` SET `Ordine` = '$casella_tmp' WHERE `Id`
= '" .$valori[Id]. "' LIMIT 1 ;";
/*
mysql_query ($dati, $link)
or die ("Non riesco ad eseguire la query: $dati");
}
*/
echo $dati,"<br>"; // questo va via dopo che hai finito
}
}
?>

Perfetto con casella[] funziona alla grande :) L'ho modificato così per
adattarlo al mio scopo (senza il foreach):
$count=0;
if(isset($_POST['casella']))
 {
  while ($valori = mysql_fetch_array ($query))
  {
   $casella_tmp = $casella[$count];
   $dati = "UPDATE `categorieofferte` SET `Ordine` = '$casella_tmp' WHERE
`Id` = '" .$valori[Id]. "' LIMIT 1 ;";
   mysql_query ($dati, $link)
   or die ("Non riesco ad eseguire la query: $dati");
   $count++;
  }
 }
Grazie mille!!! Da solo non ci sarei mai arrivato, non ero nemmeno a
conoscenza di questa possibilità...