Si
Si
"durante i primi 5 miuti di pioggia nel bosco c'è ancora asciutto, poi quando smetterà di piovere nel bosco cadranno gocce per 5 minuti.....la natura ha un'ottima memoria..."
http://www.kumbe.it
Nik ti chiedo di mantenere un certo contegno nei miei riguardi, quindi non mandarmi a quel paese... la prima soluzione non mi ha portato risultati. Sembrerebbe che ogni $stato_articolo sia sempre uguale a "Aggiungi". Posto il codice.
Ho visualizzato le query e funzionano tutte su mysql.codice:$result=mysql_query("SELECT * FROM articoli".$where."ORDER BY descrizione1 ASC LIMIT $from, $max_results "); /* * step1 * mi trovo tutti gli articoli ordinati negli ultimi 14 giorni dall'agente */ $sql1="SELECT codice_articolo FROM ordini WHERE id_agente = ".$_SESSION['cod']." AND data_inserimento >= '".$data_2sett_ant."' GROUP BY codice_articolo"; // connessione al database server $username="user"; $password="psw"; $database="ORDINI"; $conn=mysqli_connect(localhost,$username,$password,$database); $cache_articoli_ordinati=array(); foreach ($conn->query($sql1) as $row) { $cache_articoli_ordinati[$row["codice_articolo"]]=$row["codice_articolo"]; } /* * step 2 * mi trovo tutti gli articoli nella tabella di servizio per questo agente */ $sql2="SELECT codice_articolo FROM ordini_temp WHERE id_agente = ".$_SESSION['cod']." GROUP BY codice_articolo"; $cache_articoli_servizio=array(); foreach ($conn->query($sql2) as $row) { $cache_articoli_servizio[$row["codice_articolo"]]=$row["codice_articolo"]; } /* * step 3 * estraggo tutti gli articoli nella tabella articoli */ $sql3="SELECT * FROM articoli".$where."ORDER BY descrizione1"; $cache_articoli=array(); foreach ($conn->query($sql3) as $row) { $cache_articoli[$row["codice_articolo"]]=$row["codice_articolo"]; } /* * step 4 * quando ciclo sui vari articoli dell'anagrafica decido in quale delle 3 situazioni mi trovo */ while ($i = mysql_fetch_array($result)) { foreach($cache_articoli as $codice_articolo){ if(isset($cache_articoli_servizio[$codice_articolo])){ $stato_articolo="Aggiunto"; }else if(isset($cache_articoli_ordinati[$codice_articolo])){ $stato_articolo="Non Ordinabile"; }else{ $stato_articolo="Aggiungi"; } } echo"<tr><td><div align='center'>".$i['codice_articolo']."</div></td><td>".$i['descrizione1']."</td><td>".$i['descrizione2']."<td>".$stato_articolo."</td></tr>"; } $i++;
$result è la mia query che fa parte della paginazione. Temo di essermi incasinato nella nidificazione per la creazione di ogni singola riga degli articoli.
Ciao
effettivamente c'è un pò di confusione.
Gli step da seguire in ordine logico sono i seguenti:
1 - apri la connessione al database
2 - esegui le query e ti crei la struttura dati di appoggio
3 - cicli sugli articoli e generi la stringa html
Attualmente ci sono un pò di cose confusionali, come ad esempio:
- crei una connessione con le funzioni native di mysql ma poi ne fai il fetch usando l'esempio che ti avevo dato io (che però usava PDO)
- ci sono dei foreach innestati che non servono
- lo step 4 non serve
Questo dovrebbe essere il codice corretto: (nota: non ho modo di testarlo, quindi seguine la logica)
<?php
$id_agente="1";
$db_user="user";
$db_pass="psw";
$db_name="ORDINI";
$db_host="127.0.0.1";
$conn = new PDO("mysql:host=$db_host;dbname=$db_name",$db_user ,$db_pass);
/*
* step1
* mi trovo tutti gli articoli ordinati negli ultimi 14 giorni dall'agente
*/
$sql1="SELECT codice_articolo FROM ordini WHERE id_agente = ".$id_agente." AND data_inserimento >= '".$data_2sett_ant."' GROUP BY codice_articolo";
$cache_articoli_ordinati=array();
foreach ($conn->query($sql1) as $row) {
$cache_articoli_ordinati[$row["codice_articolo"]]=$row["codice_articolo"];
}
/*
* step 2
* mi trovo tutti gli articoli nella tabella di servizio per questo agente
*/
$sql2="SELECT codice_articolo FROM ordini_temp WHERE id_agente = ".$_SESSION['cod']." GROUP BY codice_articolo";
$cache_articoli_servizio=array();
foreach ($conn->query($sql2) as $row) {
$cache_articoli_servizio[$row["codice_articolo"]]=$row["codice_articolo"];
}
/*
* step 3
* estraggo tutti gli articoli nella tabella articoli
*/
$sql3="SELECT * FROM articoli".$where."ORDER BY descrizione1";
$cache_articoli=array();
foreach ($conn->query($sql3) as $row) {
if(isset($cache_articoli_servizio[$row["codice_articolo"]])){
$stato_articolo="Aggiunto";
}else if(isset($cache_articoli_ordinati[$row["codice_articolo"]])){
$stato_articolo="Non Ordinabile";
}else{
$stato_articolo="Aggiungi";
}
echo"<tr><td><div align='center'>".$row['codice_articolo']."</div></td><td>".$row['descrizione1']."</td><td>".$row['descrizione2']."<td>".$stato_articolo."</td></tr>";
}
?>
"durante i primi 5 miuti di pioggia nel bosco c'è ancora asciutto, poi quando smetterà di piovere nel bosco cadranno gocce per 5 minuti.....la natura ha un'ottima memoria..."
http://www.kumbe.it
Ciao
puoi fare anche come hai detto tu:
ma il problema è che se il codice articolo contiene spazi o " ti "rompe" il tag html.codice:name="quantita_<?php echo $row['codicearticolo'] ?>"
Se non hai la chiave primaria la cosa migliore che puoi fare è usare due campi, uno di tipo hidden (che conterrà il codice dell'articolo) e uno di tipo text (che conterrà la quantità).
Per sapere come relazionare i campi basta che gli metti un prefisso o un suffisso comune, ad esempio:
Poi lato server cicli sui valori di $_POST e ti leggi i rispettivi valori (esempio, se stai leggendo i valori di campo_articolo_x la rispettiva quantità la troverai in campo_quantita_x).codice:Articolo 05-3434: <input type="hidden" name="campo_articolo_1" value="05-3434" /> <input type="text" name="campo_quantita_1" value="2" /> <br/> Articolo 05-3435: <input type="hidden" name="campo_articolo_2" value="05-3435" /> <input type="text" name="campo_quantita_2" value="2" /> <br/> Articolo 05-3436: <input type="hidden" name="campo_articolo_3" value="05-3436" /> <input type="text" name="campo_quantita_3" value="2" /> <br/>
Ciao
"durante i primi 5 miuti di pioggia nel bosco c'è ancora asciutto, poi quando smetterà di piovere nel bosco cadranno gocce per 5 minuti.....la natura ha un'ottima memoria..."
http://www.kumbe.it