Subversion Repositories Sites.obs-saisons.fr

Rev

Rev 5 | Blame | Compare with Previous | Last modification | View Log | RSS feed

<?
include("../modules/connect.php");

$CHEMIN_PROTOS = "$CHEMIN_DOCS/protocoles/";
$CHEMIN_IDENT = "$CHEMIN_DOCS/identifications/";
$CHEMIN_ESPECE = "$CHEMIN_DOCS/especes/";
$CHEMIN_PHOTOS = "$CHEMIN_DOCS/photos/";

function uploadFichier($fichier,$chemin,$id_espece,$type,$descr) {
    //dépôt du fichier
    if (isset($_FILES[$fichier])) {
      if (is_uploaded_file($_FILES[$fichier]['tmp_name'])) {
        if (is_numeric(strpos($_FILES[$fichier]['name'],$type))) {
          if (!move_uploaded_file($_FILES[$fichier]['tmp_name'], $chemin.$id_espece.".".$type))
            return "La fiche '$descr' n'a pas pu être copiée.";
        } else
          return "La fiche '$descr' devrait être au format $type.";
      }
    }
}
function deleteFichier($fichier,$chemin,$id_espece,$type,$descr) {
  if (is_file($chemin.$id_espece.".".$type)) {
    if (!unlink($chemin.$id_espece.".".$type)) {
      return "La fiche '$descr' n'a pas pu être supprimée.";
    }
  }
}

/**** GESTION DES ESPECES ****/

/*** Modification/Ajout d'une espèce ***/

//on regarde si le formulaire a déjà été rempli
if (isset($_POST['valid_espece'])) {

  //on vérifie qu'il ne manque rien
  if (strlen($_POST['nom_ver'])==0)
   $erreurs[] = "Il manque le nom vernaculaire.";
  if (strlen($_POST['nom_sci'])==0)
   $erreurs[] = "Il manque le nom scientifique.";
  if (sizeof($_POST['evenements'])==0)
   $erreurs[] = "Il manque les évènements observables.";

} 

