IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Module upload images+texte auto-incrémenté


Sujet :

Langage PHP

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 6
    Points : 1
    Points
    1
    Par défaut Module upload images+texte auto-incrémenté
    Bonjour à tous,

    Pour fêter mon inscription au Club, je vais vous exposer mon projet et crier : "A l'aide!".

    Tout d'abord je tiens à vous préciser que je ne connais pas (encore) correctement le PHP, étant tout simplement Technicien de support info.

    Donc, mon patron s'est mis en tête qu'il lui faudrait, sur son site, un module PHP permettant de uploader des images et du texte pour créer une page du genre "Trombinobiographie" de l'entreprise.

    Ce module ne serait accessible uniquement que par le module "Admin" qui est déjà en place, et ce pour éviter de se retrouver avec un trombi de tous les internautes ayant consulté le site.

    Mise en situation :

    Le site est composé de :
    • site vitrine en PHP
    • module admin en PHP(page de modification des textes et images du site vitrine)
    • bdd MySQL en PHP

    Ce qu'il me faudrait :
    Côté vitrine - Page "trombi.php"
    • la page "trombi.php" n'a pas encore été codée. Code à prévoir : xHTML Transi.
    • l'affichage des images et textes doit se faire par rapport aux infos contenues dans la bdd

      récupération du texte: directement dans la bdd
      récupération des images: grâce à leur url stocké dans la bdd

    Côté admin - Page "modif_trombi.php"
    • une page (formulaire?) liée à l'authentification du module "Admin" permettant l'upload des images dans un dossier spécifique, et du texte dans la base de données
    • une solution permettant de créer automatiquement des blocs/biographie ajoutée, à la suite les uns des autres (auto incrémentation?) sur "trombi.php"
      pour la mise en page, je devrais me débrouiller...
    • une solution permettant de supprimer une biographie ajoutée (la plus pertinente serait d'avoir un aperçu des "bio" en cours sur la page formulaire)


    Info : toutes les pages du site vont chercher les images+texte dans la bdd, mais je ne comprends pas (encore) vraiment leur "en-tête" codé en PHP.

    J'ai tous les accès possible au site. Si vous avez besoin de codes en particulier, je vous les donnerais (en enlevant les infos sensibles).

    En espérant avoir été le plus précis possible et ne pas vous demander la lune

    Je vous remercie d'avance.

    Cordialement,
    Mika.

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Février 2009
    Messages
    278
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Février 2009
    Messages : 278
    Points : 284
    Points
    284
    Par défaut
    Bah... Tu as tout dis lol

    Tu fais une page d'affichage qui récup les infos inséré dans la bdd via ta page de gestion du trombi qui se situe dans la parti admin dont l'accès est protégé.

    Pour insérer des données dans ta base tu as deux solutions pour la gestion des images, soit le formulaire upload l'image et la place ds un dossier puis enregistre ds la base le chemin vers celle-ci, soit tu upload l'image en binaire et tu crée une page type image.php qui permet l'affichage de cette dernière. Pas vraiment compliqué mais quand on y connais rien en php ça peut être un peu déroutant dans un premier temps.

    Afin de voir comment l'accès à la partie admin est géré tu peux donné le code d'une des pages de l'admin

    ps : magnifique mise en forme de ta question, ça change de l'ordinaire

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Salutations !

    Merci shadypierre pour ta réponse!

    Le site rencontrant actuellement d'énormes soucis de sécurité, je ne le laisserais ni apparaitre en clair, ni ne donnerais son adresse.
    Pour la question de sécurité, je poserais surement mes question sur un nouveau post.

    Voici donc le code PHP d'une page admin permettant de modifier une page du site vitrine.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    <?php require_once('../../Connections/admin_monsite.php'); ?>
    <?php
    if (!function_exists("GetSQLValueString")) {
    function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
    {
      $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
     
      $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
     
      switch ($theType) {
        case "text":
          $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
          break;    
        case "long":
        case "int":
          $theValue = ($theValue != "") ? intval($theValue) : "NULL";
          break;
        case "double":
          $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
          break;
        case "date":
          $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
          break;
        case "defined":
          $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
          break;
      }
      return $theValue;
    }
    }
     
    $editFormAction = $_SERVER['PHP_SELF'];
    if (isset($_SERVER['QUERY_STRING'])) {
      $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
    }
     
    if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form1")) {
      $updateSQL = sprintf("UPDATE accueil SET titre_page1=%s, texte_page1=%s, texte_page2=%s, image_page2=%s WHERE id=%s",
                           GetSQLValueString($_POST['titre_page1'], "text"),
                           GetSQLValueString($_POST['texte_page1'], "text"),
                           GetSQLValueString($_POST['texte_page2'], "text"),
                           GetSQLValueString($_POST['image_page2'], "text"),
                           GetSQLValueString($_POST['id'], "int"));
     
      mysql_select_db($database_admin_monsite, $admin_monsite);
      $Result1 = mysql_query($updateSQL, $admin_monsite) or die(mysql_error());
    }
     
    if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form1")) {
      $updateSQL = sprintf("UPDATE Page1 SET titre_page1=%s, texte_page1=%s, image_page1=%s, texte_page2=%s, image_page2=%s WHERE id=%s",
                           GetSQLValueString($_POST['titre_page1'], "text"),
                           GetSQLValueString($_POST['texte_page1'], "text"),
                           GetSQLValueString($_POST['image_page1'], "text"),
                           GetSQLValueString($_POST['texte_page2'], "text"),
                           GetSQLValueString($_POST['image_page2'], "text"),
                           GetSQLValueString($_POST['id'], "int"));
     
      mysql_select_db($database_admin_monsite, $admin_monsite);
      $Result1 = mysql_query($updateSQL, $admin_monsite) or die(mysql_error());
      $updateGoTo = "view.php";
      if (isset($_SERVER['QUERY_STRING'])) {
        $updateGoTo .= (strpos($updateGoTo, '?')) ? "&" : "?";
        $updateGoTo .= $_SERVER['QUERY_STRING'];
      }
      header(sprintf("Location: %s", $updateGoTo));
    }
     
    mysql_select_db($database_admin_monsite, $admin_monsite);
    $query_rsPage1 = "SELECT * FROM Page1";
    $rsPage1 = mysql_query($query_rsPage1, $admin_monsite) or die(mysql_error());
    $row_rsPage1 = mysql_fetch_assoc($rsPage1);
    $totalRows_rsPage1 = mysql_num_rows($rsPage1);
    ?>
    //Page - code XHTML
    <?php
    mysql_free_result($rsPage1);
    ?>
    Voilà. En ce qui concerne la méthode d'upload d'images, celle du chemin en clair dans la BDD est déjà mis en place.
    Mon souci premier étant de créer une page avec cette méthode d'upload (que je peux pomper sur ce qui est déjà en place) + une méthode pour éditer du texte à côté de cette image, le tout modifiant une page du site vitrine automatiquement pour rajouter des biographie+image soit dans de nouveaux <div> bien foutus, soit dans un <table> (ce qui ne me parait pas adéquate).

    Question subsidiaire :
    j'ai un bout de code XHTML avec du PHP du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="text" name="titre_page1" value="<?php echo htmlentities($row_rsPage1['titre_page1'], ENT_COMPAT, 'UTF-8'); ?>" size="32" />
    Il m'est impossible de fermer cette balise. Peut on mettre du PHP dans du XHTML de cette façon?

    Merci d'avance pour vos réponses.

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Février 2009
    Messages
    278
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Février 2009
    Messages : 278
    Points : 284
    Points
    284
    Par défaut
    Un peu avare en commentaire ds le code le developpeur

    • Pour le second point :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
       
      //Devrais fonctionner
      <input type="text" name="titre_page1" value=<?= htmlentities($row_rsPage1['titre_page1'], ENT_COMPAT, 'UTF-8'); ?> size="32" />
    • Pour le premier point :
      Donc tu crée un formulaire html type :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
       
      <FORM method="POST" action="envoi.php" ENCTYPE="multipart/form-data">
                <INPUT type=hidden name=MAX_FILE_SIZE  VALUE=2048>
                <INPUT type=file name="nom_du_fichier">
                <TEXTAREA rows="3" name="biographie">Biographie</TEXTAREA>
                <INPUT type=submit value="Envoyer">
      </FORM>
      Puis une page envoi.php qui récupére les info et les enregistre dans la base
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
       
      <?php
      //Transfert l'image du dossier temp vers le bon dossier
      if ((isset($_FILES['nom_du_fichier']['fichier'])&&($_FILES['nom_du_fichier']['error'] == UPLOAD_ERR_OK))) {
      $chemin_destination = '/var/www/fichiers/';
      move_uploaded_file($_FILES['nom_du_fichier']['tmp_name'], $chemin_destination.$_FILES['nom_du_fichier']['name']);
      }
      ?> 
      //insertion dans la BDD...

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    je suis donc de retour ! J'ai essayé de comprendre et de mettre en place le module de modification de page, et je bloque sur un point.

    Est ce que je peux poster un .rar, avec la structure du site et un petit texte expliquant le fonctionnement, histoire que l'on voit ensemble ce qui ne va pas?

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Février 2009
    Messages
    278
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Février 2009
    Messages : 278
    Points : 284
    Points
    284
    Par défaut
    Pourquoi pas

    ps : par contre je répond du taf et j'ai pas winrar perso donc si tu peux mettre en zip ça m'arrange ^^

  7. #7
    Nouveau Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Ooops désolé pour la réponse tardive, mais pendant qu'il y en a qui bosse tard, d'autres font la fête jusqu'à tôt :p

    Voilà donc le dossier zippé.
    Fichiers attachés Fichiers attachés

  8. #8
    Nouveau Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Salutations,

    Mon "Mea-culpa"
    N'ayant plus de réponse, j'espère juste que ce n'est pas à cause d'une erreur "bateau" que j'aurais faite. Je n'ai pas eu le temps de bucher plus que ça le problème.
    Je reviens donc à la charge

    Mon script d'upload (pas le mien en vrai)
    J'ai récupéré un script d'upload dans la même idée que celle que tu m'as proposée.
    Si j'ai bien tout compris, il suffit d'appeler cette page "upload.php" dans n'importe quelle page avec un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form method="POST" action="upload.php" ENCTYPE="multipart/form-data"></form>
    Le sript de traitement "tout-en-un"
    Jusque là, pas de souci apparent, en tout cas pas dans l'immédiat, mais il me faudrait une inscription du chemin (ou tout du moins du nom du fichier) dans la BDD.
    Pour cela, je vais te laisser une page de modification qui fait déjà l'action. Elle sera peut être à "peaufiner", voir à modifier complètement. Dans mes rêves les plus fous, le script PHP qui traiterait toutes les données, serait dans la page "upload.php". Mais n'allons pas trop vite.

    Mon second "Mea-culpa"
    En fait ce n'est pas de la fainéantise, mais je bute complètement sur la déclaration de toutes les variables et les fonctions/conditions qui s'y trouvent. En gros sur tout le PHP

    Mes efforts - Mes erreurs
    Normalement, tout était dans le .zip que j'ai envoyé, mais je vais te renvoyer la page de modification que j'ai créée sur le modèle des autres. J'ai changé/ajouté quelques variables et j'obtiens une erreur : "Query was empty". Toujours cette même erreur, sur les deux méthode d'envoi (upload image ou upload de la page entière)

    Les pages zippées, dans l'arborescence d'origine :
    • upload.php > script d'upload d'images uniquement
    • modif_equipe.php > modification de equipe_test.php
    • view_equipe.php > aperçu des modifications apportées sur equipe_test.php
    • equipe_test.php > page du site vitrine - pas encore terminée

  9. #9
    Nouveau Candidat au Club
    Inscrit en
    Mars 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Avec la pièce jointe, c'est toujours mieux !
    Fichiers attachés Fichiers attachés

  10. #10
    Membre actif
    Profil pro
    Inscrit en
    Février 2009
    Messages
    278
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Février 2009
    Messages : 278
    Points : 284
    Points
    284
    Par défaut
    Dsl, j'ai bcp de travail jusqu'a la fin de la semaine mais je tache de me pencher dessus ce week end si personne n'a été plus rapide.

Discussions similaires

  1. Où trouvez un module upload image en ligne
    Par dancom dans le forum Flash
    Réponses: 0
    Dernier message: 07/12/2011, 00h35
  2. [Drupal] Drupal 7 - Création de modules mêlant image, texte, compteur, stats
    Par Cacahuette dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 23/08/2011, 00h35
  3. Upload image et texte affiché
    Par gully07 dans le forum ActionScript 3
    Réponses: 3
    Dernier message: 21/06/2010, 18h37
  4. upload d'image et auto submit sous IE
    Par devyan dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 01/07/2009, 11h04
  5. ca ne fonctionne pas (generateur auto-incrémentant)
    Par tripper.dim dans le forum SQL
    Réponses: 7
    Dernier message: 26/11/2002, 00h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo