Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/09/2011, 00h26   #1
Invité de passage
 
Mathus Lawson
Inscription : juillet 2010
Messages : 5
Détails du profil
Informations personnelles :
Nom : Mathus Lawson

Informations forums :
Inscription : juillet 2010
Messages : 5
Points : 0
Points : 0
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 :
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 :
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 :
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:


Citation:
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
Mathus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2011, 04h42   #2
Membre Expert
 
Homme Eric Dureuil
Développeur informatique
Inscription : avril 2011
Messages : 870
Détails du profil
Informations personnelles :
Nom : Homme Eric Dureuil
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 : 870
Points : 1 355
Points : 1 355
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

__________________
Eric Dureuil, développeur web, c/c++, java indépendant
soyons
pensez à mettre et
ericd69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2011, 23h21   #3
Invité de passage
 
Mathus Lawson
Inscription : juillet 2010
Messages : 5
Détails du profil
Informations personnelles :
Nom : Mathus Lawson

Informations forums :
Inscription : juillet 2010
Messages : 5
Points : 0
Points : 0
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'?
Mathus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2011, 02h32   #4
Membre Expert
 
Homme Eric Dureuil
Développeur informatique
Inscription : avril 2011
Messages : 870
Détails du profil
Informations personnelles :
Nom : Homme Eric Dureuil
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 : 870
Points : 1 355
Points : 1 355
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...
__________________
Eric Dureuil, développeur web, c/c++, java indépendant
soyons
pensez à mettre et
ericd69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2011, 23h47   #5
Invité de passage
 
Mathus Lawson
Inscription : juillet 2010
Messages : 5
Détails du profil
Informations personnelles :
Nom : Mathus Lawson

Informations forums :
Inscription : juillet 2010
Messages : 5
Points : 0
Points : 0
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
Mathus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 16h17   #6
Membre Expert
 
Homme Eric Dureuil
Développeur informatique
Inscription : avril 2011
Messages : 870
Détails du profil
Informations personnelles :
Nom : Homme Eric Dureuil
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 : 870
Points : 1 355
Points : 1 355
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 :
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
__________________
Eric Dureuil, développeur web, c/c++, java indépendant
soyons
pensez à mettre et
ericd69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2011, 22h00   #7
Invité de passage
 
Mathus Lawson
Inscription : juillet 2010
Messages : 5
Détails du profil
Informations personnelles :
Nom : Mathus Lawson

Informations forums :
Inscription : juillet 2010
Messages : 5
Points : 0
Points : 0
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 :
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]."\">";
}
?>
Mathus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2011, 22h42   #8
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
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
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/10/2011, 17h36   #9
Membre Expert
 
Homme Eric Dureuil
Développeur informatique
Inscription : avril 2011
Messages : 870
Détails du profil
Informations personnelles :
Nom : Homme Eric Dureuil
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 : 870
Points : 1 355
Points : 1 355
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 :
1
2
3
4
5
if($ret)
{
     while($col = mysql_fetch_row ($ret))
          echo '<img src="/repertoire/'.$col[0].'.jpg"/>';
}
__________________
Eric Dureuil, développeur web, c/c++, java indépendant
soyons
pensez à mettre et
ericd69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h30.


 
 
 
 
Partenaires

Hébergement Web