probleme affichage

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : probleme affichage

Re: probleme affichage

par moogli » 23 déc. 2016, 13:03

salut,

il ne faut pas confondre le chemin physique sur le serveur et le chemin "web" (l'url)

si tu consultes ta page en utilisant l'url http://localhost/tonfichier.php alors il te mettre un chemin (de préférence relatif mais c'est toi qui vois) qui permette d’accéder à l'image depuis le navigateur.
Dans ton cas
echo '<img src="insertion_donnees_dans_bd/photos/'.$donnees['photo'].'"/>';
doit faire l'affaire pour peux que le fichier "tonfichier.php" soit à la racine du site (dans ton cas dans www).

si ce n'est pas le cas ce n'est pas possible.

le plus simple c'est de tester directement avec un navigateur et d'essayer d'afficher une photo en entrant directement l'url.

tu indiques que les photos sont stockées dans C:\wamp\www\Insertion_données_dans _bd\photos
je suppose que tu utilise la configuration par défaut de wamp et que www est le document root de ton serveur.

si tu as une image qui s'appel test.png dans le répertoire photos tu doit la voir dans ton navigateur en utilisant l'url http://localhost/Insertion_données_dans _bd/photos/test.png

si ce n'est pas le cas c'est que soit le fichier n'existe pas (problème de casse ou autre) soit le répertoire n'est pas a cet endroit

a partir du moment où tu arrive à voir ton image dans le navigateur du sais ce que tu doit mettre dans l'input.

question bête : tu stock quoi exactement dans le champs photo de la base ?
as tu regardé le code source généré par php ? (clic droit afficher a source ou avec les outils de dev "F12")?

parce que bon la, au vu du code ce n'est pas que le nom du fichier que tu insères
'../insertion_donnees_dans_bd/photos/'.$_FILES['img']['name'].'';
du coup '<img src="'.$donnees['photo'].'">'; suffit avec ton code existant.

Spols t'indique de n'enregistrer que le nom de la photo. Je suis d'accord avec lui, a partir du moment où les photos sont toutes dans le même répertoire pas besoin de stocker le chemin (et tu n'as plus de soucis pour savoir comment l'afficher).

Dernière chose il est préférable de renommer l'image (avec un nom unique) pour éviter les problèmes de caractère louche (accent, espace ou autre) qui pourrait être genant.

Pense aussi à sécurisé un peu plus ton formulaire d'upload.

@+

Re: probleme affichage

par abdoulayecoumba » 22 déc. 2016, 17:29

mais comment proceder donc pour afficher mes photos , dois je élaguer la ligne complete
echo '<img src="insertion_donnees_dans_bd/photos/'.$donnees['photo'].'">';
ou uniquement la partie echo '</.'.$donnees['photo'].'">';
si j'envisage la deuxieme solution le probleme reste entier les images ne s'affichent pas

Re: probleme affichage

par Spols » 22 déc. 2016, 17:08

alors il te faut enlever la gestion du chemin lors de l'affichage
echo '<img src="'.$donnees['photo'].'">';

Re: probleme affichage

par abdoulayecoumba » 22 déc. 2016, 17:05

mais si je procede ainsi le lien de la photo ne s'affiche plus dans la colonne "photo" de ma table c'est le nom de la photo avec son extension qui apparaissent alors que moi je veux stocker le lien

Re: probleme affichage

par Spols » 22 déc. 2016, 16:33

tu enregistre le lien de ton fichier dans ta bdd avec un lien relatif :
$photo='../insertion_donnees_dans_bd/photos/'.$_FILES['img']['name'].'';

ensuite tu veux y ajouter un chemin absolu lors de l'affichage.

tu tente donc de gèrer le chemin 2 fois ce qui résulte d'un chemin erroné.
je te conseillerai de n'enregistrer que le nom du fichier et de gèrer le chemin comme tu le fais lors de l'affichage.
donc remplace cette ligne

$photo='../insertion_donnees_dans_bd/photos/'.$_FILES['img']['name'].'';
par celle ci

$photo=$_FILES['img']['name'];

Re: probleme affichage

par abdoulayecoumba » 22 déc. 2016, 16:08

voulez vous m'aider svp

Re: probleme affichage

par abdoulayecoumba » 22 déc. 2016, 15:26

ok spols je vous file tous mes deux codes :

Pour le formulaire

Code : Tout sélectionner

