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_queryMYSQL_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_queryMYSQL_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