Page 1 sur 2
créer un dossier automatiquement
Posté : 05 nov. 2005, 13:35
par Gakman
Bonjour !
Cette fois-ci je cherche à créer un dossier dont le nom sera donné automatiquement mais je n'arrive pas à trouver comment faire...
La structure du site : des dossiers "s_*" avec un numéro (s_1, s_2 ,...).
Je souahiterais donc trouver la commande permettant de faire "créer un dossier avec comme nom dernier dossier s_* +1".
Donc en réfléchissant je pourrais :
_ lister les dossiers s_*
_ enlever les "s_" pour ne garder que le numéro
_ les mettre dans un array
_ trier cet array
_ et faire dernière valeur array +1 (je ne sais pas faire ça)
_ créer le dossier s_"numéro obtenu" (avec mkdir))
Mais cette méthode est fastidieuse et il y a sans doute un moyen plus simple, non ?
Pour mkdir j'ai trouvé cette page donc j'arriverai à m'en servir je pense.
http://www.nexen.net/docs/php/annotee/f ... .mkdir.php
Merci !!!
Posté : 05 nov. 2005, 14:52
par Gakman
Voilà mon code actuel, il faut que je le teste mais pour le faire je dois finir d'autres pages... Si vous voyez déjà des erreurs ou un eméthode plus simple faites moi signe !
$liste5=array();
$handle5=opendir($dossier_j);
while($file5=readdir($handle5)){
$pt5=strrpos($file5,".");
$folder_name=$file5;
$num5=substr($file5,2);
$fich5="./".$file5."/nom.php";
if (@file_exists($fich5)){
array_push($liste5,$num5);
fclose($fd5);}}
closedir($handle5);
$num_new=sizeof($liste5)++;
$dossier_s_new="s_".$num_new;
mkdir (dossier_j."/".$dossier_s_new,0700);
Pour l'instant j'ai des dossiers "s_*" dans une dossier "$dossier_j". Comme dans ce "$dossier_j" il y a d'autres fichiers et dossiers je fais le test sur le dossier "nom.php" contenu uniquement dans ces dossiers "s_*".
Posté : 05 nov. 2005, 15:56
par DarkBlue
L'idee est bien !
petit coup de pouce :
_ et faire dernière valeur array +1 (je ne sais pas faire ça)
$valeur=array("kkk","lll","ooo"); // TOn array
$dernier=count($valeur); // le nombre de valeurs dans ton array auquel tu vas ajouter 1
$dernier_plus_un=$dernier++; // si $dernier++ ne marche pas fais $dernier +
1
Posté : 05 nov. 2005, 16:08
par Gakman
Mon script ne marche pas

J'ai un mesage d'arreur : (la ligne 39 est la dernière)
Code : Tout sélectionner
Parse error: parse error, unexpected $ in /var/www/free.fr/7/a/gakman/rub_post_rez.php on line 39
<?
$dossier_j="j_".$_GET['jeu'];
$liste5=array();
$handle5=opendir($dossier_j);
while($file5=readdir($handle5)){
$pt5=strrpos($file5,"."); // rôle ?
$folder_name=$file5; // rôle ?
$num5=substr($file5,2); // supprimable
$fich5=$dossier_j."/".$file5."/details.php";
if (@file_exists($fich5)){
array_push($liste5,$num5);}} // remplacer $num5 par $file5 si supprimé
closedir($handle5);
$num_new=count($liste5);
$num_new++;
$dossier_s_new="s_".$num_new;
mkdir ($dossier_j."/".$dossier_s_new,0700);
$Fnm=$dossier_j."/".$dossier_s_new."/details.php";
$ouvre_w = "<?";
$ferme_w = "?>";
$auteur_w = $_REQUEST["auteur"];
$mail_w = $_REQUEST["mail"];
$site_w = $_REQUEST["site"];
$titre_w = $_REQUEST["titre"];
$date_w = $_REQUEST["date"];
$note_w = $_REQUEST["note"];
$inF=fopen($Fnm,"w");
fwrite($inF,$ouvre_w."\n".$auteur_w."\n".$mail_w."\n".$site_w."\n".$titre_w."\n".$date_w."\n".$note_w."\n".$ferme_w);
fclose($inF);
$commentaire_w=$_REQUEST["commentaire"];
$Fnm2=$dossier_j."/".$dossier_s_new."/commentaire.php";
$inF2=fopen($Fnm2,"w");
fwrite($inF2,$commentaire_w);
fclose($inF2);
echo '<p> </p><p> </p>';
include("m_retour.php"); include("m_stats.php");
?>
Posté : 05 nov. 2005, 16:11
par DarkBlue
oui car :
$num_new=count($liste5);
$dossier_s_new="s_".$num_new;
mkdir ($dossier_j."/".$dossier_s_new,0700);
tu as oublié d'ajouter 1 donc tu essaie de creer un dossier qui existe deja
Posté : 05 nov. 2005, 16:14
par Gakman
je viens de l'ajouter, et c'est pareil

. De plus je pense que finalement le +1 ne sert pas car si on le supprime on va simplement faire des dossiers de s_0 à s_(x-1) à la place de s_1 à s_x.
Enfin bref c'est pas ça le problème

