Inserer une image avec un id

Mammouth du PHP | 643 Messages

18 déc. 2014, 20:37

Salut je recupere en bdd ma photo qui a un id et je souhaite donc affiché l'image de cet id

<?php
$listebanniere = $bdd->query('SELECT * FROM banniere ORDER BY id');
?>

et je souhaite afficher comme ceci
<div class="item">
<img src="images/portfolio/recent/<?php echo $donnees_select['image']; ?>">
</div>

Merci de votre aide

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

18 déc. 2014, 23:34

salut,

avec ce que tu veux faire il te faut le nom de l'image sur le disque sinon cela ne peux fonctionner.

il y a quoi exactement dans la base de données ? (le nom, une partie du nom, l'image elle même ?)


@+
Il en faut peu pour être heureux ......

Mammouth du PHP | 643 Messages

18 déc. 2014, 23:41

Salut,
Alors en fait ma table est nommé banniere et dans celle ci j'ai 3 champs

- id
- titre
- image

Tt s'insere bien en bdd et je suis sur du chemin lors de mon echo

en bdd je revois par exemple:
id : 1
titre: photo de test
image: sliderinternet5.png

Merci encore

Mammouth du PHP | 737 Messages

19 déc. 2014, 16:52

Slt,

C'est quoi le code complet qui gère l'affichage. Tu l'as ou c'est ce que tu demandes ?

Physiquement sur le serveur est-ce que l'image existe ?

Mega
;)
Dyslexics are teople poo

Mammouth du PHP | 643 Messages

20 déc. 2014, 13:49

le code au complet:

Traitement des infos.
<?php
session_start();
if(!empty($_POST))
{
	extract($_POST);
	$validation=true;
	
	if(isset($_FILES['image']) AND $_FILES['image']['error']==0)
	{
		$infos_image=pathinfo($_FILES['image']['name']);
		$extension_image=$infos_image['extension'];
		$ext_autorisees=array('jpg','jpeg','png');
		if($_FILES['image']['size']>2000000)
		{
			$validation=false;
			$erreur_image='L\'image doit être inférieure à 2Mo';
		}
		elseif(!in_array($extension_image,$ext_autorisees))
		{
			$validation=false;
			$erreur_image='L\'image doit être au format jpg, jpeg ou png';
		}
	}
	else
	{
		$validation=false;
		$erreur_image='Indiquez l\'image que vous souhaitez publier';
	}

	
	
	if(empty($titre))
	{
		$validation=false;
		$erreur_titre='Il manque un titre';
	}
	
	if($validation)
	{
		$image=$_FILES['image']['name'];
		$tmp_name=$_FILES['image']['tmp_name'];
		include('bdd.php');
		$req=$bdd->prepare('INSERT INTO banniere (titre,image) VALUES (:titre,:image)');
		$req->execute(array(
			'titre'=>$titre,
			'image'=>$image
		));
		

		
		$req->closeCursor();
		move_uploaded_file($tmp_name,"images/portfolio/recent/$image");
		$valide='L\'envoi de l\'image a bien été effectué !';
		unset($nom);
		unset($auteur);
	}
}
?>


J'affiche mes images dejà presente en bdd:
   <?php
		include('bdd.php');
		$nombre=$bdd->query("SELECT * FROM banniere ORDER BY id DESC");
		$total=$nombre->rowCount();
		$nb_page=$total/6;
		if(!isset($_GET['page'])){$page_actuelle=1;}else{$page_actuelle=$_GET['page'];}
		$liste=6*$page_actuelle-6;
		$req=$bdd->query("SELECT * FROM banniere ORDER BY id DESC LIMIT $liste,6");
		$compteur=0;
		while($donnees_select=$req->fetch())
		{
			$compteur=$compteur+1;
			?>

		<div class="col-md-4">
            <a href="images/portfolio/recent/<?php echo $donnees_select['image']; ?>" rel="lightbox" class="effet" title="<?php echo $donnees_select['titre']; ?> ">
            <div class="cadre"><?php echo $donnees_select['titre']; ?> </div>
            </a><img src="images/portfolio/recent/<?php echo $donnees_select['image']; ?>" <?php if($compteur!=3){?><?php }else{$compteur=0;} ?>/>
        </div>
            <?php
		}
		?>

        // Pagination

        <div class="pagination">
        	<br>
            <?php
			$compteur_page=0;
			while($compteur_page<$nb_page)
			{
				$compteur_page=$compteur_page+1;
				?>
                <a href="index.php?page=<?php echo $compteur_page; ?>" <?php if($page_actuelle==$compteur_page){ ?>style="color:#e30059;text-decoration:underline;"<?php } ?>>Page <?php echo $compteur_page; ?></a> -
                <?php
			}
			?>
        </div>



J'integrer en bdd ( partie administration si on veut )
 Publier une nouvelle banniere
            <div class="ligne"></div>
            
          <form method="post" action="banniere.php" enctype="multipart/form-data">
            	<?php if(isset($valide)){ ?><div class="valide"><?php echo $valide; ?></div><?php } ?>
                
                
                <label>Titre</label>
                <input class="form-control" type="text" name="titre" value="<?php if(isset($titre))echo $titre; ?>"/><?php if(isset($erreur_titre)){ ?><div class="erreur"><?php echo $erreur_titre; ?></div><?php } ?>
                <br>

                <label>Photo</label>
                <input type="file" name="image"/><?php if(isset($erreur_image)){ ?><div class="erreur_image"><?php echo $erreur_image; ?></div><?php } ?>
                <br>
                <input class="send" type="submit" value="ENVOYER"/>
            </form>







Et maintenant dans une autre page j'affiche les bannieres ( la partie visible par l'utilisateur )
// le chemin est correct on retrouve bien les photos inserer grace au formulaire et donc tt est bien integrer en bdd

<div id="myCarousel" class="carousel slide" data-ride="carousel">

<?php
$listebanniere = $bdd->query('SELECT * FROM banniere ORDER BY id');
?>

      <div class="carousel-inner" role="listbox">
        <div class="item">
        <img src="admin/images/portfolio/recent/<?php echo $listebanniere ['image']; ?>">
        </div>
      </div>
      
      <a class="left carousel-control" href="#myCarousel" role="button" data-slide="prev">
        <span class="glyphicon glyphicon-chevron-left"></span>
        <span class="sr-only">Previous</span>
      </a>
      <a class="right carousel-control" href="#myCarousel" role="button" data-slide="next">
        <span class="glyphicon glyphicon-chevron-right"></span>
        <span class="sr-only">Next</span>
      </a>
</div>

ViPHP
AB
ViPHP | 5818 Messages

24 déc. 2014, 06:45

$listebanniere = $bdd->query('SELECT * FROM banniere ORDER BY id');
?>

<div class="carousel-inner" role="listbox">
<div class="item">
<img src="admin/images/portfolio/recent/<?php echo $listebanniere ['image']; ?>">
</div>
</div>
...
</div>
[/php]
Manquerait pas un "fetch()" ou mieux un "fetchColumn()" puisque apparemment tu ne te sert que de la colonne "image". Aussi dans le même ordre d'idée pourquoi faire un "SELECT * " ? Et puis si tu ne sert que d'une ligne faudrait voir à mettre une clause limit dans ta requête.

Bref ça manque un peu d'optimisation. Au passage tu semble faire des requêtes préparées pour les requêtes avec des variables utilisateur. Alors fait pareil pour cette requête
$req=$bdd->query("SELECT * FROM banniere ORDER BY id DESC LIMIT $liste,6")
ou alors prend soin de caster préalablement ta variable en entier (ex : intval($liste))