J'ai une page index.php qui est le noyau de mes pages, le menu viens alimenter un include qui intègre la page concernée. (pas sur que ce soir clair j'avoue).
Une de mes page intégrée via le include est une formulaire pour ajouter un produit dont une photo.
Lorsque je test le formulaire seul (en pointant l'url directement dessus), ça fonctionne et lorsque je passe par le site (donc je pointe sur index.php avec la variable dans l'url qui me permet d'intégrer la page contenant le formulaire), ça me dit que je n'ai pas joint de fichier.
Index.php est à la racine du site forcement.
<?php
include ('conf/Sesssion_Formulaire.php');
?>
<!DOCTYPE html>
<html>
<head>
<!-- En-tête de la page -->
<meta charset="utf-8" />
<title></title>
<link rel="stylesheet" type="text/css" href="css/style_design.css" />
<link rel="stylesheet" type="text/css" href="css/style_slide_activity.css" />
<link rel="stylesheet" type="text/css" href="css/style_menu.css" />
<link rel="stylesheet" type="text/css" href="css/style_admin.css" />
<link rel="stylesheet" type="text/css" href="css/style_modal.css" />
<link rel="stylesheet" type="text/css" href="css/style_mopal.css" />
<link rel="stylesheet" type="text/css" href="css/style_windowadmin.css" />
</head>
<body>
<div class="Full_Container">
<!-- En-tête de page -->
<header>
.....
</header>
<!-- Corps de la page -->
<div class="Contenu_Page">
<!-- Menu de la page -->
<nav>
<?php
include ('module/menu.php');
?>
</nav>
<!-- Contenu de la page -->
<div class="sectionpage">
<?php
$URL_Page = $_GET['pg'];
if ($URL_Page == 'admin' )
{
include ('admin/admin.php');
}
elseif ($URL_Page == '' )
{
include ('global/Pg/Accueil.php');
}
else
{
include ('global/Pg/'.$URL_Page.'.php');
}
?>
</div>
</div>
<!-- Pied de page -->
<footer>
...
</footer>
</div>
</body>
</html>
le formulaire (form.php) est dans un sous-dossier (avec le script au-dessus il se situe dans : global/Pg/ )
Sauriez vous me dire pourquoi ? et comment remédier à ce problème ?
Merci pour ta réponse philodick, mais vu que je débute, tu pourrais m'expliquer un peu plus stp .
Donc si je comprend c est faisable mais je dois ajouter une info dans mon script , c'est ça ?
Si je vais jusqu'au bout de se que je crois comprendre, il faut que j'utilise la fonction de set_include_path, c'est ça ? mais je comprend pas bien son utilisation. désolé.
>insertproduit.php => Chemin \Global\Pg\insertproduit.php il s'agit du formulaire.
>\image
>\produit => dossier de stockage final des images uploadées
>\Secure
>connexionbase.php => Regroupe la connexion à la base de donnée
Pour le formulaire :
<?php
if (!isset($_POST['envoi'])) {
?>
<!-- Corps de la page -->
<fieldset>
<legend>Ajout d'un Produit</legend>
<form method="post" action="index.php?pg=insertproduit" enctype="multipart/form-data">
...... tous le champs necessaires
<br />
<p> <label for="Prod_Picture">* Photo du produit (Max. 1Mo):<br />.jpg /.PNG uniquement </label><input type="file" name="Prod_Picture" /> </p>
<br />
<br />
<div class="form_add_bouton">
<input type="submit" name ="envoi" value="Ajouter">
</div>
</form>
</fieldset>
<?php
}
else
{
include ('secure/connexionbase.php');
// Appel de la fonction de connexion à la base
$Conx_db = getConnectBdd();
//On liste les éléments de la base de données
$stmt = $Conx_db->prepare("INSERT INTO Produits ( toutes les entrées)
VALUES (toutes les valeurs)");
//Lien entre la commande d INSERT INTO et les variables du formulaire
$stmt->bindParam(':nomproduit', $nomproduit);
idem pour toutes les autres entrées....
//On liste les éléments du formulaire et on les sécurise
$nomproduit = Securite::bdd($_POST['Nom']);
idem pour toutes les autres entrées
']);
// Insertion de l enregistrement en base de données
if ($stmt->execute())
{
echo ' <div class="Validation_form"><p>Le produit est à présent disponible dans le catalogue</p>';
// En cas de réussite d'ajout du produit à la base on charge le fichier.
// Définition des variables pour l envoi du fichier
$Id_utile = $Conx_db->lastInsertId();
$nomfilesource = strtolower($_FILES['ProdPicture']['tmp_name']);
$NomImageExploitable = str_replace(' ', '', $nomproduit.$Id_utile);
$uploaddir = 'image/produit/';
$uploadfile = $uploaddir . basename($nomfilesource);
$typemime = strtolower($_FILES['ProdPicture']['type']);
$newwidthimage = 400;
if(!empty($ProdPicture) or !empty($_FILES['ProdPicture']))
{
echo '<p>1- Fichier joint => ok</p>';
if ( is_uploaded_file($_FILES['ProdPicture']['tmp_name']) )
{
echo '<p>2- Fichier chargé => ok</p>';
if($typemime === 'image/jpeg' || $typemime === 'image/png' || $typemime === 'image/pjpeg' || $typemime === 'image/x-png' )
{
echo '<p>3- Type de fichier => ok</p>';
if($_FILES['ProdPicture']['size'] <= 1048576 )
{
echo '<p>4- Taille du fichier => ok</p>';
if( $typemime ==='image/jpeg' || $typemime ==='image/pjpeg')
{
$imageinitjpg = imagecreatefromjpeg($_FILES['ProdPicture']['tmp_name']);
$dimimagejpg = getimagesize($_FILES['ProdPicture']['tmp_name']);
$newheightimagejpg = ($dimimagejpg[1]/$dimimagejpg[0])*$newwidthimage ;
$newimagejpg = imagecreatetruecolor($newwidthimage , $newheightimagejpg) or die ("Erreur lors du dimensionnement");
imagecopyresampled($newimagejpg , $imageinitjpg , 0, 0, 0, 0, $newwidthimage, $newheightimagejpg, $dimimagejpg[0] , $dimimagejpg[1]);
imagedestroy($imageinitjpg);
imagejpeg($newimagejpg, $uploaddir.$NomImageExploitable.'.jpg', 100);
echo ' <div class="Validation_form"><p>5- Image enregistrée. URL : '.$uploaddir. $NomImageExploitable.'.jpg</p>
<img src="'.$uploaddir. $NomImageExploitable.'.jpg">';
} else {
header("Content-type: image/png");
$imageinitpng = imagecreatefrompng($_FILES['ProdPicture']['tmp_name']);
$dimimagepng = getimagesize($_FILES['ProdPicture']['tmp_name']);
$newheightimagepng = ($dimimagepng[1]/$dimimagepng[0])*$newwidthimage ;
$newimagepng = imagecreatetruecolor($newwidthimage , $newheightimagepng) or die ("Erreur lors du dimensionnement");
imagecopyresampled($newimagepng , $imageinitpng , 0, 0, 0, 0, $newwidthimage, $newheightimagepng, $dimimagepng[0] , $dimimagepng[1]);
imagedestroy($imageinitpng);
imagepng($newimagepng, $uploaddir.$NomImageExploitable.'.png', 100);
echo ' <div class="Validation_form"><p>5- Image enregistrée. URL : '.$uploaddir. $NomImageExploitable.'.png</p>
<img src="'.$uploaddir. $NomImageExploitable.'.png">';
}
} else {
echo '<div class="Validation_form"><p>4- Taille de l\'image trop élevée. Produit ajouté sans image.</p>';
}
} else {
echo '<div class="Validation_form"><p>3- Format de l\'image erroné. Produit ajouté sans image.</p>';
}
} else {
echo '<div class="Validation_form"><p>2- Le fichier n\'a pas été chargé. Produit ajouté sans image.</p>';
}
} else {
echo '<div class="Validation_form"><p>1- Pas de fichier sélectionné. Produit ajouté sans image.</p>';
}
}
else
{
echo 'class="Validation_form"><p>L\'Produit n\'a pu être ajouté au catalogue.</p></div>';
}
echo ' </div><div class="Validation_form_bt"> <p> <a href="index.php?pg=insertproduit" class="btn">Ajouter un nouveau Produit</a> </p></div>
<br><br>
<div class="Validation_form_bt"> <p> <a href="index.php?pg=tousproduit" class="btn">Accéder au catalogue des produits</a> </p></div>';
}
?>
je m'essaie d'avoir une indentation régulière mais en effet peut quelques variation et à force de manipuler le code je ne l'ai pas remit au propre.
c'est peut être mon problème en effet. Donc l'include, copie tout mon script et l'intègre dans la page index.php, c'est bien ça ? (si oui, c'est se que j'avais compris ...si non, ben t'as raison alors lol)
Si c'est ce que tu avais compris, il y a un problème, regarde ce que ça donne :
<?php
if (!isset($_POST['envoi'])) {
?>
<!-- Corps de la page -->
<fieldset>
<legend>Ajout d'un Produit</legend>
<form method="post" action="index.php?pg=insertproduit" enctype="multipart/form-data">
...... tous le champs necessaires
<br />
<p> <label for="Prod_Picture">* Photo du produit (Max. 1Mo):<br />.jpg /.PNG uniquement </label><input type="file" name="Prod_Picture" /> </p>
<br />
<br />
<div class="form_add_bouton">
<input type="submit" name ="envoi" value="Ajouter">
</div>
</form>
</fieldset>
<?php
}
else
{
include ('secure/connexionbase.php');
// Appel de la fonction de connexion à la base
$Conx_db = getConnectBdd();
//On liste les éléments de la base de données
$stmt = $Conx_db->prepare("INSERT INTO Produits ( toutes les entrées)
VALUES (toutes les valeurs)");
//Lien entre la commande d INSERT INTO et les variables du formulaire
$stmt->bindParam(':nomproduit', $nomproduit);
idem pour toutes les autres entrées....
//On liste les éléments du formulaire et on les sécurise
$nomproduit = Securite::bdd($_POST['Nom']);
idem pour toutes les autres entrées
']);
// Insertion de l enregistrement en base de données
if ($stmt->execute())
{
echo ' <div class="Validation_form"><p>Le produit est à présent disponible dans le catalogue</p>';
// En cas de réussite d'ajout du produit à la base on charge le fichier.
// Définition des variables pour l envoi du fichier
$Id_utile = $Conx_db->lastInsertId();
$nomfilesource = strtolower($_FILES['ProdPicture']['tmp_name']);
$NomImageExploitable = str_replace(' ', '', $nomproduit.$Id_utile);
$uploaddir = 'image/produit/';
$uploadfile = $uploaddir . basename($nomfilesource);
$typemime = strtolower($_FILES['ProdPicture']['type']);
$newwidthimage = 400;
if(!empty($ProdPicture) or !empty($_FILES['ProdPicture']))
{
echo '<p>1- Fichier joint => ok</p>';
if ( is_uploaded_file($_FILES['ProdPicture']['tmp_name']) )
{
echo '<p>2- Fichier chargé => ok</p>';
if($typemime === 'image/jpeg' || $typemime === 'image/png' || $typemime === 'image/pjpeg' || $typemime === 'image/x-png' )
{
echo '<p>3- Type de fichier => ok</p>';
if($_FILES['ProdPicture']['size'] <= 1048576 )
{
echo '<p>4- Taille du fichier => ok</p>';
if( $typemime ==='image/jpeg' || $typemime ==='image/pjpeg')
{
$imageinitjpg = imagecreatefromjpeg($_FILES['ProdPicture']['tmp_name']);
$dimimagejpg = getimagesize($_FILES['ProdPicture']['tmp_name']);
$newheightimagejpg = ($dimimagejpg[1]/$dimimagejpg[0])*$newwidthimage ;
$newimagejpg = imagecreatetruecolor($newwidthimage , $newheightimagejpg) or die ("Erreur lors du dimensionnement");
imagecopyresampled($newimagejpg , $imageinitjpg , 0, 0, 0, 0, $newwidthimage, $newheightimagejpg, $dimimagejpg[0] , $dimimagejpg[1]);
imagedestroy($imageinitjpg);
imagejpeg($newimagejpg, $uploaddir.$NomImageExploitable.'.jpg', 100);
echo ' <div class="Validation_form"><p>5- Image enregistrée. URL : '.$uploaddir. $NomImageExploitable.'.jpg</p>
<img src="'.$uploaddir. $NomImageExploitable.'.jpg">';
} else {
header("Content-type: image/png");
$imageinitpng = imagecreatefrompng($_FILES['ProdPicture']['tmp_name']);
$dimimagepng = getimagesize($_FILES['ProdPicture']['tmp_name']);
$newheightimagepng = ($dimimagepng[1]/$dimimagepng[0])*$newwidthimage ;
$newimagepng = imagecreatetruecolor($newwidthimage , $newheightimagepng) or die ("Erreur lors du dimensionnement");
imagecopyresampled($newimagepng , $imageinitpng , 0, 0, 0, 0, $newwidthimage, $newheightimagepng, $dimimagepng[0] , $dimimagepng[1]);
imagedestroy($imageinitpng);
imagepng($newimagepng, $uploaddir.$NomImageExploitable.'.png', 100);
echo ' <div class="Validation_form"><p>5- Image enregistrée. URL : '.$uploaddir. $NomImageExploitable.'.png</p>
<img src="'.$uploaddir. $NomImageExploitable.'.png">';
}
} else {
echo '<div class="Validation_form"><p>4- Taille de l\'image trop élevée. Produit ajouté sans image.</p>';
}
} else {
echo '<div class="Validation_form"><p>3- Format de l\'image erroné. Produit ajouté sans image.</p>';
}
} else {
echo '<div class="Validation_form"><p>2- Le fichier n\'a pas été chargé. Produit ajouté sans image.</p>';
}
} else {
echo '<div class="Validation_form"><p>1- Pas de fichier sélectionné. Produit ajouté sans image.</p>';
}
}
else
{
echo 'class="Validation_form"><p>L\'Produit n\'a pu être ajouté au catalogue.</p></div>';
}
echo ' </div><div class="Validation_form_bt"> <p> <a href="index.php?pg=insertproduit" class="btn">Ajouter un nouveau Produit</a> </p></div>
<br><br>
<div class="Validation_form_bt"> <p> <a href="index.php?pg=tousproduit" class="btn">Accéder au catalogue des produits</a> </p></div>';
}
?>
<!DOCTYPE html>
<html>
<head>
<!-- En-tête de la page -->
<meta charset="utf-8" />
<title></title>
<link rel="stylesheet" type="text/css" href="css/style_design.css" />
<link rel="stylesheet" type="text/css" href="css/style_slide_activity.css" />
<link rel="stylesheet" type="text/css" href="css/style_menu.css" />
<link rel="stylesheet" type="text/css" href="css/style_admin.css" />
<link rel="stylesheet" type="text/css" href="css/style_modal.css" />
<link rel="stylesheet" type="text/css" href="css/style_mopal.css" />
<link rel="stylesheet" type="text/css" href="css/style_windowadmin.css" />
</head>
<body>
<div class="Full_Container">
<!-- En-tête de page -->
<header>
.....
</header>
<!-- Corps de la page -->
<div class="Contenu_Page">
<!-- Menu de la page -->
<nav>
<?php
include ('module/menu.php');
?>
</nav>
<!-- Contenu de la page -->
<div class="sectionpage">
<?php
$URL_Page = $_GET['pg'];
if ($URL_Page == 'admin' )
{
include ('admin/admin.php');
}
elseif ($URL_Page == '' )
{
include ('global/Pg/Accueil.php');
}
else
{
include ('global/Pg/'.$URL_Page.'.php');
}
?>
</div>
</div>
<!-- Pied de page -->
<footer>
...
</footer>
</div>
</body>
</html>
Désolé mais je ne suis pas d'accord, tu as inséré le formulaire dans la partie session (sauvegarde temporaire des données du formulaire).
Alors qu'en réalité il est inséré au niveau de cette ligne :
include ('global/Pg/'.$URL_Page.'.php');
ça donne donc plutot :
<?php
include ('conf/Sesssion_Formulaire.php');
?>
<!DOCTYPE html>
<html>
<head>
<!-- En-tête de la page -->
<meta charset="utf-8" />
<title></title>
<link rel="stylesheet" type="text/css" href="css/style_design.css" />
<link rel="stylesheet" type="text/css" href="css/style_slide_activity.css" />
<link rel="stylesheet" type="text/css" href="css/style_menu.css" />
<link rel="stylesheet" type="text/css" href="css/style_admin.css" />
<link rel="stylesheet" type="text/css" href="css/style_modal.css" />
<link rel="stylesheet" type="text/css" href="css/style_mopal.css" />
<link rel="stylesheet" type="text/css" href="css/style_windowadmin.css" />
</head>
<body>
<div class="Full_Container">
<!-- En-tête de page -->
<header>
.....
</header>
<!-- Corps de la page -->
<div class="Contenu_Page">
<!-- Menu de la page -->
<nav>
<?php
include ('module/menu.php');
?>
</nav>
<!-- Contenu de la page -->
<div class="sectionpage">
<?php
if (!isset($_POST['envoi'])) {
?>
<!-- Corps de la page -->
<fieldset>
<legend>Ajout d'un Produit</legend>
<form method="post" action="index.php?pg=insertproduit" enctype="multipart/form-data">
...... tous le champs necessaires
<br />
<p> <label for="Prod_Picture">* Photo du produit (Max. 1Mo):<br />.jpg /.PNG uniquement </label><input type="file" name="Prod_Picture" /> </p>
<br />
<br />
<div class="form_add_bouton">
<input type="submit" name ="envoi" value="Ajouter">
</div>
</form>
</fieldset>
<?php
}
else
{
include ('secure/connexionbase.php');
// Appel de la fonction de connexion à la base
$Conx_db = getConnectBdd();
//On liste les éléments de la base de données
$stmt = $Conx_db->prepare("INSERT INTO Produits ( toutes les entrées)
VALUES (toutes les valeurs)");
//Lien entre la commande d INSERT INTO et les variables du formulaire
$stmt->bindParam(':nomproduit', $nomproduit);
idem pour toutes les autres entrées....
//On liste les éléments du formulaire et on les sécurise
$nomproduit = Securite::bdd($_POST['Nom']);
idem pour toutes les autres entrées ']);
// Insertion de l enregistrement en base de données
if ($stmt->execute())
{
echo ' <div class="Validation_form"><p>Le produit est à présent disponible dans le catalogue</p>';
// En cas de réussite d'ajout du produit à la base on charge le fichier.
// Définition des variables pour l envoi du fichier
$Id_utile = $Conx_db->lastInsertId();
$nomfilesource = strtolower($_FILES['ProdPicture']['tmp_name']);
$NomImageExploitable = str_replace(' ', '', $nomproduit.$Id_utile);
$uploaddir = 'image/produit/';
$uploadfile = $uploaddir . basename($nomfilesource);
$typemime = strtolower($_FILES['ProdPicture']['type']);
$newwidthimage = 400;
if(!empty($ProdPicture) or !empty($_FILES['ProdPicture']))
{
echo '<p>1- Fichier joint => ok</p>';
if ( is_uploaded_file($_FILES['ProdPicture']['tmp_name']) )
{
echo '<p>2- Fichier chargé => ok</p>';
if($typemime === 'image/jpeg' || $typemime === 'image/png' || $typemime === 'image/pjpeg' || $typemime === 'image/x-png' )
{
echo '<p>3- Type de fichier => ok</p>';
if($_FILES['ProdPicture']['size'] <= 1048576 )
{
echo '<p>4- Taille du fichier => ok</p>';
if( $typemime ==='image/jpeg' || $typemime ==='image/pjpeg')
{
$imageinitjpg = imagecreatefromjpeg($_FILES['ProdPicture']['tmp_name']);
$dimimagejpg = getimagesize($_FILES['ProdPicture']['tmp_name']);
$newheightimagejpg = ($dimimagejpg[1]/$dimimagejpg[0])*$newwidthimage ;
$newimagejpg = imagecreatetruecolor($newwidthimage , $newheightimagejpg) or die ("Erreur lors du dimensionnement");
imagecopyresampled($newimagejpg , $imageinitjpg , 0, 0, 0, 0, $newwidthimage, $newheightimagejpg, $dimimagejpg[0] , $dimimagejpg[1]);
imagedestroy($imageinitjpg);
imagejpeg($newimagejpg, $uploaddir.$NomImageExploitable.'.jpg', 100);
echo ' <div class="Validation_form"><p>5- Image enregistrée. URL : '.$uploaddir. $NomImageExploitable.'.jpg</p>
<img src="'.$uploaddir. $NomImageExploitable.'.jpg">';
} else {
header("Content-type: image/png");
$imageinitpng = imagecreatefrompng($_FILES['ProdPicture']['tmp_name']);
$dimimagepng = getimagesize($_FILES['ProdPicture']['tmp_name']);
$newheightimagepng = ($dimimagepng[1]/$dimimagepng[0])*$newwidthimage ;
$newimagepng = imagecreatetruecolor($newwidthimage , $newheightimagepng) or die ("Erreur lors du dimensionnement");
imagecopyresampled($newimagepng , $imageinitpng , 0, 0, 0, 0, $newwidthimage, $newheightimagepng, $dimimagepng[0] , $dimimagepng[1]);
imagedestroy($imageinitpng);
imagepng($newimagepng, $uploaddir.$NomImageExploitable.'.png', 100);
echo ' <div class="Validation_form"><p>5- Image enregistrée. URL : '.$uploaddir. $NomImageExploitable.'.png</p>
<img src="'.$uploaddir. $NomImageExploitable.'.png">';
}
} else {
echo '<div class="Validation_form"><p>4- Taille de l\'image trop élevée. Produit ajouté sans image.</p>';
}
} else {
echo '<div class="Validation_form"><p>3- Format de l\'image erroné. Produit ajouté sans image.</p>';
}
} else {
echo '<div class="Validation_form"><p>2- Le fichier n\'a pas été chargé. Produit ajouté sans image.</p>';
}
} else {
echo '<div class="Validation_form"><p>1- Pas de fichier sélectionné. Produit ajouté sans image.</p>';
}
}
else
{
echo 'class="Validation_form"><p>L\'Produit n\'a pu être ajouté au catalogue.</p></div>';
}
echo ' </div><div class="Validation_form_bt"> <p> <a href="index.php?pg=insertproduit" class="btn">Ajouter un nouveau Produit</a> </p></div>
<br><br>
<div class="Validation_form_bt"> <p> <a href="index.php?pg=tousproduit" class="btn">Accéder au catalogue des produits</a> </p></div>';
}
?>
</div>
</div>
<!-- Pied de page -->
<footer>
...
</footer>
</div>
</body>
</html>
Enfin, c'est se que je pense et ce que je vois en regardant la source html lors du chargement de la page
non lol , j'avoue j'ai du "formulaire" dans tous les sens.
Mais en fait quand je met le formulaire dans une page seule à la racine (meme niveau que index.php) et que je l'utilise ça marche, et quand je le réintègre à ma page index ça ne marche plus.
Mais seule la partie concernant la pièce jointe ne fonctionne plus, l'insertion des données dans la table fonctionne bien elle .
il doit me manquer une notion que j'ai zappé mais je ne vois pas quoi en fouillant depuis 3 jours
Es-tu sûr que ce n'est juste pas le chemin où tu enregistres qui n'est pas bon ? C'est ce que je te disais au début, le chemin doit être évalué depuis le fichier index.
oui j'en suis sur , car lorsque je met le formulaire seul au meme niveau que le fichier index, ça marche très bien.
De plus j'ai testé le fichier envoyé, si tu regardes dans mon code ( je sais ... il est mal organisé lol ) tu verras qu'à la fin je lui demande de m'afficher le nom temporaire du fichier et le type mime ... et là ... aucun nom ni aucun type ne s'affiche.
Donc je pense que le fichier est bien envoyé quelque part mais que le script ne le retrouve pas. c'est possible ça ?
// Définition des variables pour l envoi du fichier
$nomfilesource = strtolower($_FILES['IngPicture']['tmp_name']);
$typemime = strtolower($_FILES['IngPicture']['type']);
echo '<p>'.$nomfilesource.' et le type mime visible : '.$typemime.'</p>';
alors en poussant l'analyse, je suis aller voir la config renvoyée par phpinfo() chez mon hébergeur.
Pour la directive upload_tmp_dir j'obtient "no value"
Donc j'imagine que je dois la définir en amont dans mon script pour que ce soit fonctionnel. c'est bien ça ?
C'est normal que ça renvoie cette valeur "no value " ?
- Edité par TonyDifi 19 novembre 2017 à 12:51:14
Tony
formulaire d'upload et fonction include
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Tony
N'oubliez pas d'activer les erreurs PDO.
Tony
N'oubliez pas d'activer les erreurs PDO.
Tony
N'oubliez pas d'activer les erreurs PDO.
Tony
N'oubliez pas d'activer les erreurs PDO.
Tony
N'oubliez pas d'activer les erreurs PDO.
Tony
N'oubliez pas d'activer les erreurs PDO.
Tony
N'oubliez pas d'activer les erreurs PDO.
Tony