Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Frameworks JS (http://www.forosdelweb.com/f127/)
-   -   me falta solo poder subir fotos para hacer mi blog ajax (http://www.forosdelweb.com/f127/falta-solo-poder-subir-fotos-para-hacer-mi-blog-ajax-572393/)

metalcliff 03/04/2008 16:26

me falta solo poder subir fotos para hacer mi blog ajax
 
Hola a todos, he hecho un blog en ajax que me funciona muy bien, parecido al wordpress, y con base de datos. y y me guarda el nombre, la fecha, el comentario y la ruta de la imagen que guardo en un input type= "file" a la base de datos...
lo unico que quiero y me he cabeseado dias es poder subir la imagen a mi carpeta y despues mostrarla que eso me preocupare yo, pero subir la imagen se me hace un problema, me he cabeseado dias y dias,

tengo este index

Cita:

<!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">
<head>
<title>Database-Enabled AJAX</title>
<link href="css/layout.css" rel="stylesheet" type="text/css" />
<link href="css/style.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="js/Ajax.js"></script>
<script type="text/javascript" src="js/Page.js"></script>

</head>

<body onload="Ajax.Request('services/connector.php?method=get', Page.onResponse);">
<div id="layout" align="center">
<div id="posts"></div>
<p><input type="button" value="add new post" onclick="Ajax.Request('services/connector.php?method=save', Page.onResponse);" /></p>
<p><div id="loading"></div></p>
</div>

</body>
</html>

este mysql_connect (le puse ese define porsiacaso)

Cita:

<?php

DEFINE ('DB_USER', 'root');
DEFINE ('DB_PASSWORD', '');
DEFINE ('DB_HOST', 'localhost');
DEFINE ('DB_NAME', 'ajax4');


define('IMG_DIR', 'C:\wamp\www\Tutorial_ajax\ajax13\upload');
// Make the connnection and then select the database.
$dbc = @mysql_connect (DB_HOST, DB_USER, DB_PASSWORD) OR die ('Could not connect to MySQL: ' . mysql_error() );
mysql_select_db (DB_NAME) OR die ('Could not select the database: ' . mysql_error() );

?>



este post.class, que maneja todo lo de la base de datos



Cita:

<?php

class Post
{
var $table;

function Post()
{
require_once('mysql_connect.php');
$this->table = "webref_ajax";
}

function dbConnect()
{
DEFINE ('LINK', mysql_connect (DB_HOST, DB_USER, DB_PASSWORD));
}

function get()
{
$this->dbConnect();
$query = "SELECT * FROM $this->table ORDER BY id asc";
$result = mysql_db_query (DB_NAME, $query, LINK);

$xml = '<?xml version="1.0" encoding="ISO-8859-1" ?>';
$xml .= '<posts>';
while($row = mysql_fetch_array($result))
{
$xml .= '<post>';
$xml .= '<id>'. $row['id'] .'</id>';
$xml .= '<date>'. $row['date'] .'</date>';
$xml .= '<title><![CDATA['. $row['title'] .']]></title>';
$xml .= '<description><![CDATA['. $row['description'] .']]></description>';
$xml .= '<image><![CDATA['. $row['image'] .']]></image>';
$xml .= '</post>';
}
$xml .= '</posts>';
mysql_close();

return $xml;
}

function save($id, $title, $description, $image)
{
$this->dbConnect();
$query = "SELECT * FROM $this->table WHERE id='$id'";
$result = @mysql_query ($query);
if (mysql_num_rows($result) > 0)
{
$query = "UPDATE $this->table SET title='$title', description='$description', image='$image', date=NOW() WHERE id='$id'";
$result = @mysql_query($query);
}
else
{
$query = "INSERT INTO $this->table (title, description, image, date) VALUES ('$title', '$description', '$image', NOW())";
$result = @mysql_query($query);
}
mysql_close();
return $this->get();
}

function delete($id)
{
$this->dbConnect();
$query = "DELETE FROM $this->table WHERE id='$id'";
$result = @mysql_query($query);
mysql_close();
return $this->get();
}

}

?>

este connector que es muy importante por q tiene los get


Cita:

<?php

header("Content-Type: application/xml; charset=UTF-8");
require_once("../classes/Post.class.php");
$post = new Post();
echo $post->$_GET['method']($_GET['id'], $_GET['title'], $_GET['description'], $_GET['image']);

?>


este ajax.js que es que llama al xmlhttprequest clasico


Cita:

var Ajax = new Object();

Ajax.Request = function(url, callbackMethod)
{
Ajax.request = Ajax.createRequestObject();
Ajax.request.onreadystatechange = callbackMethod;
Ajax.request.open("POST", url, true);
Ajax.request.send(url);
}

Ajax.createRequestObject = function()
{
var obj;
if(window.XMLHttpRequest)
{
obj = new XMLHttpRequest();
}
else if(window.ActiveXObject)
{
obj = new ActiveXObject("MSXML2.XMLHTTP");
}
return obj;
}

Ajax.CheckReadyState = function(obj)
{
if(obj.readyState == 0) { document.getElementById('loading').innerHTML = "Sending Request..."; }
if(obj.readyState == 1) { document.getElementById('loading').innerHTML = "Loading..."; }
if(obj.readyState == 2) { document.getElementById('loading').innerHTML = "Loading..."; }
if(obj.readyState == 3) { document.getElementById('loading').innerHTML = "Loading..."; }
if(obj.readyState == 4)
{
if(obj.status == 200)
{
document.getElementById('loading').innerHTML = "";
return true;
}
else
{
document.getElementById('loading').innerHTML = "HTTP " + obj.status;
}
}
}

metalcliff 03/04/2008 16:26

Re: me falta solo poder subir fotos para hacer mi blog ajax
 
Y aca viene lo mas importante, el page.js que donde estan todas las funciones y variables para armar el html... y necesito meter un formulario en la funcion onResponse en la var html para poder subir la foto desde ahi y que quede utilizable.. pero no me deja ponerle un formulario en esa parte un formulario que lo pondre mas abajo




Cita:

var Page = new Object();
Page.index;
Page.startUpload = function()
{
document.getElementById('f1_upload_process').style .visibility = 'visible';
document.getElementById('f1_upload_form').style.vi sibility = 'hidden';
return true;
}

Page.stopUpload = function(success)
{
var result = '';
if (success == 1){
result = '<span class="msg">The file was uploaded successfully!<\/span><br/><br/>';
}
else {
result = '<span class="emsg">There was an error during file upload!<\/span><br/><br/>';
}
document.getElementById('f1_upload_process').style .visibility = 'hidden';
document.getElementById('f1_upload_form').innerHTM L = result + '<label>File: <input name="image" type="file" size="30" /><\/label><label><input type="submit" name="submitBtn" class="sbtn" value="Upload" /><\/label>';
document.getElementById('f1_upload_form').style.vi sibility = 'visible';
return true;
}
Page.onResponse = function()
{
if(Ajax.CheckReadyState(Ajax.request))
{
document.getElementById('posts').innerHTML = "";
var response = Ajax.request.responseXML.documentElement;
var _post = response.getElementsByTagName('post');

if(_post.length == 0)
{
document.getElementById('posts').innerHTML = 'There are currently no available posts.<br/>Click the "add new post" button above to add a new post';
}

var postDisplay = "";
var formPostDisplay = "";

for(var i=0; i<_post.length; i++)
{
var _title = response.getElementsByTagName('title')[i].firstChild.data;
var _description = response.getElementsByTagName('description')[i].firstChild.data;
var _image = response.getElementsByTagName('image')[i].firstChild.data;
var _date = response.getElementsByTagName('date')[i].firstChild.data;
var _id = response.getElementsByTagName('id')[i].firstChild.data;

if(_title == "" && _description == "")
{
postDisplay = "style='display:none'";
formPostDisplay = "style=''";
}
else
{
postDisplay = "style=''";
formPostDisplay = "style='display:none'";
}

var html = "<div class='post' id='post_"+ i +"' "+ postDisplay +">"
+ "<div class='title' id='title_"+ i +"'>"+ _title
+ "&nbsp;&nbsp;<a href=\"javascript:Page.toggle('"+ i +"');\">edit</a></div>"
+ "<div class='description' id='description_"+ i +"'>"+ _description +"</div>"
+ "<div class='image' id='image_"+ i +"'>"+ _image +"</div>"
+ "<div class='date' id='date_"+ i +"'>"+ _date +"</div>"
+ "</div>"
+ "<div class='post' id='formPost_"+ i +"' "+ formPostDisplay +">"
+ "<div class='title'><input type='text' name='title' id='formTitle_"+ i +"' size='60' value='"+ _title +"'></div>"
+ "<div class='description'><textarea type='text' id='formDescription_"+ i +"' wrap='virtual' cols='60' rows='15'>"+ _description +"</textarea></div><br>"
+ "<div class='image'><input type='file' name='image' id='formImage_"+ i +"' size='30' value='"+ _image +"'></div>"
+ "<div class='date'>"+ _date +"</div>"
+ "<input type='button' name='cancel' value='cancel' onclick=\"javascript:Page.toggle('"+ i +"');\">"
+ "<input type='button' name='delete' value='delete' onclick=\"javascript:Page.deletePost("+ _id +");\">"
+ "<input type='button' name='submit' value='save' onclick=\"javascript:Page.saveNewPost("+ _id +","+ i +");\">"
+ "</div>";

document.getElementById('posts').innerHTML += html;
}
}
}

Page.saveNewPost = function(_id, _index)
{
var newDescription = document.getElementById("formDescription_"+ _index).value;
var newTitle = document.getElementById("formTitle_"+ _index).value;
var newImage = document.getElementById("formImage_"+ _index).value;
Page.setIndex(_index);
Ajax.Request("services/connector.php?method=save&id="+ _id +"&title="+ newTitle +"&description="+ newDescription +"&image="+ newImage, Page.getPost);
}

Page.deletePost = function(_id)
{
Ajax.Request("services/connector.php?method=delete&id="+ _id, Page.onResponse);
}


Page.getPost = function()
{
if(Ajax.CheckReadyState(Ajax.request))
{
var response = Ajax.request.responseXML.documentElement;
var _title = response.getElementsByTagName('title')[Page.getIndex()].firstChild.data;
var _description = response.getElementsByTagName('description')[Page.getIndex()].firstChild.data;
var _image = response.getElementsByTagName('image')[Page.getIndex()].firstChild.data;
var _date = response.getElementsByTagName('date')[Page.getIndex()].firstChild.data;

document.getElementById("title_"+ Page.getIndex()).innerHTML = _title;
document.getElementById("description_"+ Page.getIndex()).innerHTML = _description;
document.getElementById("image_"+ Page.getIndex()).innerHTML = _image;
document.getElementById("date_"+ Page.getIndex()).innerHTML = _date;
Page.toggle(Page.getIndex());
}
}

Page.toggle = function(id)
{
if(document.getElementById("formPost_"+id).style.d isplay == 'none')
{
document.getElementById("formPost_"+id).style.disp lay = '';
document.getElementById("post_"+id).style.display = 'none';
}
else if(document.getElementById("post_"+id).style.displ ay == 'none')
{
document.getElementById("post_"+id).style.display = '';
document.getElementById("formPost_"+id).style.disp lay = 'none';
}
}

Page.setIndex = function(_index) { Page.index = _index; }
Page.getIndex = function() { return Page.index; }

este es el formulario


Cita:

<form action="upload.php" method="post" enctype="multipart/form-data" target="upload_target" onsubmit="startUpload();" >
<p id="f1_upload_process" align="center">Loading...<br/><img src="loader.gif" /><br/></p>
<p id="f1_upload_form" align="center"><br/>
<label>
<input name="myfile" type="file" size="30" />
</label>
<label>
<input type="submit" name="submitBtn" class="sbtn" value="Upload" />
</label>
</p>

<iframe id="upload_target" name="upload_target" src="#" style="width:0;height:0;border:0px solid #fff;"></iframe>
</form>

y este es el upload.php


Cita:

<?php
// Edit upload location here
$destination_path = getcwd().DIRECTORY_SEPARATOR;

$result = 0;

$target_path = $destination_path . basename( $_FILES['myfile']['name']);

if(@move_uploaded_file($_FILES['myfile']['tmp_name'], $target_path)) {
$result = 1;
}

sleep(1);
?>

<script language="javascript" type="text/javascript">window.top.window.stopUpload(<?php echo $result; ?>);</script>


¿COMO SE PUEDE INGRESAR UN FORMULARIO EN UNA VARIABLE, OSI NO SE PUEDE QUE ES LO QUE CREO, QUE SE PUEDE HACER?

metalcliff 03/04/2008 16:27

Re: me falta solo poder subir fotos para hacer mi blog ajax
 
la base de datos es esta

Cita:

CREATE TABLE `webref_ajax` (
`id` int(11) NOT NULL auto_increment,
`date` datetime NOT NULL default '0000-00-00 00:00:00',
`description` longtext NOT NULL,
`title` varchar(33) NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;


La zona horaria es GMT -6. Ahora son las 10:17.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.