Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    février 2012
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : février 2012
    Messages : 152
    Points : 67
    Points
    67

    Par défaut Creer un nom de base de donnees en vérifiant qu'il n'existe pas

    Bonjour,
    Je tente de faire ce petit 'moteur' pour créer une BD avec un nom qui n'existe pas.

    Le scénario:
    1. Mettre le nom des bases dans un array
    2. Créer un premier nom de base aleatoire
    3. Tester s'il existe en bouclant l'array
    4. S'il existe re-créer un nom aléatoire
    5. Relancer le test

    Mais ce 'moteur' ne tourne que deux fois.
    En code ca fait:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    //*** Creation du tableau des noms de databases
    	$array_db=array();	
    	try { $sql = "SHOW DATABASES";$stmt = $bdd_appli->prepare($sql);$stmt->execute(array());
    	         // Les mettre en array 
    	         while ($results=$stmt->fetch()) { 
    	         	array_push($array_db,$results[0]);
    	         }
    	      } catch(PDOException $e) {echo 'Erreur: '.$sql . "<br>" . $e->getMessage();$erreur="$_POST deconnect<br>".$sql;}
    //*** Creation du tableau des noms de databases
     
    //***  Function random pour créer le nom de la nouvelle base
    function random($car) {
    	$string = "";$chaine = "abcdefghijklmnopqrstuvwxyz0123456789";
    	srand((double)microtime()*1000000);
    	for($i=0; $i<$car; $i++) {$string .= $chaine[rand()%strlen($chaine)];}return $string;} 
    //***  Function random pour créer le nom de la nouvelle base 
     
    // Nom de la nouvelle base
    	$db_name=random(5);;
     
     
    //*** Function test_exist
    $db_exist=0;
    function test_exist($array_db,$db_name,$db_exist) {
     
    	      foreach ($array_db as $key => $nom_base) {
     
    	      	if ($nom_base==$db_name) {
    	      		$db_exist=1;
    	      		echo '<br>En test '.$db_name.' = '.$db_exist.'<br>';
    				return $db_exist;
    				exit();
    	      	} // if 
    	      } // foreach
     
    	    }
    //*** Function test_exist
     
     
    if (test_exist($array_db,$db_name,$db_exist)==1) {
    	echo $db_name.' exist<br>';
    	$db_exist=0;
    	$db_name=random(1);
    	echo 'test de: '.$db_name;
    	test_exist($array_db,$db_name,$db_exist);
    }
    else {
    	echo '<hr>Else db name= '.$db_name;
    }
    Qu'en pensez-vous ?
    C'est du n'importe quoi ?
    "Ils ne savaient pas que c'était impossible, alors ils l'ont fait." Mark Twain

  2. #2
    Membre extrêmement actif Avatar de Sodium
    Homme Profil pro
    Développeur Web
    Inscrit en
    avril 2014
    Messages
    1 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : avril 2014
    Messages : 1 160
    Points : 1 534
    Points
    1 534

    Par défaut

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT SCHEMA_NAME
      FROM INFORMATION_SCHEMA.SCHEMATA
     WHERE SCHEMA_NAME = 'DBName'
     
    CREATE DATABASE IF NOT EXISTS DBName;

    https://stackoverflow.com/questions/...atabase-exists

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    février 2012
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : février 2012
    Messages : 152
    Points : 67
    Points
    67

    Par défaut

    Ok, merci de la réponse

    > Pas besoin de boucler les tables, juste SHOW DATABASES avec LIKE nom_nouvelle table.
    -> Résultat vide si le nom n'existe pas.

    Mais comment relancer le test avec un nouveau nom ?
    (dans le cas où la base existe déjà).
    "Ils ne savaient pas que c'était impossible, alors ils l'ont fait." Mark Twain

  4. #4
    Membre extrêmement actif Avatar de Sodium
    Homme Profil pro
    Développeur Web
    Inscrit en
    avril 2014
    Messages
    1 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : avril 2014
    Messages : 1 160
    Points : 1 534
    Points
    1 534

    Par défaut

    Heu juste une idée comme ça... avec une boucle ?

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    février 2012
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : février 2012
    Messages : 152
    Points : 67
    Points
    67

    Par défaut

    Oui avec une boucle,
    mais le problème est de relancer le test avec un autre nom de base
    (provenant de la function random)
    "Ils ne savaient pas que c'était impossible, alors ils l'ont fait." Mark Twain

Discussions similaires

  1. [Débutant] Obtenir le nom du base de donnee
    Par MADA BLACK dans le forum Visual Studio
    Réponses: 2
    Dernier message: 18/02/2018, 23h43
  2. Creer un executable avec base de donnees
    Par mactar85 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 04/02/2013, 12h30
  3. Nom de base de donnee avec trait de 6
    Par jaafar dans le forum Requêtes
    Réponses: 2
    Dernier message: 07/10/2008, 18h00
  4. creer un intranet pour Base de donnees
    Par rosita dans le forum Administration
    Réponses: 1
    Dernier message: 10/05/2007, 13h47
  5. Réponses: 7
    Dernier message: 26/03/2007, 10h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo