Problema nel creare directory..

Salve, ho creato un db clienti con i vari campi, ora vorrei creare delle cartelle per ogni cliente in base al campo categoria/citta/id e copiando all'interno il file index.php, con questo script :

// recupero l'id autoincrement generato da MySQL per il nuovorecord inserito

   $id_inserito = mysql_insert_id();

   // creo le directory per il nuovo cliente

   mkdir("annunci/$categoria", 0777);

   mkdir("annunci/$categoria/$citta", 0777);

   mkdir("annunci/$categoria/$citta/$id_inserito", 0777);

   // copio i file neccessari per l'home page dedicata al cliente

   $file = "include/index.php";

    $newfile = "annunci/$categoria/$citta/$id_inserito/index.php";

tutto funziona, tranne se inserisco un nuovo cliente nella stessa categoria e citta, mi dice che la directory esiste gią.....

come posso fare???

inviato 9 anni fa
cereal
X 0 X

A parte che avresti dovuto postare in php questa domanda, eccoti la soluzione:

prima di creare una cartella controlla che gią non esista, se un cliente ha gią la cartella della categoria la cartella categoria c'č gią.

Stesso discorso per la cittą, mentre per l'id non č necessario dato che dovrebbe essere unico.

Es.

cliente 1:

categoria: sport

cittą: milano

id: 1

cliente 2

categoria: sport

cittą: milano

id: 2

Quando crei le prime cartelle va tutto bene:

sport

-milano

--1

Quando devi creare per il secondo utente:

sport c'č gią

-milano c'č gią

--2 da fare

E' chiaro?

risposto 9 anni fa
LonelyWolf
X 0 X

Scusa ma io č da un mese che utilizzo php, sono costretto per lavoro se no a casa!!!!! :)

cmq, mi stai spiegando che dovrei creare tutte le cartelle necessarie e che non cambiano e creare solo la cartella id per ogni cliente????

risposto 9 anni fa
cereal
X 0 X
Scusa ma io č da un mese che utilizzo php, sono costretto per lavoro se no a casa!!!!! :)

Questa non la capisco, me la spieghi? Io ho solo detto che č un quesito di PHP e non Database.

cmq, mi stai spiegando che dovrei creare tutte le cartelle necessarie e che non cambiano e creare solo la cartella id per ogni cliente????

