Virginie |
Le 27/10/2006 à 08:08  |
|
bonjour j utilise un script de top site . son nom atsphp-5.1.2 anglais j aimerai ajouter ou changer un 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 uploadé l image de la renomer et de l enregistrer 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 c est enregistre
se script et composé de deux fichier qui se combine ensemble join.php et join_form.html meme un petit aide de rien du tous me ferai plaisir car je suis debutant et je suis coinçé depuis un moment mon site reposera une parti sur se script encore merci de bien vouloir m aider voici le fichier join.php
<?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("\r\n", "\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
<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> |
Anthony |
Le 27/10/2006 à 22:05  |
Fou du volant |
Salut,
ce que je ferais si j'étais toi, c'est d'utiliser l'id de la bannière (tu différencies bien tes bannières par un id unique non ?) cet id te servant à stocker l'image sur ton serveur, l'image portant alors comme nom l'id de la bannière :) |
Virginie |
Le 28/10/2006 à 09:06  |
|
je debute tu veus dire la clé qui me permet de differencier les enregistrements des uns des autres c est username
en local j ai ça qui s enregistre dans la case bannier de ma table _site C:\Documents and Settings\fx\Mes documents\Mes images\ban27.gif
peus tu etre plus claire je fais quoi ? et je met ou ? je crais un repertoire et je change le bouton d envoi c est ça |
Anthony |
Le 28/10/2006 à 14:45  |
Fou du volant |
virginie a écrit : tu veus dire la clé qui me permet de differencier les enregistrements des uns des autres c est username
Oui, tu te sers de ça pour nommer tes images, comme actuellement :) (ici tu as dit que tu avais par exemple ban27, je suppose que le 27 est l'id de la bannière) |
Virginie |
Le 28/10/2006 à 15:16  |
|
non le 27 n est pas l'id de la bannière) c est le champ username l id de la table
le champ banner_url enregistre j uste le chemin de l image dans la table C:\Documents and Settings\fx\Mes documents\Mes images\ban27.gif
peus tu me donnée plus d explication quel code et ou je dois le metre car je me prend la tete avec ça je suis dans le flou tatal je debut en plus dans le php et le mysql merci de ton aide
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 |
Anthony |
Le 29/10/2006 à 00:03  |
Fou du volant |
Le problème est que la base de données est mal conçue, si on rajoute un champ il va falloir modifier pas mal de code php interragisant avec la table je présume. M'enfin on peut essayer. Il faut que tu rajoutes un champ en "AUTOINCREMENT" nommé par exemple "id_banniere". Tu peux le mettre en début de table.
Ensuite bah il faut modifier la requête de sélection, tout dépend comment elle est faite (et surtout si elle est bien ou mal faite). Si elle est mal faite t'auras un truc genre SELECT * FROM ... WHERE ..., si elle est bien faite t'auras un truc genre SELECT url_banniere, autre_champ, etc... FROM ... WHERE
Il faudra également modifier les scripts d'insertion de bannière car il y aura un champ de plus à ajouter, cette fois-ci il faut chercher une requête de type INSERT :
INSERT INTO ... VALUES(...)
et là si le champ "id_banniere" que t'as rajouté est en début de table, il faudra modifier la requête comme ceci :
INSERT INTO ... VALUES("", ...) en gros rajouter le "",
Sinon que dire de plus, apparemment tu as un script tout-fait et tu débutes, vaut mieux je pense essayer de trouver un autre script plus performant si tu n'arrives pas à le modifier, ou alors apprends un peu plus le PHP/MySQL, tu verras ce n'est vraiment pas compliqué ;) |
Virginie |
Le 29/10/2006 à 08:42  |
|
j ai comme message requête SQL:
ALTER TABLE `top_annonce2_sites` CHANGE `id_banniere` `id_banniere` VARCHAR( 255 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL AUTO_INCREMENT MySQL a répondu:
#1063 - Mauvais param贲e de champ pour le champ 'id_banniere'
j aimerai conservais ce script car cela fais un mois que je le déchifre . j apprends le php seul de mon coté aide moi encore , j en serrai ravie
j ai fais c est modif est ce que c est ça qu il falait faire $TMPL['id_banniere'] = $DB->escape($FORM['id_banniere']); --> la fonction process()
$DB->query("INSERT INTO {$CONF['sql_prefix']}_sites (id_banniere, username, password, url,
VALUES ('{$TMPL['']}', '{$TMPL['username']}', '{$password}', '{$TMPL['url']}',
dans la function form() je mets quoi
et dans le fichier.html le bouton <input type='file' name='id_banniere' value="">
//** On pourrait pas utiliser une fonction qui télecharge l image et qui la stok dans la table **/ |
Anthony |
Le 29/10/2006 à 09:47  |
Fou du volant |
Pour id_banniere c'est un numéro, il faut donc mettre un champ de type numérique (tu peux mettre INT comme ça tu seras tranquille, tout en sachant que ça prend plus de place qu'un SMALLINT par exemple). cf Mysql et les types de données. Après tu mets ce champ en autoincrement. Pour le formulaire tu ne mets rien l'autoincrément est géré automatiquement par mysql.
$DB->query("INSERT INTO {$CONF['sql_prefix']}_sites (id_banniere, username, password, url,
VALUES ('{$TMPL['']}', '{$TMPL['username']}', '{$password}', '{$TMPL['url']}',
tu mets ça plutôt :
$DB->query("INSERT INTO {$CONF['sql_prefix']}_sites (id_banniere, username, password, url,
VALUES ("", '{$TMPL['username']}', '{$password}', '{$TMPL['url']}',
|
Virginie |
Le 29/10/2006 à 12:33  |
|
si je mets "" ça marche pas j ai une erreur -)> Parse error: parse error in c:/../../join.php on line 73 si je mets '' j ai un zero comme dessous
$DB->query("INSERT INTO {$CONF['sql_prefix']}_sites (id_banniere, username, password, url, VALUES ("", '{$TMPL['username']}', '{$password}', '{$TMPL['url']}',
si je mets ça sa marche, j ai un zero qui apparait dans le champ id_banniere
$DB->query("INSERT INTO {$CONF['sql_prefix']}_sites (id_banniere, username, password, url, VALUES ('{$TMPL['']}', '{$TMPL['username']}', '{$password}', '{$TMPL['url']}',
mysql ne veus pas metre en auto_increment Erreur requête SQL:
ALTER TABLE `top_annonce2_sites` CHANGE `id_banniere` `id_banniere` INT( 255 ) DEFAULT '0' NOT NULL AUTO_INCREMENT MySQL a répondu:
#1067 - Valeur par d馡ut invalide pour 'id_banniere'
j ai un zero dans le champ et la banniere et ou ?
et dans la table j ai mis INT |
Anthony |
Le 29/10/2006 à 20:18  |
Fou du volant |
Oui c'est DEFAULT 0 et non DEFAULT '0' car ce n'est pas une chaîne de caractères mais un entier. Sinon mets des ' ' au lieu des " " que j'ai mises pour le champ dans l'INSERT, je n'avais pas fait gaffe au reste ;) |