Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal, estou desenvolvendo um sisteminha para cadastra álbuns e suas respectivas músicas. Estou utilizando PHP orientado a objetos +- no padrão MVC, digo +- pois estou aprendendo ainda. Lógico, estou fazendo uso de AJAX.
O problema é o seguinte: Consegui fazer o uso do ajax utilizando o método GET para exibir dados tranquilamente, mas não consigo utilizar com o método POST para cadastrar algum conteúdo no banco de dados e validar o formulário. Segue os códigos:
view/insertSong.php:
<div class="title">Inserir música no banco de dados</div>
<div id="message"></div>
<div id="form">
<form>
Artista:
<input type="text" id="artist"><br />
Título:
<input type="text" id="title"><br />
Número da música:
<input type="text" id="track"><br />
Álbum id:
<input type="text" id="alb_id"><br />
<input type="button" value="Enviar" onclick="insertSong('insert');">
</form>
</div>
A página inserSong.php está sendo chamada por um include na página index.php que chama o arquivo javascript a seguir.
view/js/scripts.js:
function openAjax() {
var xmlhttp;
try {
xmlhttp = new XMLHttpRequest();
} catch(ee) {
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch(E) {
xmlhttp = false;
}
}
}
return xmlhttp;
}
function getById(ID){
return document.getElementById(ID);
}
function insertSong(action){
var xmlhttp = openAjax();
xmlhttp.onreadystatechange = function(){
if(xmlhttp.readyState == 4 && xmlhttp.status == 200){
getById('message').innerHTML = xmlhttp.responseText;
}
}
var insert = action;
var artist = getById('artist').value;
var title = getById('title').value;
var track = getById('track').value;
var alb_id = getById('alb_id').value;
parameters = 'action='+insert+'&artist='+artist+'&title='+title+'&track='+
track+'&alb_id='+alb_id;
xmlhttp.open('POST', '/controllers/MusicController.php', true);
xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
xmlhttp.send(parameters);
}
controllers/MusicController.php:
<?php
ini_set("display_errors", 1);
error_reporting(E_ALL);
require_once ("../models/Music.php");
class musicController {
private $cadastre;
private $update;
private $delete;
private $selection;
public function __construct() {
if (isset($_POST['action'])) {
$action = $_POST['action'];
echo 'entrou via post';
} elseif (isset($_GET['action'])) {
$action = $_GET['action'];
echo 'entrou via get';
} else {
echo 'Erro no action';
}
if ($action == "insert") {
$this->cadastre = new Music();
$this->insert();
} elseif ($action == "update") {
$this->update = new Music();
$this->update();
} elseif ($action == "delete") {
$this->delete = new Music();
$this->delete();
} else {
echo 'Erro';
}
}
private function insert() {
$this->cadastre->setAlb_id($_POST['alb_id']);
$this->cadastre->setArtist($_POST['artist']);
$this->cadastre->setTitle($_POST['title']);
$this->cadastre->setTrack($_POST['track']);
$this->cadastre->insert();
}
private function update() {
$this->update->setId($_POST['id']);
$this->update->setAlb_id($_POST['alb_id']);
$this->update->setArtist($_POST['artist']);
$this->update->setTitle($_POST['title']);
$this->update->setTrack($_POST['track']);
$this->update->update();
}
private function delete() {
$this->delete->setId($_GET['id']);
$this->delete->delete();
}
private function select() {
$this->selection->select();
}
}
new musicController();
?>
models/Music.php:
<?php
require_once ("DataBase.php");
class music {
private $id;
private $track;
private $alb_id;
private $title;
private $artist;
private $dataBase;
private $search;
function __construct() {
$this->dataBase = new dataBase();
}
public function setId($int) {
$this->id = $int;
}
public function setTrack($int) {
$this->track = $int;
}
public function setAlb_id($int) {
$this->alb_id = $int;
}
public function setTitle($string) {
$this->title = $string;
}
public function setArtist($string) {
$this->artist = $string;
}
public function setSearch($string) {
$this->search = $string;
}
public function getId() {
return $this->id;
}
public function getTrack() {
return $this->track;
}
public function getAlb_id() {
return $this->alb_id;
}
public function getTitle() {
return $this->title;
}
public function getArtist() {
return $this->artist;
}
public function getSearch() {
return $this->search;
}
public function insert() {
$track = $this->getTrack();
$alb_id = $this->getAlb_id();
$title = $this->getTitle();
$artist = $this->getArtist();
$sql = "INSERT INTO music (track, alb_id, title, artist) VALUES
('$track', '$alb_id', '$title', '$artist')";
mysql_query($sql) or die(mysql_error());
}
public function update() {
$id = $this->getId();
$track = $this->getTrack();
$alb_id = $this->getAlb_id();
$title = $this->getTitle();
$artist = $this->getArtist();
$sql = "UPDATE music SET track='$track', alb_id='$alb_id', title='$title',
artist='$artist' WHERE id='$id'";
mysql_query($sql);
}
public function delete() {
$id = $this->getId();
$sql = "DELETE FROM music WHERE id='$id'";
mysql_query($sql);
}
public function select() {
$sql = "SELECT * FROM music";
$query = mysql_query($sql);
while ($result = mysql_fetch_array($query)) {
echo $result['title'] . "<br />";
}
}
}
?>
Ps.: A conexão com o banco de dados está funcionando normalmente, pois sem o uso do AJAX eu consigo realizar as opções do CRUD normalmente.
Carregando comentários...