Ti sto dicendo che prima di creare una cartella devi controllare se esiste gią o meno, se esiste č inutile crearla (ti dą l'errore che hai riportato), se non esiste la crei.

E' ovvio che se ci sono 2 o + clienti nella stessa categoria al primo crei la cartella della categoria ma gią al secondo hai il messaggio di errore perchč la cartella c'č gią.

Idem per la cittą, non ci possono essere 2 clienti in categoria sport a milano?

L'unica cartella che non sarą mai gią presente č quella con l'id, sempre che l'id sia univoco.

Rif.

http://it.php.net/manual/en/function.file-exists.php

risposto 9 anni fa
LonelyWolf
X 0 X

Si il quesito č php e mysql....

ho capito che se la cartella esiste gią mi da errore, l'id č univoco e va bene... il problema per me ora č : se inserisco un nuovo utente con categoria sport e cittą milano come faccio a dirgli di crearmi la cartella con nome id proprio li invece che per es. categoria auto cittą torino..???

sicuramente sarņ io tonto ma non capisco...

cmq ti posto tutto il codice :

<?php

if($_POST) {

   inserisci_record();

}

else {

   mostra_form();

}

function inserisci_record()

{

    // richiamo il file di configurazione

   require 'config.php';

   // richiamo lo script responsabile della connessione a MySQL

   require 'connect.php';

   // recupero i campi di tipo "stringa"

   $nome             = trim($_POST['nome']);

   $descrizione1     = trim($_POST['descrizione1']);

   $descrizione2     = trim($_POST['descrizione2']);

   $telefono         = trim($_POST['telefono']);

   $email            = trim($_POST['email']);

   $data=date('y-m-d'); //,$time

   //$citta            = trim($_POST['citta']);

   //$categotia        = trim($_POST['categoria']);

   // verifico se devo eliminare gli slash inseriti automaticamente da PHP

   if(get_magic_quotes_gpc())

   {

   $nome             = stripslashes($nome);

   $descrizione1     = stripslashes($descrizione1);

   $descrizione2     = stripslashes($descrizione2);

   $telefono         = stripslashes($telefono);

   $email            = stripslashes($email);

   //$citta            = stripslashes($citta);

   //$categotia        = stripslashes($categotia );

   }

   $nome             = mysql_real_escape_string($nome);

   $descrizione1     = mysql_real_escape_string($descrizione1);

   $descrizione2     = mysql_real_escape_string($descrizione2);

   $telefono         = mysql_real_escape_string($telefono);

   $email            = mysql_real_escape_string($email);

   //$citta            = mysql_real_escape_string($citta);

   //$categotia        = mysql_real_escape_string($categotia );

   // recupero gli altri campi del form

   //$sesso      = isset($_POST['sesso']) ? intval($_POST['sesso']) : 0;

   //$newsletter = isset($_POST['newsletter']) ? 1 : 0;

   $categoria   = intval($_POST['categoria']);

   $citta   = intval($_POST['citta']);

   // verifico la presenza dei campi obbligatori

      if(!$nome)

   {

   echo "

      header(<script>alert('Devi inserire il nome')</script>)

      <script>window.location = ('nuovo.php')</script>";

      exit;

   }

//$messaggio = urlencode("Non hai inserito il nome");

   // preparo la query

   $query = "INSERT INTO clienti (nome,descrizione1,descrizione2,telefono,email,citta,categoria,data)

           VALUES ('$nome','$descrizione1','$descrizione2','$telefono','$email','$citta','$categoria','$data')";

   // invio la query

   $result = mysql_query($query);

   // controllo l'esito

   if (!$result) {

      die("Errore nella query $query: " . mysql_error());

   }

   // recupero l'id autoincrement generato da MySQL per il nuovorecord inserito

   $id_inserito = mysql_insert_id();

   // creo le directory per il nuovo cliente

   mkdir("annunci/$categoria", 0777);

   mkdir("annunci/$categoria/$citta", 0777);

   mkdir("annunci/$categoria/$citta/$id_inserito", 0777);

   // copio i file neccessari per l'home page dedicata al cliente

   $file = "include/index.php";

    $newfile = "annunci/$categoria/$citta/$id_inserito/index.php";

if (!copy($file, $newfile)) {

   echo "failed to copy $file...\n";

}   

   // chiudo la connessione a MySQL

   mysql_close();

   echo "

      header(<script>alert('Cliente \"$nome\" salvato con successo.')</script>)

      <script>window.location = ('nuovo.php')</script>";

}

function mostra_form()

{

// mostro un eventuale messaggio

   if(isset($_GET['msg']))

      echo '<b>'.htmlentities($_GET['msg']).'</b><br /><br />';

   ?>

   

risposto 9 anni fa
cereal
X 0 X
// creo le directory per il nuovo cliente
if (!file_exists("annunci/$categoria")){ //se non c'č la crea
   mkdir("annunci/$categoria", 0777);
}
if (!file_exists("annunci/$categoria/$citta")){ //se non c'č la crea
   mkdir("annunci/$categoria/$citta", 0777);
}
   mkdir("annunci/$categoria/$citta/$id_inserito", 0777); //sicuramente non c'č, la crea

// copio i file neccessari per l'home page dedicata al cliente
   $file = "include/index.php";
    $newfile = "annunci/$categoria/$citta/$id_inserito/index.php";
risposto 9 anni fa
LonelyWolf
X 0 X

Come sempre molto gentili e disponibili....

Ti ringranzio .......... :)

Carlo.

risposto 9 anni fa
cereal
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda