changer une fonction d un champ

Eléphanteau du PHP | 34 Messages

29 oct. 2006, 17:48

bonjour j utilise un script de top site . son nom atsphp-5.1.2 il est anglais
j aimerai changer a fonction du champ à l interieur . Celui de la banniere .
Dans le script lorsqu une personne s enregistre elle dois donner l url de ça banniere. cette url est enregistre dans la base de donnée et pas l image de la banniere .
Moi ce que j aimerai c est de uploader , renomer, redimentionner et enregistrer l image sur mon serveur dans un dossier .

Dans ma base de donnée j aimerai enregistrer le chemin qui mene au dossier ou à ete enregisté la banniere corespondant au site qui viens de s enregistrer

se script et composé de deux fichier . il se combine ensemble join.php et join_form.html meme un petit aide de rien du tous me ferai plaisir car je suis debutante et je suis coinçé depuis un moment et encore merci de bien vouloir m aider
voici le fichier join.php

Code : Tout sélectionner

<?php //=========================================================================== // Aardvark Topsites PHP 5 // Copyright (c) 2003-2006 Jeremy Scheff. All rights reserved. //--------------------------------------------------------------------------- // http://www.aardvarktopsitesphp.com/http://www.avatic.com/ //--------------------------------------------------------------------------- // This program is free software; you can redistribute it and/or modify it // under the terms of the GNU General Public License as published by the // Free Software Foundation; either version 2 of the License, or (at your // option) any later version. // // This program is distributed in the hope that it will be useful, but // WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General // Public License for more details. //=========================================================================== if (!defined('ATSPHP')) { die("This file cannot be accessed directly."); } class join extends join_edit { function join() { global $FORM, $LNG, $TMPL; $TMPL['header'] = $LNG['join_header']; if (!isset($FORM['submit'])) { $this->form(); } else { $this->process(); } } function form() { global $CONF, $FORM, $LNG, $TMPL; if ($CONF['captcha']) { $TMPL['join_captcha'] = $this->do_skin('join_captcha'); } else { $TMPL['join_captcha'] = ''; } $TMPL['categories_menu'] = "<select name="category">n"; foreach ($CONF['categories'] as $cat => $skin) { if ($TMPL['category'] == $cat) { $TMPL['categories_menu'] .= "<option value="{$cat}" selected="selected">{$cat}</option>n"; } else { $TMPL['categories_menu'] .= "<option value="{$cat}">{$cat}</option>n"; } } $TMPL['categories_menu'] .= "</select>"; if (!isset($TMPL['url'])) { $TMPL['url'] = 'http://'; } if (!isset($TMPL['banner_url'])) { $TMPL['banner_url'] = 'http://'; } if (isset($TMPL['url'])) { $TMPL['url'] = stripslashes($TMPL['url']); } if (isset($TMPL['title'])) { $TMPL['title'] = stripslashes($TMPL['title']); } if (isset($TMPL['description'])) { $TMPL['description'] = stripslashes($TMPL['description']); } if (isset($TMPL['category'])) { $TMPL['category'] = stripslashes($TMPL['category']); } if (isset($TMPL['banner_url'])) { $TMPL['banner_url'] = stripslashes($TMPL['banner_url']); } if (isset($TMPL['email'])) { $TMPL['email'] = stripslashes($TMPL['email']); } $TMPL['content'] = $this->do_skin('join_form'); } function process() { global $CONF, $DB, $FORM, $LNG, $TMPL; $TMPL['username'] = $DB->escape($FORM['u'], 1); $TMPL['url'] = $DB->escape($FORM['url'], 1); $TMPL['title'] = $DB->escape($FORM['title'], 1); $FORM['description'] = str_replace(array("rn", "n", "r"), ' ', $FORM['description']); $TMPL['description'] = $DB->escape($FORM['description'], 1); $TMPL['category'] = $DB->escape($FORM['category'], 1); $TMPL['banner_url'] = $DB->escape($FORM['banner_url'], 1); $TMPL['email'] = $DB->escape($FORM['email'], 1); $TMPL['title'] = $this->bad_words($TMPL['title']); $TMPL['description'] = $this->bad_words($TMPL['description']); if ($this->check_input('join')) { $password = md5($FORM['password']); require_once("{$CONF['path']}/sources/in.php"); $short_url = in::short_url($TMPL['url']); $join_date = date('Y-m-d', time() + (3600*$CONF['time_offset'])); $DB->query("INSERT INTO {$CONF['sql_prefix']}_sites (username, password, url, short_url, title, description, category, banner_url, email, join_date, active, openid) VALUES ('{$TMPL['username']}', '{$password}', '{$TMPL['url']}', '{$short_url}', '{$TMPL['title']}', '{$TMPL['description']}', '{$TMPL['category']}', '{$TMPL['banner_url']}', '{$TMPL['email']}', '{$join_date}', {$CONF['active_default']}, 0)", __FILE__, __LINE__); $DB->query("INSERT INTO {$CONF['sql_prefix']}_stats (username) VALUES ('{$TMPL['username']}')", __FILE__, __LINE__); if ($CONF['google_friendly_links']) { $TMPL['verbose_link'] = ""; } else { $TMPL['verbose_link'] = "index.php?a=in&u={$TMPL['username']}"; } $TMPL['link_code'] = $this->do_skin('link_code'); $LNG['join_welcome'] = sprintf($LNG['join_welcome'], $TMPL['list_name']); if ($CONF['active_default']) { $TMPL['approve_message'] = ''; } else { $TMPL['approve_message'] = $LNG['join_approve']; } $join_email = new skin('join_email'); $join_email->send_email($TMPL['email']); if ($CONF['email_admin_on_join']) { $join_email_admin = new skin('join_email_admin'); $join_email_admin->send_email($CONF['your_email']); } $TMPL['content'] = $this->do_skin('join_finish'); } else { $this->form(); } } } ?>