if (isset($_POST['valid_espece']) && sizeof($erreurs)==0) {
 if (strlen($_POST['especeid'])==0) {

 //on va insérer une nouvelle espèce

  //on prépare la requête d'insertion de l'espèce
  $requete_insertion = "insert into ESPECE (ESPECE_NOM_VERNACULAIRE,ESPECE_NOM_SCIENTIFIQUE, ESPECE_ACTIVE, ESPECE_ECOLES, ESPECE_DESCRIPTION, ESPECE_CLIMAT) ".
  "values ('".$_POST['nom_ver']."','".$_POST['nom_sci']."', ".($_POST['active'] ? '1' : '0' ).", ".($_POST['ecoles'] ? '1' : '0' ).", '".$_POST['description']."','".$_POST['climat']."')";
  //$requete_insertion = "insert into ESPECE (ESPECE_NOM_VERNACULAIRE,ESPECE_NOM_SCIENTIFIQUE, ESPECE_ACTIVE, ESPECE_ECOLES) ".
  //"values ('".$_POST['nom_ver']."','".$_POST['nom_sci']."', ".($_POST['active'] ? '1' : '0' ).", ".($_POST['ecoles'] ? '1' : '0' ).")";
  if (mysql_query($requete_insertion)) {
    //récuération de l'identifiant de l'espèce insérée
    $requete_recup = mysql_query("select ESPECE_ID from ESPECE where ESPECE_NOM_SCIENTIFIQUE like '".$_POST['nom_sci']."'");
    if ($espece = mysql_fetch_row($requete_recup))
      $id_espece = $espece[0];
    //insertion des évènements
    foreach($_POST['evenements'] as $ev) {
      $requete_insert_ev = "insert into ESPECE_EVENEMENT (ESPECE_ID,EVENEMENT_ID) ".
      "values ($id_espece,$ev)";
      mysql_query($requete_insert_ev);echo mysql_error();
    }
    //insertion du type
    $requete_insert_type = "insert into CARACTERISTIQUE_ESP_LIEN".
    " (CARACTERISTIQUE_ESP_ID,ESPECE_ID,CARACTERISTIQUE_ESP_VALEUR_ID)".
    " values (1,$id_espece,".$_POST['types'].")";
    mysql_query($requete_insert_type);
    
    //dépôt du fichier
    $erreurs[] = uploadFichier("espece",$CHEMIN_ESPECE,$id_espece,"pdf","identifier l'espèce");
    $erreurs[] = uploadFichier("protocole",$CHEMIN_PROTOS,$id_espece,"pdf","fiche d'observation");
    $erreurs[] = uploadFichier("identification",$CHEMIN_IDENT,$id_espece,"pdf","identifier les stades phénologiques");
    $erreurs[] = uploadFichier("photo",$CHEMIN_PHOTOS,$id_espece,"jpeg","photo");
    /*
    if (isset($_FILES['protocole'])) {
      if (is_uploaded_file($_FILES['protocole']['tmp_name'])) {
        if (!move_uploaded_file($_FILES['protocole']['tmp_name'], $CHEMIN_PROTOS.$id_espece.".pdf"))
          $erreurs[] = "La fiche d'observation n'a pas pu être copié.";
      }
    }
    //dépôt du fichier
    if (isset($_FILES['identification'])) {
      if (is_uploaded_file($_FILES['identification']['tmp_name'])) {
        if (!move_uploaded_file($_FILES['identification']['tmp_name'], $CHEMIN_IDENT.$id_espece.".pdf"))
          $erreurs[] = "La fiche d'identification n'a pas pu être copié.";
      }
    }
    //dépôt de la photo
    if (isset($_FILES['photo'])) {
      if (is_uploaded_file($_FILES['photo']['tmp_name'])) {
        if (!move_uploaded_file($_FILES['photo']['tmp_name'], $CHEMIN_PHOTOS.$id_espece.".pdf"))
          $erreurs[] = "La photo n'a pas pu être copié.";
      }
    }*/
  }

 } else {
  //on va modifier une espèce existante
  $id_espece = $_POST['especeid'];

  //requête de mise à jour de l'espèce
  $requete_maj = "update ESPECE set ESPECE_NOM_VERNACULAIRE='".$_POST['nom_ver'].
  "', ESPECE_NOM_SCIENTIFIQUE='".$_POST['nom_sci']."'".
  ", ESPECE_ACTIVE=".($_POST['active'] ? '1' : '0' ).
  ", ESPECE_ECOLES=".($_POST['ecoles'] ? '1' : '0' ).
  ", ESPECE_DESCRIPTION='".$_POST['description']."'".
  ", ESPECE_CLIMAT='".$_POST['climat']."'".
  " where ESPECE_ID=".$id_espece;

  if (mysql_query($requete_maj)) {

    //recupération des évènements pour la maj
    $requete_evs = mysql_query("select distinct EVENEMENT_ID from ESPECE_EVENEMENT where ESPECE_ID=$id_espece");

    while ($ev = mysql_fetch_row($requete_evs))
      $evenements_obs[] = $ev[0]; 
    //maj des évènements
    foreach ($_POST['evenements'] as $ev) {
      //on regarde si l'évènement est nouveau ou pas

      if (is_array($evenements_obs) && is_numeric($i = array_search($ev,$evenements_obs)))
        unset($evenements_obs[$i]);
      else {
        //insertion du nouvel évènement
        mysql_query("insert into ESPECE_EVENEMENT (ESPECE_ID, EVENEMENT_ID)".
        "values ($id_espece,$ev)"); echo mysql_error();
      }
    }

    //on regarde si il y avait des évènements avant qu'il n'y a plus maintenant
    if (sizeof($evenements_obs)>0) {
      foreach($evenements_obs as $ev)
        mysql_query("delete from ESPECE_EVENEMENT where ESPECE_ID=$id_espece and EVENEMENT_ID=$ev");
    }

    //maj du type
    $requete_modif_type = mysql_query("update CARACTERISTIQUE_ESP_LIEN set CARACTERISTIQUE_ESP_VALEUR_ID=".$_POST['types']." where ESPECE_ID=$id_espece");

    //dépôt du fichier
    /*if (isset($_FILES['protocole'])) {
      if (is_uploaded_file($_FILES['protocole']['tmp_name'])) {
        if (!move_uploaded_file($_FILES['protocole']['tmp_name'], $CHEMIN_PROTOS.$id_espece.".pdf"))
          $erreurs[] = "La fiche d'observation n'a pas pu être copié.";
      }
    }
    //dépôt du fichier
    if (isset($_FILES['identification'])) {
      if (is_uploaded_file($_FILES['identification']['tmp_name'])) {
        if (!move_uploaded_file($_FILES['identification']['tmp_name'], $CHEMIN_IDENT.$id_espece.".pdf"))
          $erreurs[] = "La fiche d'identification n'a pas pu être copié.";
      }
    }*/
    $erreurs[] = uploadFichier("espece",$CHEMIN_ESPECE,$id_espece,"pdf","identifier l'espèce");
    $erreurs[] = uploadFichier("protocole",$CHEMIN_PROTOS,$id_espece,"pdf","fiche d'observation");
    $erreurs[] = uploadFichier("identification",$CHEMIN_IDENT,$id_espece,"pdf","identifier les stades phénologiques");
    $erreurs[] = uploadFichier("photo",$CHEMIN_PHOTOS,$id_espece,"jpeg","photo");
  }
 }
 
}

