Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

DevilRocks92

Criar um ficheiro php

Mensagens Recomendadas

DevilRocks92    0
DevilRocks92

Boas,

Eu estou a criar uma app para gerir uma escola de musica (juntamente com um site). Na app criei uma secção onde posso adicionar cursos (instrumentos) e na parte de adicionar o programa do curso (o que se aprende) fiz uma RichTextBox, mas ha 3 coisas que me estao a "impedir"...

1º - guardar o que escrevo na richtextbox num ficheiro php.

2º - por o topo.php (banner/menu) e o rodape.php (footer) ja definidos em todas os ficheiros php que crio.

3º - será possivel enviar o ficheiro php para o alojador?

4º - como é que crio um menu de tipos de lista (marcas/numerção) e insiro na textbox?

Espero que alguem me ajude o mais brevemente possivel.

Obrigado,

DevilRocks92

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
DevilRocks92    0
DevilRocks92

Alguem me pode dizer o que é que esta mal neste codigo?


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim myStream As Stream
        Dim saveFileDialog1 As New SaveFileDialog()
        'Create the file stream for writing
        Dim stream As New StreamWriter(Application.StartupPath & "\filename.php", False)

        'Write the initial PHP line
        stream.WriteLine("<?PHP")

        'Write the include statement for the header
        stream.WriteLine("include_once('top.php'); ?>")

        'And now, write out all the lines from the richtextbox
        For Each line As String In RichTextBox1.Lines()
            stream.WriteLine("echo """ & line & """;")
        Next

        'Write the include statement for the footer
        stream.WriteLine("<?PHP include_once('down.php');")

        'Write the end of the PHP file
        stream.WriteLine("?>)")

        'Flush and close the stream when you're done
        stream.Flush()
        stream.Close()

        saveFileDialog1.Filter = "PHP files (*.php)|*.php|All files (*.*)|*.*"
        saveFileDialog1.FilterIndex = 2
        saveFileDialog1.RestoreDirectory = True

        If saveFileDialog1.ShowDialog() = DialogResult.OK Then
            myStream = saveFileDialog1.OpenFile()
            If (myStream IsNot Nothing) Then
                ' Code to write the stream goes here.
                myStream.Close()
            End If
        End If
    End Sub

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
bioshock    170
bioshock

Acabei de testar apenas:

       

Dim stream As New IO.StreamWriter(Application.StartupPath & "\filename.php", False)
        stream.WriteLine("<?PHP")
        stream.Close()

E funcionou perfeitamente.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
ribeiro55    44
ribeiro55

E funciona.

O problema é que quando utilizas o SaveFileDialog, ficas com a ideia que o StreamWriter vai adivinhar que é para lá que queres escrever, quando na realidade já fizeste uns 5 writes ao stream original em Application.StartupPath & "\filename.php"  ;)

Verifica na pasta bin\Debug o ficheiro filename.php e abre-o.

Tens de utilizar o SaveFileDialog antes de abrires o stream.

O SaveFileDialog só te dá o caminho do ficheiro... nada mais.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
bioshock    170
bioshock

Erm..nem reparei no SaveFileDialog:

Dim sfd As New SaveFileDialog
        With sfd
            .Filter = "PHP files (*.php)|*.php|All files (*.*)|*.*"
            .FilterIndex = 2
            .Title = "Guardar ficheiro.."
            If .ShowDialog = Windows.Forms.DialogResult.OK Then
                If Not IO.Path.GetExtension(sfd.FileName) = ".php" Then
                    sfd.FileName = IO.Path.GetFileNameWithoutExtension(sfd.FileName) & ".php"
                End If
                Dim stream As New IO.StreamWriter(sfd.FileName, False)
                stream.WriteLine("<?PHP")
                ' + resto
                stream.Close()
            End If
        End With

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
DevilRocks92    0
DevilRocks92

Erm..nem reparei no SaveFileDialog:

Já grava. Agora tenho outros problemas:

1º copiar o nome do ficheiro guardado na TextBox:

Public Class curso_prog
    Public fich As String

(...)

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        MsgBox(fich)
        curso_add.TextBox3.Text = fich
    End Sub

    Private Sub SaveFileDialog1_FileOk(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles SaveFileDialog1.FileOk
        fich = SaveFileDialog1.FileName.ToString
    End Sub

2º Enviar o ficheiro .php para o webhost: (tenho este codigo em php)

<?php
session_start();

require "../incluir/geral.php";
    require_once "../incluir/conexao.php";

$loc=$_POST['local'];
$lnk=$_POST['link'];

if (isset($_FILES["logo"])){
	$arquivo = isset($_FILES["logo"]) ? $_FILES["logo"] : FALSE;
        $config = array();
        $config["tamanho"] = 906883;
        $config["largura"] = 6000;
        $config["altura"] = 5000;
        $config["diretorio"] = "../banners/";
        function nome($extensao){
            global $config;
            $temp = substr(md5(uniqid(time())), 0, 10);
            $imagem_nome = $temp . "." . $extensao;
            if(file_exists($config["diretorio"] . $imagem_nome)) {$imagem_nome = nome($extensao);}
            return $imagem_nome;
        }
        if($arquivo){
            $erro = array();
            if(!eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $arquivo["type"]))
            {$erro[] = "Arquivo em formato inválido! A imagem deve ser jpg, jpeg, bmp, gif ou png. Envie outro arquivo";
            }else{
                if($arquivo["size"] > $config["tamanho"])
                {$erro[] = "Arquivo em tamanho muito grande! A imagem deve ser de no máximo " . $config["tamanho"] . " bytes. Envie outro arquivo";}
                $tamanhos = getimagesize($arquivo["tmp_name"]);
                if($tamanhos[0] > $config["largura"])
                {$erro[] = "Largura da imagem não deve ultrapassar " . $config["largura"] . " pixels";}
                if($tamanhos[1] > $config["altura"])
                {$erro[] = "Altura da imagem não deve ultrapassar " . $config["altura"] . " pixels";}
            }
            if(!sizeof($erro)){
                preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $arquivo["name"], $ext);
                $imagem_nome = nome($ext[1]);
                $imagem_dir = $config["diretorio"] . $imagem_nome;
                move_uploaded_file($arquivo["tmp_name"], $imagem_dir);
		    $Result1 = mysql_query("insert into banners (bnr_imagem, bnr_pos, bnr_link) values ('$imagem_nome', '$loc', '$lnk')", $conexao) or die(mysql_error());
		}else{ 
                echo "<tr><td colspan=2 bgcolor=red><B><U>Ocorreu(am) o(s) seguinte(s) erro(s):</u><BR>";
                foreach($erro as $err){echo " - " . $err . "<BR>";}
                echo "</B></td></tr>";
			exit;
            }

        }
}

header("Location: banners.php");
?>

Alguem me pode ajudar, necessito disto o mais breve possivel.

Obrigado,

DevilRocks92

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
ribeiro55    44
ribeiro55

Ninguém quer saber se queres com brevidade ou não.

A comunidade não é um servicedesk.

1 Copiar o nome do ficheiro guardado na textbox?

Explica lá isso de outra forma.

2 Se já tens script PHP para fazer o upload (não olhei para o código), podes utilizar HTTP requests e enviar o ficheiro.

Existem, no entanto, outras formas que dependem dos meios que tens à tua disposição, por exemplo envio de ficheiro via FTP.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
bioshock    170
bioshock

Também não percebi a primeira pergunta.

Relativamente à segunda, se queres fazer o envio do ficheiro para um host, podes utilizar a seguinte linha de código:

My.Computer.Network.UploadFile()

Com os devidos parâmetros.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
DevilRocks92    0
DevilRocks92

Alguem me consegue arranjar uma especie de plug in para o Visual Basic 2008 para utilizar o Utilities.FTP, sem este "plug in" nao consigo trabalhar, e ja tive a procura e nao encontrei muita coisa.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
DevilRocks92    0
DevilRocks92

Também não percebi a primeira pergunta.

Relativamente à segunda, se queres fazer o envio do ficheiro para um host, podes utilizar a seguinte linha de código:

My.Computer.Network.UploadFile()

Com os devidos parâmetros.

Podes-me ajudar a por os parametros nesse pedaço de codigo. A unica maneira que encontrei na net foi usar o Imports Utilities.FTP, mas nao consegui "instalar" esse imports no VB.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
DevilRocks92    0
DevilRocks92
To upload a file and show the progress of the operation

    Use the UploadFile method to upload a file, specifying the source file's location and the target directory location as a string or URI. This example uploads the file Order.txt to http://www.cohowinery.com/uploads.aspx without supplying a user name or password, shows the progress of the upload, and has a time-out interval of 500 milliseconds.

    VB

    My.Computer.Network.UploadFile( _

    "C:\My Documents\Order.txt", _

    "http://www.cohowinery.com/upload.aspx", "", "", True, 500)

Se o ficheiro que eu quero mandar é uma imagem da pa mandar com este codigo, certo? E nao tou a perceber esse  "http://www.cohowinery.com/upload.aspx".

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
bioshock    170
bioshock

My.Computer.Network.UploadFile(sourceFileName, Address, Username, Password, ShowUI, connectionTimeout, onUserCancel)

sourceFileName

String . Path and name of file to upload. Required.

address

String or Uri. URL, IP address, or URI of destination server. Required.

userName

String . User name to authenticate. Default is an empty string: "".

password

String . Password to authenticate. Default is an empty string: "".

showUI

Boolean . Whether to display progress of the operation. Default is False.

connectionTimeout

Int32 . Timeout interval in milliseconds. Default is 100 seconds.

onUserCancel

UICancelOption . Action to be taken when the user clicks Cancel. Default is ThrowException.

Exemplo:

My.Computer.Network.UploadFile("D:\Downloads\Teste.zip", "ftp://user1@ftp.somedomain.com/Test.zip", _ 
"user1", "pass1", True, 500, FileIO.UICancelOption.DoNothing)

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
DevilRocks92    0
DevilRocks92

Sem querer maçar, quero confirmar uma coisa a imagem que eu quero enviar tem de ser enviada para uma pasta fica:

My.Computer.Network.UploadFile("D:\Downloads\image.jpg", "ftp://user1@ftp.somedomain.com/images/image.jpg", _
"user1", "pass1", True, 500, FileIO.UICancelOption.DoNothing)

ou tiro o nome do ficheiro?

ftp://user1@ftp.somedomain.com/images/"

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita a nossa Política de Privacidade