Page 1 sur 1

verif dossier

Posté : 03 janv. 2007, 17:58
par tilillois
bonjour
j'ai du mal avec la fonction is_dir
a la création du dossier je veut verifier si il n'existe pas deja mais ça fonctionne pas
voici mon code
if is_dir("../galerie/galeries/".'01'.$_SESSION['login'], 0777). "\n";

  else
  mkdir ("../galerie/galeries/".'01'.$_SESSION['login'], 0777);
la comme ça j'ai un parse error mais je vosi pas ou et d'une autre maniere j'ai une autre erreur
est ce la bonne façon de verifié si un dossier existe deja ??
merci pour votre aide :wink:

Posté : 03 janv. 2007, 18:01
par Ryle
La fonction is_dir() ne prend en paramètre qu'un seul argument... il ne suffit pas de faire un copier/coller de ton mkdir(), il faut aussi l'adapter :)

Quant à ta parse error, je suppose qu'il a du mal à interprêter l'ajout d'un retour charriot concaténé à ton if ;)

verif dossier

Posté : 03 janv. 2007, 18:05
par tilillois
si je comprend bien il faudrai que je crée une variable qui correspond a mon mkdir donc il n'y aurai plus qu'un seul argument et l'inserre dans la fonction is_dir??

Posté : 03 janv. 2007, 18:13
par Ryle
Pas nécessairement... c'est surtout que le ", 0777" qui défini les droits d'accès sur le dossier n'a pas grand chose à faire dans une fonction qui teste juste s'il existe ;)

Par ailleurs, plutôt que de faire

Code : Tout sélectionner

Si (ma condition est vraie) Ne rien faire Sinon Faire quelque chose
Pourquoi ne pas simplement faire

Code : Tout sélectionner

Si (ma condition est fausse) Faire quelque chose
Ca te débarassera également du "\n" qui n'a rien à faire là :)

verif dossier

Posté : 03 janv. 2007, 18:27
par tilillois
ben ça a pas etait tre long
voila j'ai modifié mon code de cette façon
if (is_dir("../galerie/galeries/".'01'.$_SESSION['login']));
  mkdir ("../galerie/galeries/".'01'.$_SESSION['login'], 0777);
la ça fonctionne
mais je comprend pas , tu dit que id_uder ne prend pas en compte plusieur parametres
la il n'y en a q1
merci pour ton aide :wink:

Posté : 03 janv. 2007, 18:40
par Ryle
C'est pas tout à fait ça... il te manque un point d'exclamation pour vérifier si ta condition est fausse (sans quoi il va essayer de créer le dossier alors que celui-ci existe), et surtout, tu as un point-virgule en trop (qui fait que ton test ne sert à rien) :)

Avec des accolades, ca sera peut être plus parlant pour toi :
if ( !is_dir("../galerie/galeries/".'01'.$_SESSION['login'])) { // si le dossier n'existe pas
  mkdir ("../galerie/galeries/".'01'.$_SESSION['login'], 0777); // on le créer
}

Pour mes histoires d'arguments, c'était par rapport à ton premier code où tu passais deux paramètres à is_dir() au lieu de seulement passer le chemin du dossier :

Code : Tout sélectionner

is_dir("../galerie/galeries/".'01'.$_SESSION['login'], 0777) \____________________________________________/ \__/
Les arguments envoyés à une fonction sont séparés par des virgules. Ici tu envoyais donc
- "../galerie/galeries/".'01'.$_SESSION['login']
- 0777
Alors qu'il n'attendait que le premier.

verif dossier

Posté : 03 janv. 2007, 19:04
par tilillois
ha ok
j'ai encore un peu de mal avec les ponctuation ce qui fait que je fait encore pas mal d'erreurs
pas evident a tous retenir a quoi sert telle ou telle ponctuation
(faudrai peut etre faire un tuto la dessus,a moins qu'il n'existe deja :D )
encore merci pour ton aide
:wink:

