Creer une base de donnés MYSQL en php , sans php my admin? [PHP/MYSQL] - PHP - Programmation
Marsh Posté le 19-04-2003 à 18:16:44
CREATE TABLE `test` (`1` TINYINT not null AUTO_INCREMENT, `2` TINYTEXT not null, `3` TINYTEXT not null , PRIMARY KEY (`1`), INDEX (`1`), UNIQUE (`1`))
avec php et mysql_query
Marsh Posté le 19-04-2003 à 18:17:21
C'est du SQL std.
avec les commandes pour executer les rêquetes (mysql.query() etc...)
tu passes des ordres SQL
$sql="create table TOTO (id int not null auto_increment, toto varchar(50), primary key(id))";
genre de truc comme ça
edit : grillaid
Marsh Posté le 19-04-2003 à 18:26:12
Ok Merci !
Mais pour créer la base de données ?
Une table est bien contenue dans une base de données ?
Marsh Posté le 19-04-2003 à 19:53:23
essaye de sauvegarder ta BDD sur phpmyadmin et tu regarde le fichier qu'il te crée, tu trouvera surment plein de truc interesant.
Marsh Posté le 20-04-2003 à 13:44:33
Pourtant je pense qu'on peut le faire puisque des CMS comme XOOPS ou NUKE créer une base de donnés et des tables sans que le webmaster ai a ouvrir PHPMYADMIN
J'ai moi meme installer XOOPS ,et à l'époque je ne savais pas utiliser PHPMYADMIN...
Marsh Posté le 20-04-2003 à 14:12:01
SmilM a écrit : Pourtant je pense qu'on peut le faire puisque des CMS comme XOOPS ou NUKE créer une base de donnés et des tables sans que le webmaster ai a ouvrir PHPMYADMIN |
bien sûr qu'on peut. On peut aussi programmer soi-même un outil de gestion pour mysql. On peut tout en fait...
Marsh Posté le 20-04-2003 à 14:45:49
SmilM a écrit : Ok Merci ! |
Regarde la syntaxe de 'CREATE database....'.
Mais il faut que l'utilisateur qui l'exécute ait les droits.
Marsh Posté le 20-04-2003 à 18:26:43
En session telnet, tu peux lancer
mysql -u username
puis executer tes scripts de création SQL (filename -s je crois, mais voir l'aide)
Marsh Posté le 25-04-2003 à 12:20:03
Pffff
Je suis bete , chez free multimania et compagnie ,les base de données est creer a partir du site de hebergeur , on peut juste creer les tables , je me goure pas ?
Donc ce qui faudrait que je fasse , c'est que je demande a l'utilisateur dans un formulaire , son nom d'utilisateur ,son mot de passe , avec le nom de sa base de données c'est ca ?
Et je reutilise ca pour me connecter a la base de données
Je suis bon là ?
Par contre , comment on affecte une variable ici :
$db = mysql_connect('localhost', 'root', ''; // connexion à la base
suffit que je vire les quotes et ca devient une variable ?
Donc je peut mettre une variable php du genre:
$db = mysql_connect($nomdelabase, $user, $motdepasse);
Je suis bon là ?
Merci d'avance
Marsh Posté le 25-04-2003 à 12:55:50
Bon voilà ou j'en suis :
J'ai creer un fichier dans un formulaire : demande.php( qui contient la demande du passe , de l'user , et de la base)
Qui pointe vers le fichier add.php lors de l'envoi
add.php :
<?
// On commence par vérifier si les champs sont vides
if(empty($user) OR empty($base))
{
echo '<font color="red">Attention, Aucun champ ne doit rester vide !! </font>';
}
// Aucun champ n'est vide, on peut enregistrer dans la table
else
{
$db = mysql_connect($base, $user, $passe); // connexion à la base
mysql_select_db('portfolio',$db); // sélection de la base
}
print('Acces a la base reussi';
$sql_query = "CREATE TABLE `basedushout` (`1` TINYINT not null AUTO_INCREMENT, `2` TINYTEXT not null, `3` TINYTEXT not null , PRIMARY KEY (`1`), INDEX (`1`), UNIQUE (`1`))";
?>
Voilà!
Si j'écris root en user , rien en passe ,et localhost pour la base , le résultat est une page blanche.Donc ca marche
Si je mets n'importe quoi dans le forumulaire, il detecte bien les erreurs.
Mais je n'ai pas trouver comment creer la table ...
C'est quoi le code exact ?Apparament ce que j'ai mis ne provoque pas d'erreurs, mais ca ne marche pas non plus, pourtant la base de donnés "portfolio" existe bien.
(je test en local sur easyphp)
merci d'avance
Marsh Posté le 25-04-2003 à 13:11:35
Je crois pas qu'une colonne puisse avoir pour nom un chiffre
Sinon, une colonne en primary key est automatiquement unique et indexée, donc tes 2 dernières contraintes sont inutiles.
Marsh Posté le 25-04-2003 à 13:13:57
mrBebert a écrit : Je crois pas qu'une colonne puisse avoir pour nom un chiffre |
Ha ?
Bon je vais essayer autre chose , enfin le code ,c'est celui de JR.
edit :
voilà avec ca :
<?
// On commence par vérifier si les champs sont vides
if(empty($user) OR empty($base))
{
echo '<font color="red">Attention, Aucun champ ne doit rester vide !! </font>';
}
// Aucun champ n'est vide, on peut enregistrer dans la table
else
{
$db = mysql_connect($base, $user, $passe); // connexion à la base
mysql_select_db('portfolio',$db); // sélection de la base
}
print('Acces a la base reussi';
$sql_query = "CREATE TABLE `shoutboxbordel` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`nom` VARCHAR(255) NOT NULL,
`message` VARCHAR(255) NOT NULL
)";
?>
Meme résultat => Pas d'erreur , mais pas de table crée
Marsh Posté le 25-04-2003 à 13:27:52
SmilM a écrit : |
là, il ne te crée pas de base , c'est normal puisque tu te connectes à la pbase portfolio
la table ne se crée pas parce que tu n'execute pas la requête sql... tu te contentes de créer une variable php qui contient la requête cf doc php pour les fonctions mysql (http://fr.php.net/manual/en/ref.mysql.php)
Marsh Posté le 25-04-2003 à 13:56:49
Ha oui , en fait je mets la requete pour creer le table dans la variable sql_query.
Mais comment je l'execute cette requete aprés ?
Marsh Posté le 25-04-2003 à 16:16:50
SmilM a écrit : Ha oui , en fait je mets la requete pour creer le table dans la variable sql_query. |
Evidemment, sans exécuter la requête, ca marche lmoins bien:
mysql_query("la requete" );
Tu peux tester le résultat :
if (! mysql_query("bla bla" )) {
echo "Y a une erreur";
}
Marsh Posté le 25-04-2003 à 18:18:15
pfff
Je capte pas...
je fais ca :
$sql_query = "CREATE TABLE `shoutboxbordel` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`nom` VARCHAR(255) NOT NULL,
`message` VARCHAR(255) NOT NULL
)";
et aprés je fais quoi ?
mysql_query("sql_query" ); ??
Et puis pour le test ??
Si ma requete "blabla" // ???? BLABLA ??
alors j'écris ...
Marsh Posté le 25-04-2003 à 18:28:31
mysql_query exécute la requête, et te renvoie le résultat de cette requête (que tu peux parcourir s'il s'agit d'un SELECT).
Le "bla bla", c'est juste que j'avais pas envie de recopier toute ta requête
Un petit détour par un tutoriel ou par la doc sur www.php.net me paraitrait utile
Marsh Posté le 25-04-2003 à 19:06:21
Je fais ca :
<?
// On commence par vérifier si les champs sont vides
if(empty($user) OR empty($base))
{
echo '<font color="red">Attention, Aucun champ ne doit rester vide !! </font>';
}
// Aucun champ n'est vide, on peut enregistrer dans la table
else
{
$db = mysql_connect($base, $user, $passe); // connexion à la base
mysql_select_db('portfolio',$db); // sélection de la base
}
print('Acces a la base reussi';
$sql_query = "CREATE TABLE `shoutboxbordel` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`nom` VARCHAR(255) NOT NULL,
`message` VARCHAR(255) NOT NULL
)";
mysql_query($sql_query);
}
ca marche pas
mysql_query(sql_query);
non plus
mysql_query("CREATE TABLE `shoutboxbordel` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`nom` VARCHAR(255) NOT NULL,
`message` VARCHAR(255) NOT NULL
)"; );
non plus
Je pourrais avoir le code exact svp ?
Dans la doc , je trouve pas, la réponse doit y etre , mais ya tellement de chose!
?>
Marsh Posté le 25-04-2003 à 19:45:28
Déja, vérifie la requête "à la main". Ca ne sert à rien de faire un script qui exécute une requête si celle ci n'est pas correcte (le "PRIMARY KEY" ne va pas là).
Et vérifie le résultat de mysql_query.
Marsh Posté le 25-04-2003 à 20:29:02
bon j'arrive a rien
Ca fait une journée entiere que je galere sur ca , ca me saoule..
<?
// On commence par vérifier si les champs sont vides
if(empty($user) OR empty($base))
{
echo '<font color="red">Attention, Aucun champ ne doit rester vide !! </font>';
}
// Aucun champ n'est vide, on peut enregistrer dans la table
else
{
$db = mysql_connect($base, $user, $passe); // connexion à la base
mysql_select_db('portfolio',$db); // sélection de la base
print('Acces a la base reussi';
$sql_query = "CREATE TABLE putaing (
id int(11) NOT NULL auto_increment,
nom varchar(255) NOT NULL default '',
message varchar(255) NOT NULL default '',
date varchar(255) NOT NULL default '',
PRIMARY KEY (id)
) TYPE=MyISAM;
";
mysql_query("sql_query" );
if (! mysql_query("CREATE TABLE `putaing` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`nom` VARCHAR(255) NOT NULL,
`message` VARCHAR(255) NOT NULL" )) {
echo "Y a une erreur";
}
}
?>
Mrbebert t'es le seul a bien vouloir répondre , et je t'en remercie cependant ,j'ai vraiment du mal avec tes explications...je m'embrouille ca me saoule
Tu n'aurais pas un code qui montre comment on crée une table , je travaillerai a partir de cette exemple , parce que la doc que j'ai trouvé sur le net est nul et que j'ai rien trouvé dans les google groups sur comment crée une table, comme je veux le faire.
Marsh Posté le 25-04-2003 à 20:36:32
C'est censé faire quoi ca : mysql_query("sql_query" );
Pourquoi tu fais 2 appels à mysql_query() ??
Et vérifie tes appels de fonction. Quand tu fais un mysql_connect() ou un mysql_select_db() (ou n'importe quel autre appel de fonction liée à la base), tu es censé vérifier que ca s'est bien passé (y a la doc sur www.php.net)
Pour créer une table, c'est juste exécuter une requête. Pour le moment, le problème vient plutot du PHP.
Marsh Posté le 25-04-2003 à 20:46:30
Ca pourrait donner un truc dans le genre :
Code :
|
Marsh Posté le 25-04-2003 à 21:09:57
heu......
Ya un probleme
déjà ton code ne marche pas, mais c'est pas le plus important:
Dans mon formulaire, je demande le nom de la base de données , la j'ai mis localhost, mais dans mon localhost , j'ai plusieurs bd , dont la base portfolio...
J'aimerais concevoir un shoutbox pour le mettre en ligne comme dit dans le 1er post , et pas pour etre utiliser sur easyphp...
Alors je sais pas si c'est spécial avec easyphp mais là je m'embrouille un peu.
Je demande la base de données et je donne localhost
enfin bref , je veux en venir a ca :
if (! mysql_select_db('portfolio',$db)) {
echo "Erreur sélection de la base";
exit;
}
Là on fait intervenir une base de données nommé portfolio mais elle n'existe pas chez l'utilisateur...mais juste chez moi !
Il faudrait que je remplace le <'portfolio'> (avec '' par <$base> (sans les '' ou je suis totalement ailleurs ?
Parce que la je crois que j'essaye peut etre de faire quelque chose d'un peu compliquer, enfin je sais pas...
J'attend ta réponse pour continuer.
A part ca...j'ai mal compris le code que tu m'as donné avec tout ces '!' partout, le '!' ca veut dire not equal non ?
Marsh Posté le 25-04-2003 à 21:12:47
Déjà localhost n'est pas une bdd mais le serveur MySQL
Ensuite, si tu veux connaître toutes les commandes, tu chopes PhpMyAdmin, et tu lui fais faire toutes les manips qui permettent la création d'une bdd et d'une table, en notant bien le code que PhpMyAdmin t'indique.
Et voilà, normalement no problemo !
UPDATE :
le ! veut dire différent de true => false
Marsh Posté le 25-04-2003 à 21:29:02
'portfolio', c'est juste une chaine de caractère "en dur". Tu peux remplacer par une variable, ca change rien. La seule chose importante, c'est qu'il y ait une chaine de caractères dans le premier paramètre de mysql_select_db().
"!", c'est le "NOT". Généralement, les fonctions renvoient True Quand c'est bon et FALSE en cas d'erreur.
Marsh Posté le 25-04-2003 à 21:40:10
SmilM a écrit : bon j'arrive a rien |
pauvre piti ... alors on va t'aider
et on corrige toutes les bourdes
essentiel :ne pas confondre connexion au serveur mysql et sélection de la base de données
Il faut que tu recuperes le password de l'utilisateur Mysql aussi via ton formulaire
Pour établir la connexion au serveur MySQL il te faut :
- le nom du serveur. En général "localhost";
- l'utilisateur
- le mot de passe utilisateur.
donc correction sur ton code précedent ... le premier paramétre de la fonction mysql_connect() -ou mysql_pconnect() - est l'@ du serveur et non pas le nom de la base
Deuxième étape : tu sélectionnes ta base de données.
- C'est la que tu te sers de la variable transmis par le formulaire ( $base ).
Etape 3 : tu formules ta requête SQL et tu stockes dans un variable ( $sql_query )
- j'ai verifié la requête (ok)
Etape 4 : tu éxécutes ta requête.....
Code :
|
edit : commentaire de merde & rapide optimisation - testé le script chez moi en local, ca fonctionne
Marsh Posté le 25-04-2003 à 22:21:08
Pour les commandes à utiliser pour créer une base :
http://www.phpfrance.com/tutorials/index.php?id=8
Marsh Posté le 25-04-2003 à 22:24:05
Merci beaucoup beaucoup !!
Bon je vais essayer de plus trop vous embeter, demain je vais a Surcouf m'acheter un bookin sur php/mysql (y'en a un mieux que les autres ?) , j'espere que ca va me permettre d'évoluer la dedans parce que ca m'interesse pas mal.
bon je test le code...
J'ai relu 3 fois ,j'ai presque compris
Par contre :
OR empty($pass))
Le pass peut etre vide, sous easyphp , le pass doit rester vide.(par default en tout cas).
Mal compris :
--Or die ==> si ca marche pas ca fait un print de ce qui suit le die ?
--encore ca : "erreur n° " . @mysql_errno() . " : " . @mysql_error()."<br>REQUTE : ".$sql_query
enfin je pense à :
errno? n° de l'erreur ,genre erreur 404
mysqlerror décrit l'erreur
le "." pour concatener (regrouper , enfin , je suis plus sur du terme exacte)
$sql_query = il affiche :"CREATE TABLE putaing (
id int(11) NOT NULL auto_increment,
nom varchar(255) NOT NULL default '',
message varchar(255) NOT NULL default '',
date varchar(255) NOT NULL default '',
PRIMARY KEY (id)
) TYPE=MyISAM;";
Voilà je crois que c'est tout , je test ca et j'édite.
Encore Merci!!
Marsh Posté le 25-04-2003 à 22:28:33
L'erreur renvoyée par mysql_errno() n'a aucun rapport avec les erreurs de navigateurs (404, 403, 500 ...). C'est juste un numéro d'erreur propre à PHP.
mysql_error() est plus pratique, elle affiche un texte d'erreur.
La syntaxe :
mysql_query($sql_query) or die("erreur" );
doit être lue sous la forme :
if (! mysql_query($sql_query)) {
die("Erreur" );
}
Si la partie à gauche du OR n'est pas vérifiée, la partie droite est exécutée.
(die(), c'est une fonction qui quitte le script lorsqu'elle est appellée)
Marsh Posté le 25-04-2003 à 22:30:43
SmilM a écrit : --Or die ==> si ca marche pas ca fait un print de ce qui suit le die ? |
Marsh Posté le 25-04-2003 à 22:32:57
SmilM a écrit : |
il est vide par défaut mais spa bien du tout
SmilM a écrit : |
ouaip c'est un alias de la fonction exit.... elle te renvoie un message d'erreur à l'écran et quitte le script. Ca te permet de cibler les erreurs
SmilM a écrit : |
yep, ca renvoie le numéro et message d'erreur renvoyés par MySQL.
Là encore c'est très utile pour ne pas perdre de temps a cherccher des erreurs la ou elle ne le sont pas.
et le "." c'est l'opérateur de concaténation en PHP, gagné
Marsh Posté le 25-04-2003 à 22:37:37
Merci beaucoup de votre aide
Je trouve que c'est plus pratique de lire ca :
mysql_query($sql_query) or die("erreur" );
Que ca :
if (! mysql_query($sql_query)) {
die("Erreur" );
}
Enfin perso ca me parait plus clair, aprés c'est sur que pour l'instant je débute et je connais tres peu la sythaxe mais bon ,ca me parle plus avec des OR et sans le if .
Perso j'ai fais du pascal mais ce qui est bizarre la c'est que dans la condition meme , il execute
Enfin en algo pascal c'est + jolie =>
Si tout va bien alors (if ..then)
On execute (instructions ... )
sinon (else)
writeln('Ca marche pas';
Enfin, apparament les 2 possiblités marche,donc aucune différence, a part que l'une est peut etre plus propre que l'autre c'est ca ?
c'est un peu du W3C
Marsh Posté le 25-04-2003 à 22:40:31
simogeo a écrit : |
J'ai pas trouver comment on change,quand je regarde dans l'admin d'easyphp, dans parametres, on trouve les parametres par default , mais pas possible de les changer a partir de là apparament.
Marsh Posté le 25-04-2003 à 22:44:10
SmilM a écrit : Merci beaucoup de votre aide |
ben une ligne au lieu de 3 ... moi j'ai vite choisi lequel était le plus propre et le plus lisible.
> mrBebert : L'intérprétation est la même
Marsh Posté le 25-04-2003 à 22:45:56
SmilM a écrit : |
utilises phpmyadmin pour manger les droits utilisateur.
le plus sécurisé c'est de creer un utilisateur spécial ayant des droits uniquement sur la base tu laquelle tu travailles.
Marsh Posté le 25-04-2003 à 22:49:15
simogeo a écrit : |
J'ai pas tres bien compris mais c'est pas grave
Marsh Posté le 25-04-2003 à 23:00:10
simogeo a écrit : |
C'est ce que je dis
Pour quelqu'un qui connait pas la syntaxe avec le OR, il peut la voir comme un if () comme je l'ai indiqué.
Mais je dis pas qu'il faut pas utiliser le OR, au contraire
Marsh Posté le 25-04-2003 à 23:09:44
SmilM a écrit : |
ouaip c'est pas grave ....
tu as le temps d'aller à la pêche aux infos de ce côté
Marsh Posté le 19-04-2003 à 18:07:29
Salut!
J'aimerais faire un shoutbox qui pourrait etre télécharger depuis mon site internet et simple d'installation, seulement le probleme est qu'il faut creer une base de donnés mysql et des tables , sans l'aide de PHPMYADMIN, et ca,je sais pas faire.
Tout les tuto que je vois sur le net disent comment faire avec PHPMYADMIN, mais sans...?
Pourtant je pense qu'on peut le faire puisque des CMS comme XOOPS ou NUKE créer une base de donnés et des tables sans que le webmaster ai a ouvrir PHPMYADMIN.
Auriez vous un exemple de code pour creer une base de données et une table MYSQL sans l'aide de PHPMYADMIN ?
Merci d'avance.
SmilM
---------------
AfterEnd: Batissez un nouveau monde