//else if (isset($_POST['valid_espece']) || isset($_GET['m']) || isset($_GET['n'])) {

if (isset($_GET['s'])) {
  //on doit supprimer l'espèce passée en paramètre
  mysql_query("delete from ESPECE_EVENEMENT where ESPECE_ID=".$_GET['s']);
  mysql_query("delete from where ESPECE_ID=".$_GET['s']);
  mysql_query("delete from ESPECE where ESPECE_ID=".$_GET['s']);

  $erreurs[] = deleteFichier("espece",$CHEMIN_ESPECE,$_GET['s'],"pdf","identifier l'espèce");
  $erreurs[] = deleteFichier("protocole",$CHEMIN_PROTOS,$_GET['s'],"pdf","fiche d'observation");
  $erreurs[] = deleteFichier("identification",$CHEMIN_IDENT,$_GET['s'],"pdf","identifier les stades phénologiques");
  $erreurs[] = deleteFichier("photo",$CHEMIN_PHOTOS,$_GET['s'],"jpeg","photo");
}

if (sizeof($erreurs)>0) {
foreach ($erreurs as $e=>$err)
  if (strlen($err)>0)
    echo $err."<br>";
  else
    unset($erreurs[$e]);
}

if (sizeof($erreurs)>0)
  echo "<a href='javascript:history.back()'>Retour</a>";