Posté : 05 nov. 2005, 16:19
par DarkBlue
est-ce que tu as verifie que $liste5 etait pas vide ?
Posté : 05 nov. 2005, 16:20
par Truc
tu as des accolades qui ne sont pas fermées pour la boucle while et le test if

Posté : 05 nov. 2005, 16:21
par Gakman
OK merci je regarde ça ! Eh oui c'était juste ça

.
J'ai mis à jour le code dans mon post.
Posté : 05 nov. 2005, 16:26
par Gakman
J'ai un problème : le script ne marche pas !
le fichier details.php créé contient
<?
?>
et commentaire.php est vide.
donc les valeurs du formulaire ne sont pas passées !
Voilà le code de la page forumalire :
Code : Tout sélectionner
<p align="center" class="gdtitre">Soumettre un fichier</p>
<hr />
<p>Vous pouvez ici m'envoyer vos sauvegardes.</p>
<p> </p>
<form action="index.php?lang=<?=$_GET['lang']?>&rub=post_rez&jeu=<?=$_GET['jeu']?>" method="post" enctype="text/plain" id="post_script" name="post_script">
<p>Pseudo : <input name="auteur" id="auteur" /> (utilisez celui du forum SVP)</p>
<p>Adresse E-mail : <input id="mail" name="mail" /></p>
<p>Site perso : <input id="site" name="site" /></p>
<p>Support : <select id="support" name="support">
<option selected>Windows</option>
<option>DreamCast</option>
<option>MegaDrive / Genesis</option>
<option>MasterSystem</option>
<option>GameGear</option>
<option>XBox</option>
<option>PlayStation 2</option>
<option>PlayStation</option>
<option>PSP</option>
<option>GameCube</option>
<option>Nintendo64</option>
<option>SuperNintendo / SNES / SuperFamicom</option>
<option>Nintendo / NES / Famicom</option>
<option>DS</option>
<option>GameBoy Advance</option>
<option>GameBoy / GameBoy Color</option>
<option>NGage</option>
<option>arcade</option>
<option>Linux</option>
<option>MacOS</option>
<option>Amiga</option>
</select></p>
<p>Titre de la sauvegarde : <input id="titre" name="titre" /></p>
<p>Note (sur 20) donnée à la sauvegarde :
<select id="note" name="note">
<option selected>Non notée</option>
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
<option>6</option>
<option>7</option>
<option>8</option>
<option>9</option>
<option>10</option>
<option>11</option>
<option>12</option>
<option>13</option>
<option>14</option>
<option>15</option>
<option>16</option>
<option>17</option>
<option>18</option>
<option>19</option>
<option>20</option>
</select>
<p>Vos commentaires et détails sur cette sauvegarde :<br /><textarea id="commentaire" name="details" rows="6" cols="75"></textarea></p>
<p class="base_Rouge">Sélectionnez le(s) fichier(s) que vous voulez envoyer :<input id="fichier" name="fichier" type="file" size="40" /></p>
<p><input name="post_submit" id="post_submit" type="submit" value="Envoyer" /></p>
</form>
<p> </p>
<p> </p>
<? include("m_retour.php"); include("m_stats.php");?>
On ne peut pas colorer le code HTML comme pour la balise PHP ?
Je ne sais pas où j'ai fait une erreur... J'ai revérifié mes ; et } car j'en oublie régulièrement mais je n'ai rien trouvé (à part les 2 } manquantes, merci Truc !).
Vous ne savez pas comment faire pour la note pour ne pas mettre toutes les valeurs ? Exemple : pouvoir déclarer valeurs de 1 à 20. Bon faut déjà régler le problème principal, ça je verrai après.
Posté : 05 nov. 2005, 16:43
par Truc
donc les valeurs du formulaire ne sont pas passées !
récupère les variables avec POST au lieu de REQUEST, autant eviter si tu sait que ces variables seront toujours envoyés en POST.
$auteur_w =$_POST["auteur"];
//fait un affichage avant l'écriture dans le fichier
echo $auteur_w;
J'ai revérifié mes ; et } car j'en oublie régulièrement mais je n'ai rien trouvé (à part les 2 } manquantes.
Pour eviter ce genre de probleme tu referme l'accolade des que tu en ouvre une et tu écris entre ces 2 {..}, comme ça pas d'oublis
Vous ne savez pas comment faire pour la note pour ne pas mettre toutes les valeurs ?
Euh.. une simple boucle for() de 1 a 20 ou tu fait juste un echo '<option...' avec $i en value

Posté : 05 nov. 2005, 16:50
par Gakman
Euh.. une simple boucle for() de 1 a 20 ou tu fait juste un echo '<option...' avec $i en value

Comment j'ai pu ne pas y penser ??? Bon je vai me coucher moi...

lol
J'essaye de passer en POST et d'afficher pour voir et je te donne la réponse.
Posté : 05 nov. 2005, 16:52
par Gakman
il faut supprimer mes variables $ouvre_w et $ferme_w c'est elles qui font le problème !
Posté : 05 nov. 2005, 16:56
par Gakman
et ba non ça marche toujours pas
Posté : 05 nov. 2005, 17:01
par Gakman
j'ai rajouté les echo sur la page rub_post_rez.php juste en dessous des POST, et quand je l'exécute (depuis la page du formulaire rub_post.php), les valeurs n'apparaissent pas donc elles ne passent pas ?