Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa Tarde amigos do fórum imasters.
Visto que o phpMyAdmin não facilita muito a nossa
vida quando se trata de relacionamento no banco de dados
resolvi criar este simples script de uma página só apenas
para que não tenhamos que fazer tudo na mão sempre.
Minha intenção foi criar um script que permita converter facilmente
tabelas de qualquer tipo para InooDB e que também facilite relacionar
campos entre as tabelas.
*Com este script, sabendo quais tabelas e campos devemos alterar,
podemos até mesmo acessar bases remotamente e efetuar uma alteração.
*(O Usuário da base de dados remota precisa ter as permissões necessárias
para fazer as alterações necessárias).
Abaixo vai o código:
<?php //DECLARAÇÃO DE VARIÁVEIS
$dbserver = $_POST['dbserver'];
$dbuser = $_POST['dbuser'];
$dbpass = $_POST['dbpass'];
$database = $_POST['database'];
$md = $_POST['md'];
$cvtbpk = $_POST['cvtbpk'];
$cvtbfk = $_POST['cvtbfk'];
$tbpk = $_POST['tbpk'];
$tbfk = $_POST['tbfk'];
$fldpk = $_POST['fldpk'];
$fldfk = $_POST['fldfk'];
$send = $_POST['send'];
//VERIFICA SE A CHECKBOX ESTA MARCADA
if ($md!="") {
$server = $dbserver;
$user = $dbuser;
$pass = $dbpass;
$dtbase = $database;
$checked = "checked='checked'";
} else {
$server = '';
$user = '';
$pass = '';
$dtbase = '';
$checked = '';
}
//VERIFICA SE CLICARAM NO BOTÃO ENVIAR
if ($send!="") {
$msgsuc = "Alteração efetuada com sucesso!<br /><br />";
if ($dbserver!="" and $dbuser!="" and $database!="") {
$link = mysql_connect($dbserver,$dbuser,$dbpass) or die("Erro ao conectar com o Banco de dados ". mysql_error());
mysql_select_db($database,$link);
} else {
$msgerr = "Os dados do Banco de Dados devem ser preenchidos corretamente!";
}
if ($cvtbpk!="") mysql_query("ALTER TABLE `$cvtbpk` ENGINE = innodb");
if ($cvtbfk!="") mysql_query("ALTER TABLE `$cvtbfk` ENGINE = innodb");
if ($tbpk=="" or $tbfk=="" or $fldpk=="" or $fldfk=="") {
$msgerr = "Os dados do Relacionamento de Banco de Dados devem ser preenchidos corretamente!";
} else {
mysql_query("ALTER TABLE `$tbfk` ADD CONSTRAINT `FOREIGN` FOREIGN KEY (`$fldfk`) REFERENCES `$tbpk`(`$fldpk`);");
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="[http://www.w3.org/1999/xhtml">](http://www.w3.org/1999/xhtml)
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Relacionamento Entre Tabelas</title>
</head>
<body>
<?php //EXIBE MENSAGEM DE ERRO OU SUCESSO NA OPERAÇÃO
if ($msgerr!="") {
echo "<div align='center'><font size='3' color='red'><b>$msgerr</b></font></div><br /><br />";
} else {
echo "<div align='center'><font size='3' color='blue'><b>$msgsuc</b></font></div>";
}
?>
<form name="foreign_form" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<fieldset>
<legend align="center">Banco de Dados</legend>
<table cellpadding="0" cellspacing="0" border="0" align="center">
<tr>
<td align="right">Servidor: </td><td><input type="text" name="dbserver" value="<?php echo $server; ?>" /></td>
</tr>
<tr>
<td align="right">Usuário: </td><td><input type="text" name="dbuser" value="<?php echo $user; ?>" /></td>
</tr>
<tr>
<td align="right">Senha: </td><td><input type="password" name="dbpass" value="<?php echo $pass; ?>" /></td>
</tr>
<tr>
<td align="right">Banco: </td><td><input type="text" name="database" value="<?php echo $dtbase; ?>" /></td>
</tr>
<tr>
<td colspan="2" align="right"><input type="checkbox" name="md" <?php echo $checked; ?> /> Manter Dados</td>
</tr>
</table>
</fieldset>
<br />
<fieldset>
<legend align="center">Conversão de Tabelas Para InnoDB</legend>
<table cellpadding="0" cellspacing="0" border="0" align="center">
<tr>
<td align="right">Tabela PK: </td><td><input type="text" name="cvtbpk" /></td>
</tr>
<tr>
<td align="right">Tabela FK: </td><td><input type="text" name="cvtbfk" /></td>
</tr>
</table>
</fieldset>
<br />
<fieldset>
<legend align="center">Relacionamento Entre Tabelas</legend>
<table cellpadding="0" cellspacing="0" border="0" align="center">
<tr>
<td align="right">Tabela FK: </td><td><input type="text" name="tbfk" /></td>
</tr>
<tr>
<td align="right">Campo FK: </td><td><input type="text" name="fldfk" /></td>
</tr>
<tr>
<td align="right">Tabela PK: </td><td><input type="text" name="tbpk" /></td>
</tr>
<tr>
<td align="right">Campo PK: </td><td><input type="text" name="fldpk" /></td>
</tr>
</table>
</fieldset>
<br />
<div align="center"><input type="submit" name="send" value="Efetuar Alterações no Banco de Dados" /></div>
</form>
</body>
</html>Espero ter ajudado [http://forum.imasters.com.br/public/style_emoticons/](http://forum.imasters.com.br/public/style_emoticons/)default/thumbsup.gif
Boa Tarde amigos do Imasters.
Recebi um e-mail com reclamação referente a acentuação deste script
que não aparece direito quando o character set não é UTF-8 e sim ISO-8859-1
Também corrigi o erro de nomeação da chave estrangeira que não pode ser igual
a uma já existente no banco de dados.
Abaixo vai o script corrigido:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> Espero ter ajudado http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif