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

PHP & Base de données Discussion :

creation formulaire affichage d'annonces dans MySQL


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 5
    Par défaut creation formulaire affichage d'annonces dans MySQL
    Bonsoir a tous,
    j'éssai de créer un site d'annonces immobilières et je me suis mis au PHP(je suis encore qu'un débutant). pour faire court je souhaite de l'aide pour créer le formulaire entier avec des cases à cocher, des boutons d'options et des listes déroulantes.

    j'utilise wampserver

    j'ai créé une table 'bien' sous mySQL que voici:

    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
    TABLE `bien` (
    `ID_bien`int(11) ,
    `ID_prop` int(11),
    `Type_bien` varchar(50),
    `Ville_bien` varchar(50),
    `Quartier_bien`varchar(50) ,
    `Type_transact` varchar(50),
    `Superficie`int(11) ,
    `Nb_pieces` int(11),
    `Prix` int(11),
    `Vide_meuble` varchar(50),
    `Disponibilite` varchar(50),
    `Photo` ,
    `Description` text,
    `Date_enreg` date,
    `Duree` int(11),
    `Date_exp` date
    )
    ____________________________

    j'ai commencé une esquisse de formulaire avec juste des zones de texte que voici:

    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
    <head>
    <title>Formulaire de recherche</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <link rel="stylesheet" media="screen" type="text/css" title="Design" href="design.css" />
    </head>
     
    <p>Entrez les informations pour une recherche approfondie</p>
     
    <form method="POST" action="Textrait.php">
     
     
    <fieldset>
    <legend>Chiffrages</legend>
     
    <p><label> Nombre de Pièces (Ex: 2 chambres 1 salon = 3 pièces) : </label><br />
    <input type="text" name="Pieces" id"Pieces" tabindex="60" /></p>
     
    <p><label> Votre Budget </label><br />
     
    <label>Prix Maximum: </label><input type="text" name="prixmax" id"prixmax" tabindex="70"/></p>
     
     
    </fieldset>
     
    <p>
    <input type="submit" /> <input type="reset" />
    </p>
     
     
     
    </form>
     
     
    </html>

    ________________________


    jusqu'ici tout va bien mais mon gros problème se pose au niveau de mon code que voici:


    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
    <?php
    try
    {
    $pdo_options[PDO::ATTR_ERRMODE]=PDO::ERRMODE_EXCEPTION;
    $bdd=new PDO('mysql:host=localhost;dbname=test','root','',$pdo_options);
     
    $req=$bdd->prepare('SELECT Type_bien, Ville_bien, Type_transact, Prix, Description, Nb_pieces FROM bien WHERE Nb_pieces = :Pieces AND Prix <= :prixmax ORDER BY Prix');
    $req->execute(array('Nb_pieces' =>$_POST['Pieces'], 'Prix' =>$_POST['prixmax']));
     
    echo '<ul>';
    while ($donnees = $req->fetch())
    {
    echo '<li>' . $donnees['Type_bien'] . 'Situé(e) à' . $donnees['Ville_bien'] . 'à' . $donnees['Type_transact'] . 'au prix de' . $donnees['Prix'] . 'FCFA' . $donnees['Description'] .'<br />';
    }
    echo '</ul>';
     
    $req->closeCursor();
    }
    catch(Exception $e)
    {
    die('Erreur : '.$e->getMessage());
    }
    ?>

    _______________________________________

    lorsque je valide le formulaire voici l'erreur qui s'affiche:


    Erreur : SQLSTATE[HY093]: Invalid parameter number: parameter was not defined
    j'aimerai comprendre et savoir comment je doit rédiger mon code pour que tout fonctionne correctement;

    je dois aussi mettre par la suite des cases à cocher, des boutons d'options et des listes déroulantes je souhaite que vous m'aidiez a rediger ce code

    je compte vraiment sur votre aide vu que je suis débutant et que je m'exerce sur votre super site

  2. #2
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    salut,

    les paramètres que tu passes ne semblent pas avoir la bonne syntaxe regarde l'exemple n°2
    tu dois mettre ':' devant le nom de variable... et en plus, tu confonds joyeusement dans ta requête (dans le prepare) les noms de variables à substituer (avec le : devant donc) avec les noms de champs de ta table... attention


  3. #3
    Membre à l'essai
    Inscrit en
    Juillet 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 5
    Par défaut
    j'ai essayé com tu l'a dis et ça marche. merci bcp
    now j'aimerai savoir comment je peux intégrer des photos dans ma base pour ma table 'bien'?

  4. #4
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    bien

    l'idée pour les images est simple: on met dans la bd ce qui sert à faire des recherches en gros et les images en tant que telles directement dans un répertoire...

    pourquoi? car stocker une image dans un enregistrement de type blob est lourd et pas performant (autan l'avoir directement sous forme de fichier)... en plus tu mets dans une table un truc surtout sur lequel tu es amené à faire une recherche tant que faire se peut car les blob se gèrent d'une manière peu efficace.

    lors de l'import de l'image tu vérifies bien que c'est une image grâce à la bibliothèque de fonctions gd qui permet de manipuler les images, si tu peux pas ouvrir le fichier avec gd, c'est pas une image tu détruis sinon tu récupères un identifiant de fichier libre unique (un nombre que tu génère ou un truc alphanumérique, le nombre c'est plus simple et compact à stocker dans la bd) et tu utilises gd pour enregistrer avec une extension que tu choisis (toujours la même pour toutes tes images)...

    par exemple: bidule.jpg dans le repertoire temporaire de transfert -> gd ->
    124567254.png dans le répertoire des images

    ce qui fait que 124567254 identifiera cette image dans ta bd...
    coté bd, 2 cas de figure:
    • 1 seule image par annonce, tu as simplement une colonne de plus dans la table qui décrit tes annonces qui contient l'identifiant de l'image de la forme:
      *idimage* ou viendrait se loger la valeur 124567254 par exemple...
    • plusieurs images par annonce, la tu crées une table qui va permettre d'associer autan d'images que tu veux à chaque annonce, de la forme:
      *id*idannonce*idimage*

    avantage de cette façon de faire tu ne traites que des nombres pour tes recherche... hyper rapide même avec des dizaines de millier d'enregistrements... en plaçant correctement tes index sur ces tables tu vas encore accroitre les performances...

  5. #5
    Membre à l'essai
    Inscrit en
    Juillet 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 5
    Par défaut
    j'ai l'intention d'utiliser ta deuxième méthode(celle ou je créé une table pour les images) mais pour le moment j'ai éssayé avec le nom ou le chemin de l'image dans ma table"bien" mais à l'affichage de l'annonce au lieu de l'image c'est son nom ou son chemin que j'ai inscrit dans ma table qui s'affiche.
    Peux-tu me donner un exemple de la procédure et du code? Merci d'avance

  6. #6
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    Faut comprendre 1 différence qui peut te gêner lors de ton développement (certainement sous Windows) et le serveur final sous Linux:

    les droits d'accès au fichiers...

    Sous Windows, tu peux enregistrer ou modifier n'importe quel fichier ou presque avec php car tu l'exécutes avec ton utilisateur alors que sous Linux, php tourne sous un utilisateur dédié... tu devras donc modifier les droits du répertoire ou sera enregistré l'image au final.

    Pour se faire, moi j'utilise les fonctions FTP de php pour exécuter un chmod en utilisant un utilisateur avec suffisamment de pouvoir juste avant la copie du fichier puis 1 juste après pour rétablir les droits originaux... la probabilité que quelqu'un arrive à écrire un fichier au même moment est faible

    Et de toute façon, tu dois faire en sorte que les droits d'exécution sur ce répertoire SOIENT TOUJOURS: "AUCUN"...

    pour tester si c'est une image:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    function TraiteImage($filename)
    if($info=getimagesize($filename))// on teste les caractéristiques de l'éventuelle image
    {
    if($info['mime']!='image/png')// ici on veut par exemple savoir si on a bien un png sinon on va transformer l'image en png, éventuellement le redimentionnement, etc
    {
    //on fait le changement de format d'image
    }
    // quoiqu'il arrive on supprime le fichier temporaire originel
    unlink($filename);

    tu trouveras un exemple de code ici (le premier exemple donné par un utilisateur)

    j'ai pas mis les segments de code ftp car faut déjà que tu pondes un codes qui marche bien sur ton serveur windows... après on verra pour sa transposition...

    n'oublie pas de générer un nom que tu stockera dans ta bd... à toi de voir si la table doit être en innodb pour mieux gérer les accès concurrentiels

  7. #7
    Membre à l'essai
    Inscrit en
    Juillet 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 5
    Par défaut Probleme d'affichage d'images
    Bonsoir, toute mes excuses si je ne me suis pas manifesté depuis mais j'ai beaucoup de difficultés avec les images.
    J'ai effectué plusieurs essai avec plusieurs scripts; au finish j'ai ecri celui qu'il y a ci dessous qui semble marcher(il n'affiche pas d'erreur) mais les images ne s'affichent pas a la place il y a un alignement de cases avec des croix rouges. Comment faire pour voir les images affichées?
    voici le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <?php
     
    include ("connexion.php");
    $req = "SELECT Photo FROM bien ORDER BY id_bien";
    $ret = mysql_query ($req) or die (mysql_error ());
    while ( $col = mysql_fetch_row ($ret) )
    {
     
    header('Content-type: image/jpeg');
     
    echo "<img src=\"".$col[0]."\">";
    }
    ?>

  8. #8
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    déjà enlève le header il est plus qu’inutile, ensuite il suffir de regadre ta source HTML, tu verras si le chemin est bon ou pas

  9. #9
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    Quand tu utilises header pour passer un type de contenu c'est pour le document entier... une page web, un pdf, une image, etc...

    ici tu restitues une page web... et le header doit toujours être placé en début de ton code!

    là tu récupère quoi en fait? juste le nom de ton image non?

    donc tu dois construire l'adresse de l'image à partir d'un truc comme ça:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if($ret)
    {
         while($col = mysql_fetch_row ($ret))
              echo '<img src="/repertoire/'.$col[0].'.jpg"/>';
    }

Discussions similaires

  1. Réponses: 1
    Dernier message: 22/03/2013, 11h23
  2. Affichage des erreurs dans MySQL Workbench
    Par Donky dans le forum Outils
    Réponses: 0
    Dernier message: 30/05/2012, 09h06
  3. affichage des enreg. dans sous-formulaire
    Par OBIWAN64 dans le forum Access
    Réponses: 5
    Dernier message: 27/04/2006, 08h10
  4. comment inserer les entrée d'une formulaire dans MySQL
    Par horri dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 28/02/2006, 19h16
  5. inserer des donnees issues d'un formulaire dans mysql
    Par sousou207 dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 01/12/2005, 23h50

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