//on récupère l'espece à modifier
if (isset($_GET['m']) && !(isset($_POST['valid_espece']) && sizeof($erreurs)==0)) {

  $espece_id = $_GET['m'];
  //$req_espece = mysql_query("select ESPECE_NOM_VERNACULAIRE, ESPECE_NOM_SCIENTIFIQUE, CARACTERISTIQUE_ESP_VALEUR_ID, ESPECE_ACTIVE, ESPECE_ECOLES from ESPECE, CARACTERISTIQUE_ESP_LIEN where CARACTERISTIQUE_ESP_LIEN.ESPECE_ID=ESPECE.ESPECE_ID and ESPECE.ESPECE_ID=$espece_id");
  $req_espece = mysql_query("select ESPECE_NOM_VERNACULAIRE, ESPECE_NOM_SCIENTIFIQUE, CARACTERISTIQUE_ESP_VALEUR_ID, ESPECE_ACTIVE, ESPECE_ECOLES, ESPECE_DESCRIPTION, ESPECE_CLIMAT from ESPECE, CARACTERISTIQUE_ESP_LIEN where CARACTERISTIQUE_ESP_LIEN.ESPECE_ID=ESPECE.ESPECE_ID and ESPECE.ESPECE_ID=$espece_id");

  $espece = mysql_fetch_row($req_espece);

  $req_ev_observes = mysql_query("select distinct EVENEMENT_ID from ESPECE_EVENEMENT where ESPECE_ID=$espece_id");
  while ($ev = mysql_fetch_row($req_ev_observes))
    $evenements_obs[] = $ev[0];
} 
if (isset($_GET['n']) || $espece_id) {

//Requêtes de sélection pour les clés étrangères
$req_types = mysql_query("select CARACTERISTIQUE_ESP_VALEUR_ID,CARACTERISTIQUE_ESP_VALEUR_LIB from CARACTERISTIQUE_ESP_VALEUR order by CARACTERISTIQUE_ESP_VALEUR_LIB");

$req_evenements = mysql_query("select EVENEMENT_ID, EVENEMENT_NOM from EVENEMENT order by EVENEMENT_NOM desc");

?>

<form name="form_especes" method="post" action="index.php?a=0" enctype="multipart/form-data">

Nom vernaculaire :
<input type="text" name="nom_ver" value="<?= $espece[0] ?>">

Nom scientifique :
<input type="text" name="nom_sci" value="<?= $espece[1] ?>">
<br>
Type d'espèce :
<select name="types">
<? while ($type = mysql_fetch_row($req_types)) { ?>
  <option value="<?= $type[0] ?>" <?= ($espece[2]==$type[0]) ? "selected" : "" ?>>
  <?= $type[1] ?>
<? } ?>
</select>

Evènements observables :
<select name="evenements[]" multiple size="4">
<? while ($eve = mysql_fetch_row($req_evenements)) { ?>
  <option value="<?= $eve[0] ?>" <?= (sizeof($evenements_obs)>0 && in_array($eve[0],$evenements_obs)) ? "selected" : "" ?>>
<?= $eve[1] ?>
<? } ?>
</select>
<br><br>

Climat :
<input type="text" name="climat" value="<?= $espece[6] ?>">
<br><br>
URL de la description de l'espèce : <input type="text" name="description" value="<?= $espece[5] ?>" size="50">
<br>
Identifier l'espèce : <input type="hidden" name="MAX_FILE_SIZE" value="100000000">
<input type="file" name="espece" size="30">
<?
if ($espece_id && is_file($CHEMIN_ESPECE.$espece_id.".pdf")) {
  echo "(existe déjà sur le serveur)";
}
?>
<br>
Fiche d'observation : <input type="hidden" name="MAX_FILE_SIZE" value="100000000">
<input type="file" name="protocole" size="30">
<?
if ($espece_id && is_file($CHEMIN_PROTOS.$espece_id.".pdf")) {
  echo "(existe déjà sur le serveur)";
}
?>
<br>
Identifier les stades phénologiques : 
<input type="file" name="identification" size="30">
<?
if ($espece_id && is_file($CHEMIN_IDENT.$espece_id.".pdf")) {
  echo "(existe déjà sur le serveur)";
}
?>
<br>
Photo : 
<input type="file" name="photo" size="30">
<?
if ($espece_id && is_file($CHEMIN_PHOTOS.$espece_id.".jpeg")) {
  echo "(existe déjà sur le serveur)";
}
?>
<br>

<input type="checkbox" name="ecoles" value="1" <?= ($espece[4]==1||!$espece ? "checked" : "") ?>>
Observable par les enfants
<br>
<input type="checkbox" name="active" value="1" <?= ($espece[3]==1||!$espece ? "checked" : "") ?>>
Activée (observable par tout le monde)
<br>
<input type="hidden" name="espece" value="<?= $espece_id ?>">
<input type="hidden" name="especeid" value="<?= $espece_id ?>">

<input class="submit" type="submit" name="valid_espece" value="Valider">
</form>
<?
}

//}
/*** Liste des espèces ***/

/*** Requête de sélection pour l'affichage de la bd ***/
$req_especes = mysql_query("select ESPECE.ESPECE_ID, ESPECE_NOM_VERNACULAIRE, ESPECE_NOM_SCIENTIFIQUE, CARACTERISTIQUE_ESP_VALEUR_LIB, ESPECE_ECOLES from ESPECE, CARACTERISTIQUE_ESP_LIEN, CARACTERISTIQUE_ESP_VALEUR where ESPECE.ESPECE_ID=CARACTERISTIQUE_ESP_LIEN.ESPECE_ID AND CARACTERISTIQUE_ESP_LIEN.CARACTERISTIQUE_ESP_VALEUR_ID=CARACTERISTIQUE_ESP_VALEUR.CARACTERISTIQUE_ESP_VALEUR_ID order by CARACTERISTIQUE_ESP_VALEUR_LIB, ESPECE_NOM_VERNACULAIRE");
echo mysql_error();
?>
<center>
<a href="?n">Ajouter une espèce</a>

<table class="liste">
  <tr class="titre">
    <td>Type d'espèce</td>
    <td>Nom vernaculaire</td>
    <td>Nom scientifique</td>
    <td>Junior</td>
    <td>Action</td>
<?
$i=0;
while ($espece = mysql_fetch_row($req_especes)) {
  echo "<tr class='std$i'><td>".$espece[3]."</td><td>".$espece[1]."</td><td>".$espece[2]."</td><td>".($espece[4]==1 ? 'X' :'')."</td><td><a href='?a=0&m=".$espece[0]."'>MODIF</a> | <a href='?a=0&s=".$espece[0]."'>SUPPR</a></tr>";
  $i++;
  if ($i==2)
    $i=0;
}
?>
</table>
</center>