par
Melody Nelson » 29 mai 2009, 10:05
merci Ryle !
je me pose une autre question sur mon script... en fait, j'ai l'impression que je ne l'ai pas construit "logiquement"
en gros, actuellement je lui dis de faire ça :
- s'il y a un fichier -> traite le fichier puis créé l'enregistrement (avec des données "standard" et des infos concernant les fichiers en question)
- sinon -> créé l'enregistrement avec seulement des données "standard"
avec tes lumières sur cette histoire de boucle, j'ai l'impression que mon « if file_exists( bla bla bla) » n'a plus de sens
en fait, dans ma tête (pas très reposée), je voudrais faire :
- soit 2 if pour vérifier s'il y'a 2 fichiers, et suivre la logique que j'utilisais jusque là avec un seul fichier
- soit une boucle pour traiter les fichiers et l'enregistrement, mais dans ce cas je ne vois pas comment lui dire de traiter l'enregistrement même lorsqu'il n'y a pas de fichier
(j'suis pas certaine que mes doutes et explications associées soient super clairs, je vais essayer de revoir ça après avoir dormi !)
EDIT : je crois que finalement utiliser une boucle ne convient pas (bien que je crois que je ne sais pas m'en servir correctement) car j'ai besoin de stocker dans des champs différents les chemins d'accès de mes fichiers téléchargés
par exemple, le chemin du premier fichier soit aller dans le champ X et le chemin du deuxième dans le champ Y
en mettant une boucle dans mon script, je n'arrivais pas à m'en sortir, alors j'ai fait ça à la place (probablement pas très pro mais ça marche, mes excuses aux puristes !

)
// ETAPE 2 : TRAITEMENT DU PREMIER FICHIER LIE
if (file_exists($_FILES['mon_fichier']['tmp_name'])) {
//echo "<p>il y a un fichier : " . $_FILES['mon_fichier']['tmp_name'] ."</p>";
// variable servant à "stocker" les erreurs lors des différents contrôles
unset($erreur);
// vérification du type de fichier
$extensions_ok = array('png', 'gif', 'jpg', 'jpeg', 'PNG', 'GIF', 'JPG', 'JPEG');
if(!in_array( substr(strrchr($_FILES['mon_fichier']['name'], '.'), 1), $extensions_ok))
{
$erreur = "<p id='erreur'>------>Le fichier doit être de type png, gif ou jpg.</p>";
echo $erreur;
include ("include/actus_ajout_form.inc");
}
// vérification de la taille du fichier
$taille_max = 150000;
//echo "<p>" . $_FILES['mon_fichier']['size'] ." octets</p>";
if($_FILES['mon_fichier']['size'] > $taille_max)
{
$erreur = "<p id='erreur'>------>Le fichier doit faire moins de 150 ko.</p>";
echo $erreur;
include ("include/actus_ajout_form.inc");
}
// s'il n'y a pas d'erreur (type et taille), fichier renommé et déplacé
if(!isset($erreur))
{
// récupère l'extension du fichier original et la transforme en minuscule
//echo "<p>".strtolower(substr(strrchr($_FILES['mon_fichier']['name'], "."), 1)) ."</p>";
$dest_extension = strtolower(substr(strrchr($_FILES['mon_fichier']['name'], "."), 1));
// récupère le nom du fichier dans le dossier temporaire et le transforme en minuscule
//echo "<p>" .strtolower(substr(strrchr($_FILES['mon_fichier']['tmp_name'], "/"), 1)) ."</p>";
$dest_nom = strtolower(substr(strrchr($_FILES['mon_fichier']['tmp_name'], "/"), 1)) ;
// contruction du nom complet du fichier qui devra être copié
//echo $dest_nom ."." .$dest_extension ;
$dest_fichier = $dest_nom ."." .$dest_extension ;
// dossier de destination
$dest_dossier = 'images_actus/';
// copie du fichier
if(move_uploaded_file($_FILES['mon_fichier']['tmp_name'], $dest_dossier .$dest_fichier))
{
//echo("<p>Fichier copié ici : <strong>" .$dest_dossier .$dest_fichier ."</strong></p>");
chmod($dest_dossier .$dest_fichier, 0777);
}
else
{ echo("<p>Erreur lors de la copie du fichier téléchargé.</p>");}
} // FIN traitement et copie du fichier
} // FIN vérification présence d'un fichier n°1
// ETAPE 3 : TRAITEMENT DU DEUXIEME FICHIER LIE
if (file_exists($_FILES['mon_fichier2']['tmp_name'])) {
//echo "<p>il y a un fichier : " . $_FILES['mon_fichier2']['tmp_name'] ."</p>";
// variable servant à "stocker" les erreurs lors des différents contrôles
unset($erreur);
// vérification du type de fichier
$extensions_ok = array('png', 'gif', 'jpg', 'jpeg', 'PNG', 'GIF', 'JPG', 'JPEG');
if(!in_array( substr(strrchr($_FILES['mon_fichier2']['name'], '.'), 1), $extensions_ok))
{
$erreur = "<p id='erreur'>------>Le fichier doit être de type png, gif ou jpg.</p>";
echo $erreur;
include ("include/actus_ajout_form.inc");
}
// vérification de la taille du fichier
$taille_max = 150000;
//echo "<p>" . $_FILES['mon_fichier2']['size'] ." octets</p>";
if($_FILES['mon_fichier2']['size'] > $taille_max)
{
$erreur = "<p id='erreur'>------>Le fichier doit faire moins de 150 ko.</p>";
echo $erreur;
include ("include/actus_ajout_form.inc");
}
// s'il n'y a pas d'erreur (type et taille), fichier renommé et déplacé
if(!isset($erreur))
{
// récupère l'extension du fichier original et la transforme en minuscule
//echo "<p>".strtolower(substr(strrchr($_FILES['mon_fichier2']['name'], "."), 1)) ."</p>";
$dest_extension = strtolower(substr(strrchr($_FILES['mon_fichier2']['name'], "."), 1));
// récupère le nom du fichier dans le dossier temporaire et le transforme en minuscule
//echo "<p>" .strtolower(substr(strrchr($_FILES['mon_fichier2']['tmp_name'], "/"), 1)) ."</p>";
$dest_nom = strtolower(substr(strrchr($_FILES['mon_fichier2']['tmp_name'], "/"), 1)) ;
// contruction du nom complet du fichier qui devra être copié
//echo $dest_nom ."." .$dest_extension ;
$dest_fichier2 = $dest_nom ."." .$dest_extension ;
// dossier de destination
$dest_dossier2 = 'images_actus/';
// copie du fichier
if(move_uploaded_file($_FILES['mon_fichier2']['tmp_name'], $dest_dossier2 .$dest_fichier2))
{
//echo("<p>Fichier copié ici : <strong>" .$dest_dossier2 .$dest_fichier2 ."</strong></p>");
chmod($dest_dossier2 .$dest_fichier2, 0777);
}
else
{ echo("<p>Erreur lors de la copie du fichier téléchargé.</p>");}
} // FIN traitement et copie du fichier
} // FIN vérification présence d'un fichier n°2
// ETAPE 4 : CONTROLE DES CHAMPS OBLIGATOIRES + ENREGISTREMENT DES DONNEES
// s'ils sont vides, réaffiche le formulaire
if (empty($new_date) or empty($new_titre) or empty($new_chapeau) or empty($new_contenu) or empty($new_titre_page))
{
echo "<p id='erreur'>------> Vous n'avez pas renseigné tous les champs obligatoires</strong></p>";
include ("include/actus_ajout_form.inc");
}
// LES CHAMPS OBLIGATOIRES SONT REMPLIS, L'ENREGISTREMENT EST CREE
else {
//echo "<p>tous les champs sont bien remplis</p>";
// enregistrement de la fiche
$query = "INSERT INTO tmtd_news (date_publ, titre, chapeau, contenu, lien, image, miniature, code_video, txt_video, meta_title, titre_lien, lien_target)
VALUES ('$new_date', '$new_titre', '$new_chapeau', '$new_contenu', '$new_lien', '$dest_dossier$dest_fichier',
'$dest_dossier2$dest_fichier2', '$new_code_video', '$new_texte_video', '$new_titre_page', '$new_titre_lien', '$new_lien_cible')" ;
$result = mysql_query ($query)
or die('Erreur : '.mysql_error()) ;
// redirection vers la page de gestion des actualités
echo ("<p>Fiche enregistrée</p>");
include_once ("include/menu_options_admin.inc") ;
} // FIN CONTROLE + ENREGISTREMENT
merci Ryle !
je me pose une autre question sur mon script... en fait, j'ai l'impression que je ne l'ai pas construit "logiquement"
en gros, actuellement je lui dis de faire ça :
- s'il y a un fichier -> traite le fichier puis créé l'enregistrement (avec des données "standard" et des infos concernant les fichiers en question)
- sinon -> créé l'enregistrement avec seulement des données "standard"
avec tes lumières sur cette histoire de boucle, j'ai l'impression que mon « if file_exists( bla bla bla) » n'a plus de sens
en fait, dans ma tête (pas très reposée), je voudrais faire :
- soit 2 if pour vérifier s'il y'a 2 fichiers, et suivre la logique que j'utilisais jusque là avec un seul fichier
- soit une boucle pour traiter les fichiers et l'enregistrement, mais dans ce cas je ne vois pas comment lui dire de traiter l'enregistrement même lorsqu'il n'y a pas de fichier
(j'suis pas certaine que mes doutes et explications associées soient super clairs, je vais essayer de revoir ça après avoir dormi !)
[b]EDIT[/b] : je crois que finalement utiliser une boucle ne convient pas (bien que je crois que je ne sais pas m'en servir correctement) car j'ai besoin de stocker dans des champs différents les chemins d'accès de mes fichiers téléchargés
par exemple, le chemin du premier fichier soit aller dans le champ X et le chemin du deuxième dans le champ Y
en mettant une boucle dans mon script, je n'arrivais pas à m'en sortir, alors j'ai fait ça à la place (probablement pas très pro mais ça marche, mes excuses aux puristes ! :oops: )
[php]// ETAPE 2 : TRAITEMENT DU PREMIER FICHIER LIE
if (file_exists($_FILES['mon_fichier']['tmp_name'])) {
//echo "<p>il y a un fichier : " . $_FILES['mon_fichier']['tmp_name'] ."</p>";
// variable servant à "stocker" les erreurs lors des différents contrôles
unset($erreur);
// vérification du type de fichier
$extensions_ok = array('png', 'gif', 'jpg', 'jpeg', 'PNG', 'GIF', 'JPG', 'JPEG');
if(!in_array( substr(strrchr($_FILES['mon_fichier']['name'], '.'), 1), $extensions_ok))
{
$erreur = "<p id='erreur'>------>Le fichier doit être de type png, gif ou jpg.</p>";
echo $erreur;
include ("include/actus_ajout_form.inc");
}
// vérification de la taille du fichier
$taille_max = 150000;
//echo "<p>" . $_FILES['mon_fichier']['size'] ." octets</p>";
if($_FILES['mon_fichier']['size'] > $taille_max)
{
$erreur = "<p id='erreur'>------>Le fichier doit faire moins de 150 ko.</p>";
echo $erreur;
include ("include/actus_ajout_form.inc");
}
// s'il n'y a pas d'erreur (type et taille), fichier renommé et déplacé
if(!isset($erreur))
{
// récupère l'extension du fichier original et la transforme en minuscule
//echo "<p>".strtolower(substr(strrchr($_FILES['mon_fichier']['name'], "."), 1)) ."</p>";
$dest_extension = strtolower(substr(strrchr($_FILES['mon_fichier']['name'], "."), 1));
// récupère le nom du fichier dans le dossier temporaire et le transforme en minuscule
//echo "<p>" .strtolower(substr(strrchr($_FILES['mon_fichier']['tmp_name'], "/"), 1)) ."</p>";
$dest_nom = strtolower(substr(strrchr($_FILES['mon_fichier']['tmp_name'], "/"), 1)) ;
// contruction du nom complet du fichier qui devra être copié
//echo $dest_nom ."." .$dest_extension ;
$dest_fichier = $dest_nom ."." .$dest_extension ;
// dossier de destination
$dest_dossier = 'images_actus/';
// copie du fichier
if(move_uploaded_file($_FILES['mon_fichier']['tmp_name'], $dest_dossier .$dest_fichier))
{
//echo("<p>Fichier copié ici : <strong>" .$dest_dossier .$dest_fichier ."</strong></p>");
chmod($dest_dossier .$dest_fichier, 0777);
}
else
{ echo("<p>Erreur lors de la copie du fichier téléchargé.</p>");}
} // FIN traitement et copie du fichier
} // FIN vérification présence d'un fichier n°1
// ETAPE 3 : TRAITEMENT DU DEUXIEME FICHIER LIE
if (file_exists($_FILES['mon_fichier2']['tmp_name'])) {
//echo "<p>il y a un fichier : " . $_FILES['mon_fichier2']['tmp_name'] ."</p>";
// variable servant à "stocker" les erreurs lors des différents contrôles
unset($erreur);
// vérification du type de fichier
$extensions_ok = array('png', 'gif', 'jpg', 'jpeg', 'PNG', 'GIF', 'JPG', 'JPEG');
if(!in_array( substr(strrchr($_FILES['mon_fichier2']['name'], '.'), 1), $extensions_ok))
{
$erreur = "<p id='erreur'>------>Le fichier doit être de type png, gif ou jpg.</p>";
echo $erreur;
include ("include/actus_ajout_form.inc");
}
// vérification de la taille du fichier
$taille_max = 150000;
//echo "<p>" . $_FILES['mon_fichier2']['size'] ." octets</p>";
if($_FILES['mon_fichier2']['size'] > $taille_max)
{
$erreur = "<p id='erreur'>------>Le fichier doit faire moins de 150 ko.</p>";
echo $erreur;
include ("include/actus_ajout_form.inc");
}
// s'il n'y a pas d'erreur (type et taille), fichier renommé et déplacé
if(!isset($erreur))
{
// récupère l'extension du fichier original et la transforme en minuscule
//echo "<p>".strtolower(substr(strrchr($_FILES['mon_fichier2']['name'], "."), 1)) ."</p>";
$dest_extension = strtolower(substr(strrchr($_FILES['mon_fichier2']['name'], "."), 1));
// récupère le nom du fichier dans le dossier temporaire et le transforme en minuscule
//echo "<p>" .strtolower(substr(strrchr($_FILES['mon_fichier2']['tmp_name'], "/"), 1)) ."</p>";
$dest_nom = strtolower(substr(strrchr($_FILES['mon_fichier2']['tmp_name'], "/"), 1)) ;
// contruction du nom complet du fichier qui devra être copié
//echo $dest_nom ."." .$dest_extension ;
$dest_fichier2 = $dest_nom ."." .$dest_extension ;
// dossier de destination
$dest_dossier2 = 'images_actus/';
// copie du fichier
if(move_uploaded_file($_FILES['mon_fichier2']['tmp_name'], $dest_dossier2 .$dest_fichier2))
{
//echo("<p>Fichier copié ici : <strong>" .$dest_dossier2 .$dest_fichier2 ."</strong></p>");
chmod($dest_dossier2 .$dest_fichier2, 0777);
}
else
{ echo("<p>Erreur lors de la copie du fichier téléchargé.</p>");}
} // FIN traitement et copie du fichier
} // FIN vérification présence d'un fichier n°2
// ETAPE 4 : CONTROLE DES CHAMPS OBLIGATOIRES + ENREGISTREMENT DES DONNEES
// s'ils sont vides, réaffiche le formulaire
if (empty($new_date) or empty($new_titre) or empty($new_chapeau) or empty($new_contenu) or empty($new_titre_page))
{
echo "<p id='erreur'>------> Vous n'avez pas renseigné tous les champs obligatoires</strong></p>";
include ("include/actus_ajout_form.inc");
}
// LES CHAMPS OBLIGATOIRES SONT REMPLIS, L'ENREGISTREMENT EST CREE
else {
//echo "<p>tous les champs sont bien remplis</p>";
// enregistrement de la fiche
$query = "INSERT INTO tmtd_news (date_publ, titre, chapeau, contenu, lien, image, miniature, code_video, txt_video, meta_title, titre_lien, lien_target)
VALUES ('$new_date', '$new_titre', '$new_chapeau', '$new_contenu', '$new_lien', '$dest_dossier$dest_fichier',
'$dest_dossier2$dest_fichier2', '$new_code_video', '$new_texte_video', '$new_titre_page', '$new_titre_lien', '$new_lien_cible')" ;
$result = mysql_query ($query)
or die('Erreur : '.mysql_error()) ;
// redirection vers la page de gestion des actualités
echo ("<p>Fiche enregistrée</p>");
include_once ("include/menu_options_admin.inc") ;
} // FIN CONTROLE + ENREGISTREMENT[/php]