due array con le stesse chiavi.

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

Monital

Utente Attivo
15 Apr 2009
778
2
18
Salve a tutti,

rieccomi qua dopo un paio di mesi, sparito a causa di un trasloco(sono ritornato al mio paese natale :beer:),

avrei un quesito che forse mi si è rpesentato anche qualche altra volta ma scorrendo el discussioni non ho trovato proprio quello che mi serve.

mi spiego

da una pagina dove eseguo un for per mostrare più select box invio due array ad una pagina, prima di verificare con voi il codice tentavo di risolvere da solo la cosa, ccomunque dicevo ho inviato due array con le stesse chiavi ad esempio

array1=[5]=>Pippo,[6]=>Paperino,[7]=>Basettoni,[8]=>Paperone,[9]=>Topollino etc...

ed uns econdo array conle stesse chiavi epr identificarmi le città

array2=[5]=>Topolinia,[6]=>Paperopoli,[7]=>Topolinia,[8]=>Paperopoli,[9]=>Topolinia etc...

ora inserisco l'array1 nel database con isnert etc. e il problema nasce quando devo fare l'update per inserire la città, dovrei far capire che Topolinia[5] deve inserirlo dove trova Pippo[5] insomma dove l'array1 presenta la stessa chiave.

mi sono spiegato?
 
Se sono 2 array diversi in un update potresti semplicemente inserire Topolinia[5] utilizzando una condizione WHERE con Pippo[5] nel campo del database, sennò che intendevi? Posta eventualmente il codice dell'update
 
allora

PHP:
<?php 
echo "<table>
<thead>
<tr>
<th>".$words[28]."</th>
<th>".$words[80]."</th>
</tr>
</thead>";
	for($x=5;$x<=11;$x++){
	echo "\t<tr>\n";
$sqlquery = "SELECT uno.* FROM tabella AS uno JOIN tabella2 AS due WHERE uno.ID = due.ID ";
$result = mysql_query($sqlquery);
$number2 = mysql_numrows($result);
 while ($linea = mysql_fetch_array($result, MYSQL_ASSOC)) {
 $id=$linea['ID'];
 $sopra=$linea['Soprannome'];
 $cognome=$linea['Cognome'];
 $nome=$linea['Nome'];
 if($sopra!=''){
 $nomi[$id]=$sopra;
  }else{
 $nomi[$id]=$cognome." ".$nome;
 }
}
asort($nomi);//ordino l'array alfabeticamente !!usare asort non sort per mantenere corrispondenza chiave=>valore 

	echo "<td>";
echo "<select name=\"id[".$x."]\" class=\"select\" onclick=\"loadPage(this.form.elements[0])\">";
foreach($nomi as $chiave => $valore){	
echo  "<option value=".$chiave.">$valore</option>";
}
echo "</select></td>";


	echo "<td>";

	echo "<select name=\"nr[".$x."]\" class=\"select\" onclick=\"loadPage(this.form.elements[0])\">";
foreach($array as $stag){	
echo  "<option value=".$stag.">$stag</option>";
}
echo "</select>";
}
echo "</td>";
echo "\t</tr>\n";
echo "</table>";
  
?>

in pratica la seconda select dsi deve legare alla prima, per poterlo fare gli ho assegnato nome con chiave la $ del for cosi la prima selezione della prima select si chiamerà $id[1] mentre la prima selezione della seconda select si chiamerà $nr[1]

ora quando le richiamo con

PHP:
$id= isset($_POST['id']) ? $_POST['id'] : array();
$nr= isset($_POST['nr']) ? $_POST['nr'] : array();

devo poi inserire in una tabella le varie selezioni della select che devono corrispondere

e non ci riesco

ho pensato dif are l'insert prima dell'$id e poi l'up date in funzione dell $id
ma non va
 

Ciao, forse sarà un errore di trascrizione, nel codice da te riportato hai
PHP:
$number2 = mysql_numrows($result);
invece di
PHP:
$number2 = mysql_num_rows($result);
 
si effettivamente è un errore del codice . avevo dimenticato dic ancellare quella riga ma tanto quella variabile non vinee mai usata.
 

Discussioni simili