<html> <body> <br><br/> <form method="post" action="insertion_image.php" enctype="multipart/form-data"> <label for="prenom">Prenom :</label> <input type="text" name="prenom" /> <br><br/> <label for="nom">Nom :</label> <input type="text" name="nom" /> <br><br/> <label for="adresse">Adresse :</label> <input type="text" name="adresse" /> <br><br/> <label for="img">Telecharger une image :</label> <input name="img" type="file" /> <input type="submit" name="valider" value="VALIDER"/> </form> <?php if( isset( $_POST['prenom'] )) { $prenom =$_POST['prenom']; $nom = $_POST['nom']; $adresse = $_POST['adresse']; $img = $_FILES['img']; if(isset($_FILES['img'])) { // Inscription de la photo uploadé dans le dossier bouquin move_uploaded_file($_FILES['img']['tmp_name'], '../insertion_donnees_dans_bd/photos/'.basename($_FILES['img']['name'])); // echo 'L\'envoi a bien été effectué'; } $photo='../insertion_donnees_dans_bd/photos/'.$_FILES['img']['name'].''; ?> <?php try { $bdd = new PDO('mysql:host=localhost;dbname=productions','root','',array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } ?> <?php $req = $bdd->prepare('INSERT INTO clients(prenom, nom, adresse, photo) VALUES(:prenom,:nom, :adresse, :photo)'); $req->execute(array( 'prenom' => $prenom, 'nom' => $nom, 'adresse' => $adresse, 'photo' => $photo, )); echo 'Enregistrement effectue !'; } ?> </body> </html>
Pour la visualisation des enregistrements de la table (code rectifié selon vos suggestions

Code : Tout sélectionner

<html > <body> <?php try { $bdd = new PDO('mysql:host=localhost;dbname=productions;charset=utf8', 'root','',array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } $req = $bdd->prepare('SELECT * FROM clients '); $req-> execute(array()); while ($donnees = $req->fetch()) { echo $donnees['prenom'].'.......'.$donnees['nom'].'......'.$donnees['adresse'].'<br><br/>'; echo '<img src="./insertion_donnees_dans_bd/photos/'.$donnees['photo'].'">'; } $req->closeCursor(); // Termine le traitement de la requête ?> </body> </html>

Re: probleme affichage

par Spols » 22 déc. 2016, 14:55

montre nous ce code html, il y a peut être redondance de dossier, ou le point qui n'est pas nécessaire. ou encore une extension manquante ..;

sans matière difficle de t'aider

Re: probleme affichage

par abdoulayecoumba » 22 déc. 2016, 14:47

j'ai rectifié cette erreur de "i" majuscule dans le code mais les photos ne s'affichent toujours pas en plus le code html produit pour controler la validité de mon url fonctionne bien la preuve si copie le lien contenu dans la colonne de ma table ca marche et ce meme lien est produit par mon code html

Re: probleme affichage

par Spols » 22 déc. 2016, 14:18

la première chose que je vois c'est la majuscule de insertion_donnees_... qui est dans le code mais pas dans ton explication, vérifie déja cela.

sinon, regarde le code html produit pour controler la validité de ton url

probleme affichage

par abdoulayecoumba » 22 déc. 2016, 13:54

Bonjour ,
j'ai enregistré via un formulaire des liens d" images dans ma table nommé "clients" et qui comporte les champs PRENOM, NOM, ADRESSE,PHOTO . Les liens sont plus précisément enregistrés dans une colonne qui s'appelle "photo", les images sont elles stockées dans un dossier nommé "photos" situé a l’intérieur d'un autre dossier appelé "Insertion_données_dans _bd'' placé a la racine du dossier www comme ceci :
C:\wamp\www\Insertion_données_dans _bd\photos .
maintenant mon problème est que, je veux afficher simultanément tous les champs de la table, j'arrive à tout afficher Prénom, Nom, Adresse de chaque enregistrement sauf la photo à la place de celle ci j'obtiens un petit carré bleue .
j'ai même cherché à vérifier si j'ai pas fait d'erreur au niveau des noms de dossier ou de colonne en copiant directement dans le code le lien de chaque photo à partir du dossier "photos" mais ça marche la photo s'affiche .
Alors quelqu'un peut il m'aider ça me pourri la vie voici mon code:

Code : Tout sélectionner

<html > <body> <?php try { $bdd = new PDO('mysql:host=localhost;dbname=productions;charset=utf8', 'root','',array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } $req = $bdd->prepare('SELECT * FROM clients '); $req-> execute(array()); while ($donnees = $req->fetch()) { echo $donnees['prenom'].'.......'.$donnees['nom'].'......'.$donnees['adresse'].'<br><br/>'; echo '<img src="./Insertion_donnees_dans _bd/photos/ '.$donnees['photo'] .'">'; } $req->closeCursor(); ?> </body> </html>