et en dessous le formulaire join_form.html se script sous LICENSE GNU

Code : Tout sélectionner

<form action="index.php?a=join" method="post" name="join_form"> <fieldset> <legend>{$lng->join_user}</legend> <div class="{$error_style_username}"><label>{$lng->g_username}<br /> <input type="text" name="u" size="20" value="{$username}" /> {$error_username} </label></div><br /> <div class="{$error_style_password}"><label>{$lng->g_password}<br /> <input type="password" name="password" size="20" value="{$password}" /> {$error_password} </label></div> </fieldset> <fieldset> <legend>{$lng->join_website}</legend> <div class="{$error_style_url}"><label>{$lng->g_url}<br /> <input type="text" name="url" size="50" value="{$url}" /> {$error_url} </label></div><br /> <div class="{$error_style_title}"><label>{$lng->g_title}<br /> <input type="text" name="title" size="50" value="{$title}" /> {$error_title} </label></div><br /> <label>{$lng->g_description}<br /> <textarea cols="40" rows="5" name="description">{$description}</textarea><br /><br /> </label> <label>{$lng->g_category}<br /> {$categories_menu}<br /><br /> </label> <div class="{$error_style_banner_url}"><label>{$lng->g_banner_url}<br /> <input type="text" name="banner_url" size="50" value="{$banner_url}" /> {$error_banner_url} </label></div><br /> <div class="{$error_style_email}"><label>{$lng->g_email}<br /> <input type="text" name="email" size="50" value="{$email}" /> {$error_email} </label></div><br /> {$join_captcha} <input name="submit" type="submit" value="{$lng->join_header}" /> </fieldset> </form>


dans la base j ai 9 tables les enregistrement des sites se font dans la table _sites

la table _site est composé des champs suivant
username / password / url / short_url / title / description / category / banner_url / email / fichier / join_date / active

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

29 oct. 2006, 20:01

C'est le même ou bien vous pensez que c'est contagieux comme problème ? :lol: :wink:

Ceci étant, ce serait bien de nous dire ce qui te gène pour que l'on puisse t'aider plutôt que de nous donner le code et d'attendre que quelqu'un se dévoue pour le faire à ta place...

Il te faut :
1. changer l'input de la banière qui est en texte pour le passer en fichier
2. modifier l'enctype du formulaire pour qu'il accepte les fichier
3. tester et récupérer le fichier uploadé sur le serveur
4. stocker le chemin de celui-ci dans le champ de la banière
5. modifier l'affichage de la banière pour qu'il aille la chercher sur le serveur et non plus sur le web

c'est à toi de jouer maintenant :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

29 oct. 2006, 20:07

C'est le même ou bien vous pensez que c'est contagieux comme problème ? :lol: :wink:
On considère que c'est le même... :wink:
Alors hop on vire.

Le multipostage est interdit ici tu ferais bien de lire les règlement généraux
:twisted:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

30 oct. 2006, 10:44

@papayou_s
Ne cite pas tes propres messages (pas d'utilisation de [ quote] sinon c'est à n'y rien comprendre !!
Petite remise en forme du message
Ceci étant, ce serait bien de nous dire ce qui te gène pour que l'on puisse t'aider plutôt que de nous donner le code et d'attendre que quelqu'un se dévoue pour le faire à ta place...
--> je veus telecharger l image sur mon serveur dans un dossier

1. changer l'input de la banière qui est en texte pour le passer en fichier
-)> ou le changer

