changer ou rajouter un champ banniere
Hors ligneVirginie Le 27/10/2006 à 08:08 Profil de Virginie Configuration de Virginie

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>
Hors ligneAnthony Le 27/10/2006 à 22:05 Profil de Anthony Configuration de Anthony

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 :)
--

Hors ligneVirginie Le 28/10/2006 à 09:06 Profil de Virginie Configuration de Virginie

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
Hors ligneAnthony Le 28/10/2006 à 14:45 Profil de Anthony Configuration de Anthony

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)
--

Hors ligneVirginie Le 28/10/2006 à 15:16 Profil de Virginie Configuration de Virginie

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
Hors ligneAnthony Le 29/10/2006 à 00:03 Profil de Anthony Configuration de Anthony

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é ;)
--

Hors ligneVirginie Le 29/10/2006 à 08:42 Profil de Virginie Configuration de Virginie

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&#36146;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 **/
Hors ligneAnthony Le 29/10/2006 à 09:47 Profil de Anthony Configuration de Anthony

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']}',
--

Hors ligneVirginie Le 29/10/2006 à 12:33 Profil de Virginie Configuration de Virginie

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&#39329;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
Hors ligneAnthony Le 29/10/2006 à 20:18 Profil de Anthony Configuration de Anthony

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 ;)
--

Vous avez résolu votre problème avec VIC ? Faites-le savoir sur les réseaux sociaux !
Vulgarisation-informatique.com
Cours en informatique & tutoriels