Bonjour,
Voila je rencontre un petit problème avec mon code.
j'ai creer une page profil.php qui affiche les info d'utilisateur ainsi sa photo de profil et fait appel
a la page avatar.php qui manipule le code d'ajout de photo
voici le code de avatar.php
<?php
session_start();
require_once 'inc/autoloadeur.php';
require_once 'class/App.php';
$db=App::getDatabase();
if(isset($_POST['upload'])) {
$taillemax = 2097152;
$extension = array('jpg', 'gif', 'png');
if ($_FILES['avatar']['size'] <= $taillemax) {
//strrchr permet de renvoyer l'extension de fichier avec le point
// substr eviter la premiere caractere de la chaine (1)
//strtolower convertir la chaine en miniscule
$extensionupload = strtolower(substr(strrchr($_FILES['avatar']['name'], '.'),1));
if (in_array($extensionupload, $extension)) {
$chemin = "avatar/" . $_GET['id'] . "." . $extensionupload;
$resultat = move_uploaded_file($_FILES['avatar']['tmp_name'], $chemin);
;
$id=$_GET['id'];
if ($resultat) {
$insertAvatar = $db->query("insert into user (avatar) VALUE (:avatar) WHERE id=$id",
array("avatar" => $_GET['id'] . "." . $extensionupload,
"id"=>$_GET['id'] ));
App::redirect("espace_adherent.php?id=" . $_SESSION['id']);
} else {
$erreur = "erreur lors de l'importation de votre photo de profil";
}
} else {
$erreur = " extension de votre photo de profil invalide";
}
} else {
$erreur = " Votre photo de profil ne doit pas dépasser 2 mo ";
}
}
?>
une partie de code profil.php qui affiche la photo
<header class="header">
<div class="container">
<form method="post" action="avatar.php?id=<?php echo $id ?>" enctype="multipart/form-data">
<input type="file" name="avatar">
<input type="submit" name="upload">
</form>
<?php
if(!empty($data->avatar)){
echo "<img class='profile-image img-circle pull-left' src='avatar/".$data->avatar."' width='150' />";
} else {
echo '<img class="profile-image img-circle pull-left" src="avatar/profile.png" width="150" />';//si pas d'avatar, ont en affiche un manuellement.
}
?>
<div class="profile-content pull-left">
<h1 class="name"><?php echo stripslashes(htmlspecialchars($data->nom) .'<br>'. ($data->prenom)); ?></h1>
</div><!--//profile-->
</form>
<a class="btn btn-cta-primary pull-right" target="_blank"><i class="fa fa-paper-plane"></i> Contact Me</a>
</div><!--//container-->
</header><!--//header-->
### Ce que je veux
je veux ajouter une photo de profil d'un utilisateur . merci de votre aide :)
### Ce que j'obtiens
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens' in C:\wamp\www\assos\class\Database.php on line 14
Dans ton tableau de paramètres, tu passes l'avatar et l'id
alors que l'id tu l'a déjà mis en dur $id
Soit tu retires l'id du tableau de paramètres, soit tu remplaces id=$id par id=:id dans le sql
j'ai corrigé l'erreur . voici une autre erreur sera afficher
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE id='1'' at line 1' in C:\wamp\www\assos\class\Database.php on line 14
Tu as une erreur de syntaxe évidente, il te manque une quote après le 1
mais pourquoi tu mets 1 en dur ?
De plus, pas besoin de quote pour un numérique