Posté : 04 janv. 2007, 11:42
par Ryle
Je ne sais pas s'il existe de tuto la dessus.. en général tu va retrouver les éléments là où tu en as besoin (car ils vont généralement dépendre du contexte) plutôt qu'un regroupement de ceux-ci...
Voici un petit résumé rapide (attention il s'agit de là d'un usage générique, certains signes peuvent peut être avoir d'autres significations selon le contexte, comme par exemple dans les expressions régulières) :

- le point-virgule ( ; ) : sert à spécifier la fin d'une instruction. On en retrouve donc généralement au bout de chaque ligne, à l'exception des blocs d'instructions qui eux sont délimités par des accolades
$somme = 1 + 1; // fin de l'instruction un point-virgule
if($somme == 2 ) { // pas de ; pour les if, for, while, etc. mais une paire d'accolades
  echo "Ca fait 2";
}
echo "abc"; echo "def"; // on peut avoir deux instructions sur une même ligne
- le point ( . ) : sert à la concaténation de chaines :
$chaine = "chaine1" . "chaine2";
echo $chaine; // affiche : chaine1chaine2
$chaine .= "chaine3"; // équivaut à $chaine = $chaine . "chaine3"
echo $chaine; // affiche : chaine1chaine2chaine3
- la virgule ( , ) : sert à séparer les arguments passés en paramètre d'une fonction lors de l'appel et de la déclaration
function additionne($param1, $param2) { // dans la déclaration
  $total = $param1 + $param2;
  return $total;
}
$resultat = additionne(123, 321); // lors de l'appel
echo $resultat; // affiche : 444
- le point d'exclamation (!) : est une négation. Utilisé dans un if, c'est le contraire de la condition spécifié
$test = true;
if($test) {
  echo 'La variable $test est à vrai';
}
if(!$test) { // condition inverse, elle équivaut ici à un else.
  echo 'La variable $test n\'est pas à vrai';
}
- l'antislash ( \ ) : permet d'échapper un caractère pour souligner un comportement particulier. Pour une apostrophe (ou une guillemet) il signifie que celle-ci ne termine pas la chaine mais doit être interprêtée comme le caractère qu'il représente. Certains caractères échappés ont également des fonctions autres :
"\n" : retour à la ligne
"\t" : tabulation

- Les opérateurs mathématiques ( + - * / % ) : servent aux calculs (addition, soustraction, multiplication, division et modulo (reste de la division) )
$total = 5 + (3 * $valeur) / 2;
- Les opérateurs logiques ( && || ) : servent à ajouter des conditions obligatoires ( ET ) ou facultatives ( OU )
if ( ($val1 && $val2) || $val3) { // cette condition est vraie si $val1 ET $val2 sont tous les deux vrai, OU bien si $val3 est vrai
  ...
}
- Guillemets et apostrophes ( ' " ) : servent à délimiter une chaine de caractères. A l'intérieur de guillemets les variables sont interprétées, mais ce n'est pas le cas avec les apostrophes. D'une manière générale, il vaut mieux sortir les variables des chaines et utiliser le point pour les concaténer.
$chaine1 = "chaine 1";
$chaine2 = 'chaine 2';
echo "Ma chaine est : $chaine1"; // affiche : Ma chaine est : chaine 1
echo 'Ma chaine est : $chaine1'; // affiche : Ma chaine est : $chaine1 // la variable n'est pas interprétée
echo 'Ma chaine est : ' . $chaine1; // affiche : Ma chaine est : chaine 1
- La flèche ( -> ) : utilisée lorsque l'on travail avec des "objets", elle permet de faire appel à une méthode ou un attribut d'un objet instancié (pas la peine de te focaliser là dessus si tu débutes :))
$monObjet = new Objet();
$monObjet->maMethode();
$monObjet->monAttribut;
- Les deux points ( :: ) : seuls ils ne servent à rien (en tout cas pas à ma connaissance), par deux ils permettent de faire appel à une méthode ou un attribut statique d'un objet, sans avoir besoin de l'instancier (une fois encore, c'est pas ce qu'il y a de plus important pour commencer :))
Objet::maMethodeStatic();
Voilà, c'était un petit tour rapide, j'en oublie probablement, mais ca te donnera au moins une petite base sur la "ponctuation" en php :)

verif dossier

Posté : 04 janv. 2007, 18:01
par tilillois
bonjour
merci pour ce petit cour il me servira bien car comme je l'ai dit mes erreurs viennent souvent des ponctuation
a copié dans mes notes :wink: