IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

PHP & Base de données Discussion :

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


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 257
    Points : 97
    Points
    97
    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
    Femme Profil pro
    Développeuse web
    Inscrit en
    Avril 2014
    Messages
    2 324
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeuse web

    Informations forums :
    Inscription : Avril 2014
    Messages : 2 324
    Points : 2 006
    Points
    2 006
    Billets dans le blog
    1
    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 régulier
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 257
    Points : 97
    Points
    97
    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
    Femme Profil pro
    Développeuse web
    Inscrit en
    Avril 2014
    Messages
    2 324
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeuse web

    Informations forums :
    Inscription : Avril 2014
    Messages : 2 324
    Points : 2 006
    Points
    2 006
    Billets dans le blog
    1
    Par défaut
    Heu juste une idée comme ça... avec une boucle ?

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 257
    Points : 97
    Points
    97
    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

+ Répondre à la discussion
Cette discussion est résolue.

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