Ciao a tutti,
rieccomi con un altro problema che coinvolge questa volta php e mysql.
La situazione e' questa: ho due tabelle:
TAB1= id,tipo,nato,morto
TAB2= id,data,nutrito
La prima contiene l'id della cavia e le date di nascita e morte, la seconda contiene l'id della cavia e l'intero calendario mentre il campo nutrito specifica se abbia mangiato o meno (0 corrisponde a digiuno).
Le date nei campi "nato" e "morto" non sono sempre corrette e spesso non sono nemmeno indicate, per questo motivo devo utilizzare le date in cui si e' nutrita per correggere gli errori.
Ho iniziato a scrivere un po' di codice in php che vi riporto qui di seguito:
Codice PHP:
<?php>
$db_server=mysql_connect('localhost','xxx','yyy');
$db_selected=mysql_select_db('mydb',$db_server);
// Prima query per ottenere la lista di id
$first_query=mysql_query('SELECT id FROM mydb.oggetti WHERE `tipo`="cavia"');
// Trasformo il risultato della query in un array
$cnt=0;
while ($mydb_cavie = mysql_fetch_array($first_query, MYSQL_ASSOC)) {
$cavie[$cnt]=$mydb_cavie;
$cavie_array["{$cavie[$cnt]['ogg_id']}"]=array
(
"id"=>($cavie[$cnt]['id']),
);
$cnt++;
}
// Per ogni id effettuo un controllo nella seconda tabella
foreach ($cavie_array as $i => $value) {
$cavia_id=$value["id"];
$lifespan_query=mysql_query("SELECT MIN(data) AS nata, MAX(data) AS morta FROM mydb.nutrizione WHERE nutrizione.id='$cavia_id' AND nutrizione.nutrita !='0'");
$count=0;
while ($mydb_lifespan = mysql_fetch_array($lifespan_query, MYSQL_ASSOC)) {
$lifespan[$cnt]=$mydb_lifespan;
$lifespan_array["{$lifespan[$cnt]['ogg_id']}"]=array
(
"id"=>($cavia_id),
"min"=>($lifespan[$cnt]['validfrom']),
"max"=>($lifespan[$cnt]['validto']),
);
$count++;
}
}
// Stampo id, data di nascita e di morte
foreach ($validity_array as $i => $value2) {
echo "{$value2["id"]}|{$value2["min"]}|{$value2["max"]}+";
}
?>
Quando lo lancio mysql salta al 100% del processore e non scende piu'.
Secondo voi il mio e' l'approccio corretto? Cosa sto sbagliando?
Thanks