2. modifier l'enctype du formulaire pour qu'il accepte les fichier
-)> enctype qu est ce que c est

3. tester et récupérer le fichier uploadé sur le serveur
-)> oui comment

5. modifier l'affichage de la banière pour qu'il aille la chercher sur le
-)> avec un buton input

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

30 oct. 2006, 11:11

Merci Truc :)
1. changer l'input de la banière qui est en texte pour le passer en fichier
-)> ou le changer
Ben à l'endroit où se trouve ton champ dans ton formulaire...
En supposant que le champ contenant l'url de la banière s'appelle "banner_url" puisque c'est le nom qui est utilisé partout dans ton code, il te suffit de chercher un input nommé "banner_url" (et ça tombe bien, y a justement un champ qui s'appelle comme ça ;)) pour le modifier et le passer en type file.
2. modifier l'enctype du formulaire pour qu'il accepte les fichier
-)> enctype qu est ce que c est
L'enctype est un attribut de la balise <form> qu'il faut modifier afin d'informer le serveur que tu transféres des fichiers en plus des informations texte habituelles d'un formulaire. En regardant les tutos ou les topics du forum traitant de l'upload de fichier tu devrais trouver ton bonheur.
3. tester et récupérer le fichier uploadé sur le serveur
-)> oui comment
En regardant les tutos ou les topics du forum traitant de l'upload de fichier tu devrais trouver ton bonheur... et puis un petit coup d'oeil à la doc pour voir comment fonctionne la fonction move_uploaded_file()
5. modifier l'affichage de la banière pour qu'il aille la chercher sur le serveur et non plus sur le web
-)> avec un buton input
Ca j'en doute.. je parle de l'affichage de la banière, qui devrait vraissemblablement être une balise image et pas un bouton input...
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 34 Messages

30 oct. 2006, 20:36

pour l enctype j ai mis

enctype="multipart/form-data" --)> c est bon

J'ai regardé les tutos, traitant de l'upload.
je sais qu'il faut détecter, si le champ à une valeur, le type de fichier, le poids et âpres l uploadé
mais je n est pas pus adapter de script d upload
je ne sais pas ou mètre le script d upload

est ce que, j ai bon "la valeur à récupérer et dans $TMPL['banner_url']"
$TMPL['banner_url'] = $DB->escape($FORM['banner_url'], 1);

et l avaleur à renvoyer
$DB->escape($FORM['banner_url'], 1);

si c'est bon comment récupérer c'est valeur

mais j'ai un fichier class.php
avec des fonctions

À l'intérieur j'ai vu que les codeurs ont installés une fonction qui permet de Censure des mots et le traitement des erreurs lorsqu'un champ est faux.
est ce que le script d upload dois être mi dans class.php

mais j'ai un fichier

Eléphanteau du PHP | 34 Messages

01 nov. 2006, 10:07

1. changer l'input de la banière qui est en texte pour le passer en fichier
j ai ajouté un autre champ banner_url2 à chaque ligne de la page ou j avais banner_url dans join.php

Code : Tout sélectionner

avant if (!isset($TMPL['banner_url'])) { $TMPL['banner_url'] = 'http://'; }
code ajouté

Code : Tout sélectionner

if (!isset($TMPL['banner_url2'])) { $TMPL['banner_url2']= '$banner_url2';}
a la place de $banner_url2' j ai mis ça ' ' ou banner_url2'

code avant

Code : Tout sélectionner

$TMPL['banner_url'] = $DB->escape($FORM['banner_url'], 1);
code ajouté

Code : Tout sélectionner

$TMPL['banner_url2'] = $DB->escape($FORM['banner_url2'] = $this->image($TMPL['banner_url2'], 1));
peux ton recuper la valeur du champ la traiter dans une fonction externe d upload (image) et envoyer le resultat du traitement dans la base de donée

dans join_form.html j ai ajouter ça

code avant

Code : Tout sélectionner

<label>{$lng->g_banner_url}<br /> <input type="text" name="banner_url" size="50" value="http://" /><br /><br /> </label>
code ajouté

Code : Tout sélectionner

<label>{$lng->g_banner_url2}<br /> <input type="file" name="banner_url2" size="50" value="$banner_url2" /><br /><br /> </label>
et dans le champ <form action="index.php?a=join" method="post" enctype="multipart/form-data" />

j ai ajouté enctype="multipart/form-data"

mais j ai une erreur
Undefined index: banner_url2 in c:\program files\easyphp1-8\www\topsite\atsphp-5.0.3\sources\join.php on line 96
wrapper.html
pouvez vous me dire pourquoi j ai une erreur