Creare tabel in mysql cu nume din alt tabel
Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
-
bvlucretiu
- Mesaje:88
Creare tabel in mysql cu nume din alt tabel
Bună!
Lucrez la un site propriu în localhost și aș dori să știu ce cod(php) ar trebui să pun în comandă, pentru a putea crea un tabel într-o bază de date, iar acelui tabel să-i dau numele unei valori care există într-o celulă a unui alt tabel aflat în aceeași bază de date?
Cod: Selectaţi tot
<?php
include 'connect.php';
if(empty($_POST)) {
if (!$_GET['id']) {
die('Produsul nu este valid.');
}
$id = $_GET['id'];
$sql = "SELECT * FROM alimentecapitole WHERE id='$id'";
$result = mysql_query($sql);
$row = mysql_fetch_assoc($result);
} else {
$id = $_POST['id'];
$numecapitol = $_POST['numecapitol'];
$sql = "UPDATE alimentecapitole SET numecapitol='$numecapitol' WHERE id='$id'";
mysql_query($sql);
header('Location: http://localhost/enorm_db/index.php?pagina=alimente_capitole');
}
?>
în loc de "UPDATE" aș dori să am ceva de genul "CREATE TABLE " dar nu știu cum ar trebui să formulez astfel încât să pot introduce numele tabelului care să se creeze să fie cel preluat de variabila $_POST, iar numele câmpurilor create să rămână aceleași!
Nu știu dacă m-am făcut înțeles, însă cei care cunosc programare presupun că își dau seama ceea ce doresc!
Vă mulțumesc anticipat!
Toate bune!
MarPlo
Mesaje:4343
Salut
Incearca asa:
1. Se face un select cu acel id in tabelul de unde vrei sa iei numele nou.
Cod: Selectaţi tot
$sql = "SELECT nume_coloana FROM nume_tabel WHERE id= $id LIMIT 1";
2. Se preia valoarea din randul returnat si se adauga la CREATE TABLE.
Cod: Selectaţi tot
$sql = "CREATE TABLE ". $row['nume_coloana'] ." (id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, Definire Coloane ..) CHARACTER SET utf8 COLLATE utf8_general_ci";
bvlucretiu
Mesaje:88
Nu știu unde am greșit căci nu-mi afișează nici un răspuns, nici că s-a creat nici că nu s-a creat tabelul, iar în phpmyadmin tabelul nu se crează!
La click pe lincul care mă trimite în pagina de creere tabel, acesta cu codul, mă trimite direct în pagina pe care am specificat-o în "header location" la închiderea comenzii mysql, fără nici un mesaj!
Cod: Selectaţi tot
include 'connect.php';
if (empty($_POST)) {
if (!$_GET['id']) {
die('Produsul nu este valid.');
}
$id = $_GET['id'];
$sql = "SELECT numecapitol FROM alimentecapitole WHERE id='$id'";
$result = mysql_query($sql);
$row = mysql_fetch_assoc($result);
} else {
$id = $_POST['id'];
$tabnouid = $_POST['tabnouid'];
$sql = "CREATE TABLE ". $row['numecapitol']. " (id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
numecapitol VARCHAR(50) NOT NULL) CHARACTER SET utf8 COLLATE utf8_general_ci";
if (mysql_query($sql))
echo '<br /><br /><br /><center><h4>Tabelul <u>alimentecapitole</u> a fost creat.</h4></center><br />';
else
echo '<br /><br /><br /><center><h4>Tabelul <u>alimentecapitole</u> nu a putut fi creat deoarece - '. mysql_errno(). ' : '. mysql_error(). '</h4></center>';
header('Location: http://localhost/enorm_db/index.php?pagina=alimente_capitole');
}
mysql_close();
MarPlo
Mesaje:4343
Incearca asa:
Cod: Selectaţi tot
include 'connect.php';
if(isset($_REQUEST['id'])){
$id = intval($_REQUEST['id']);
$sql = "SELECT numecapitol FROM alimentecapitole WHERE id = $id LIMIT 1";
$result = mysql_query($sql);
$row = mysql_fetch_assoc($result);
if(isset($row['numecapitol'])){
$sql = "CREATE TABLE ". $row['numecapitol']. " (id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, numecapitol VARCHAR(50) NOT NULL) CHARACTER SET utf8 COLLATE utf8_general_ci";
if(mysql_query($sql)) echo '<br /><br /><br /><center><h4>Tabelul <u>'. $row['numecapitol'] .'</u> a fost creat.</h4></center><br />';
else echo '<br /><br /><br /><center><h4>Tabelul <u>'. $row['numecapitol'] .'</u> nu a putut fi creat deoarece - '. mysql_errno(). ' : '. mysql_error(). '</h4></center>';
}
else echo 'Produsul nu este valid.';
}
else echo 'Not an id';
bvlucretiu
Mesaje:88
Mulțumesc f. mult!
Este ok funcționează însă a apărut o nouă problemă la înregistrările din tabelul din care se crează noul tabel la înregistrările care conțin două cuvinte îmi apare
Cod: Selectaţi tot
Tabelul Ingrijire corporala nu a putut fi creat deoarece - 1064 : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'corporala (id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, numecapitol VARCHAR(50) N' at line 1
presupun că ar trebui să execute o comandă care să înlocuiască spațiul dintre cuvinte cu "_" , și nu știu cum și unde să inserez funcția respectivă!
MarPlo
Mesaje:4343
Asa ar fi indicat, ca numele de tabele si coloanbe din baza de date sa nu contina spatiu.
Daca vrei sa inlocuiesti spatiu cu "_", se poate cu str_replace() in pp.
Asa in codul dat mai sus:
Cod: Selectaţi tot
$sql = "CREATE TABLE ". str_replace(' ', '_', trim($row['numecapitol'])). " ..";
bvlucretiu
Mesaje:88
Este OK, functioneaza!
Multumesc mult!
Subiecte similare
- Creare meniu in site cu php
Scripturi de pe site
Primul mesaj
Salut
Am incercat sa pun icons pe primul nivel al meniului din tutorialu tau: Creare site de la zero si nu reusesc sa il adaug pe butonele care...
Ultimul mesaj
Multumes pt ajutor
Este ok acum.
Din exeplul dat de tine am mai vazut ceva intersant si anume acel meniu asa zis breadcrumb cu ce ma selectat deja....