|
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> |
 Admin |
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é ;) -- 
|
|
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 **/ |
 Admin |
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']}',
-- 
|
|
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 |