Petit problème pour récupérer directement les donées
Résolu
flo39400
Messages postés
596
Date d'inscription
Statut
Membre
Dernière intervention
-
flo39400 Messages postés 596 Date d'inscription Statut Membre Dernière intervention -
flo39400 Messages postés 596 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Depuis quelque semaines je fait des expériences avec le magnifique langage html, css, php et sql.
Mais je me suis heurté a un problème, je n'arrive pas récupérer une valeur alors j'ai contourné le problème en affichant la valeur puis je le rentre moi même via une autre page mais bon pas très intuitive tous cela.
La page pour mettre l'image sur le serveur.
Le fichier "upload.php"
Le fichier envoie pour l'enregistrement dans la base de donnée avec un commentaire sous la photo.
Puis la page de résultat pour voir ce qui sais passé. ( je sais je devrait utiliser du CSS au lieu des <br /> mais sais juste pour tester).
Depuis quelque semaines je fait des expériences avec le magnifique langage html, css, php et sql.
Mais je me suis heurté a un problème, je n'arrive pas récupérer une valeur alors j'ai contourné le problème en affichant la valeur puis je le rentre moi même via une autre page mais bon pas très intuitive tous cela.
La page pour mettre l'image sur le serveur.
<html>
<head>
<title>TUTO PHP</title>
<meta charset="utf-8">
</head>
<body>
<br /> <br />
<div align="center">
<table>
<tr>
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="fichier" /><br />
<input type="submit" name="envoie" value="Envoyer le fichier" />
</form>
</tr>
</table>
</form>
</div>
</body>
</html>
Le fichier "upload.php"
`<?php
move_uploaded_file($_FILES['fichier']['tmp_name'], 'upload/'.basename($_FILES['fichier']['name']));
$message = "".$_FILES['fichier']['name'];
$info = "Action effectuer avec succès";
echo $message;
echo '<br /><font color="green">'.$info."</font><br /><a href=\"site4.php\">Retour<a/>";
?>
<html>
<body>
<br />
<br />
<a href="site5.php">Envoie</a>
</body>
</html>
Le fichier envoie pour l'enregistrement dans la base de donnée avec un commentaire sous la photo.
<?php
$bdd = new PDO('mysql:host=127.0.0.1;dbname=site1', 'root', '');
if(isset($_POST['envoie']))
{
if(!empty($_POST['adresse']))
{
$adresse = ($_POST['adresse']);
$legende = ($_POST['legende']);
$insertmbr = $bdd->prepare("INSERT INTO photo(adresse, text) VALUES(?, ?)");
$insertmbr->execute(array($adresse, $legende));
$info = "La photo et le commentaire a était inscrit au serveur ! <a href=\"/sites/site7.php\">Aller voir !<a/>";
}
}
else
{
$erreur = "La photo et le commentaire n'ont pas était envoyer !";
}
?>
<html>
<head>
<title>TUTO PHP</title>
<meta charset="utf-8">
</head>
<body>
<div align="center">
<h1>Inscription</h1>
<img src="" class="image" alt="Photo" />
<br /> <br />
<form method="POST" action="">
<table>
<tr>
<td align="right">
<label for="photo">Adresse de la photo :</label>
</td>
<td align="right">
<input type="text" size="100" style="height:25px;" placeholder="Adresse du serveur" id="adresse" name="adresse" />
</td>
</tr>
<tr>
<td align="right">
<label for="legende">Commentaire sous la photo :</label>
</td>
<td align="right">
<input type="text" size="100" style="height:25px;" placeholder="Commentaire" id="legende" name="legende" />
</td>
</tr>
<tr>
<td></td>
<td align="center">
<br />
<input type="submit" name="envoie" value="Enregistrement dans la base de donnée !" />
</td>
</tr>
</table>
</form>
<?php
if(isset($erreur))
{
echo '<font color="red">'.$erreur."</font>";
}
if(isset($info))
{
echo '<font color="green">'.$info."</font>";
}
?>
</div>
</body>
</html>
Puis la page de résultat pour voir ce qui sais passé. ( je sais je devrait utiliser du CSS au lieu des <br /> mais sais juste pour tester).
<?php
session_start();
$bdd = new PDO('mysql:host=127.0.0.1;dbname=site1', 'root', '');
?>
<html>
<head>
<title>TUTO PHP</title>
<meta charset="utf-8">
</head>
<body>
<style type="text/css">
p
{
color: blue;
}
h2
{
color: blue;
}
</style>
<div align="center">
<?php
$reponse = $bdd->query('SELECT * FROM accueil');
// On affiche chaque entrée une à une
while ($mess = $reponse->fetch())
{
?>
<h2><?php echo $mess['presentation']; ?></h2>
<?php
}
?>
<div align="center">
<table align="center">
<form method="POST" action="" enctype="multipart/form-data">
<tr>
<td align="center">
<?php
$reponse = $bdd->query('SELECT * FROM photo');
// On affiche chaque entrée une à une
while ($donnees = $reponse->fetch())
{
?>
<br />
<br />
<br />
<br />
<br />
<p><img src="upload/<?php echo $donnees['adresse']; ?>" height="550" width="700 alt="" title="" /></p>
<p><?php echo $donnees['text']; ?></p>
</td>
</tr>
<br /><br />
<td></td>
<?php
}
?>
</form>
</table>
</div>
</body>
</html>
A voir également:
- Petit problème pour récupérer directement les donées
- Comment récupérer les messages supprimés sur whatsapp - Guide
- Récupérer mon compte facebook désactivé - Guide
- Comment récupérer un compte facebook piraté - Guide
- Comment recuperer une video sur youtube - Guide
- Impossible de récupérer mon compte gmail - Guide
2 réponses
Bonjour,
Peux tu expliquer exactement le souci rencontré ?
Quelle partie du code, selon toi, ne fonctionne pas ?
Peux tu expliquer exactement le souci rencontré ?
Quelle partie du code, selon toi, ne fonctionne pas ?
Bonjour,
Déjà... il est préférable de mettre le code de connexion à ta BDD dans un fichier à part
que tu n'auras qu'à inclure dans tes pages (au lieu de le copier/coller 50 fois....)
Puis pour que PDO t'affiche les erreurs... il faut, lors de la connexion ajouter quelques options.
Modifie ta connexion à la bdd en t'inspirant de ce code :
Pense aussi à récupérer "proprement" les variables (via ISSET ou !EMPTY et l'écriture ternaire) AVANT de les utiliser
Et enfin.. pense à mettre des bloc TRY/CATCH sur tes requêtes pour t'assurer qu'elles se passent bien.
Ce qui donne dans ton code:
NB: Tu avais également un souci dans les TR / TD de ton tableau HTML ....
TR => LIGNE du tableau
TD => CELLULE de la ligne
Donc un Tableau contient des TR ... les TR contiennent des TD .... (c'est comme ça...)
Cordialement,
Jordane
Déjà... il est préférable de mettre le code de connexion à ta BDD dans un fichier à part
que tu n'auras qu'à inclure dans tes pages (au lieu de le copier/coller 50 fois....)
Puis pour que PDO t'affiche les erreurs... il faut, lors de la connexion ajouter quelques options.
Modifie ta connexion à la bdd en t'inspirant de ce code :
<?php //Fichier de connexion à la BDD : cnxBDD.php $host = 'localhost'; $user = 'root'; $pwd = ''; $dbname = 'site1'; $charset = ";charset=UTF8"; //si tu veux avoir de l'utf8 try{ $bdd= new PDO("mysql:host=".$host.";dbname=".$dbname.$charset.",".$user.",".$pwd); $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ); } catch(PDOException $e) { die('Erreur : ' . $e->getMessage()); } ?>
Pense aussi à récupérer "proprement" les variables (via ISSET ou !EMPTY et l'écriture ternaire) AVANT de les utiliser
Et enfin.. pense à mettre des bloc TRY/CATCH sur tes requêtes pour t'assurer qu'elles se passent bien.
Ce qui donne dans ton code:
<?php //Affichage des erreurs PHP error_reporting(E_ALL); //Demarrage des sessions session_start(); //connexion à la BDD (on inclus le fichier) require_once "cnxBDD.php"; //Récupération 'propre' des varialbes $legende = isset($_POST['legende']) ? $_POST['legende'] : ''; $s_msg = !empty($_SESSION['message']) ? $_SESSION['message'] : ''; $files = !empty($_FILES['fichier']) ? $_FILES['fichier'] : NULL; //traitement du formulaire if(isset($_POST['envoie'])) { $tmpName = $files['tmp_name']; $fileName = $files['name']; if(!move_uploaded_file($tmpName, 'upload/'.$fileName)){ echo "<br>Move error ! " . $tmpName . "-->".'upload/'.$fileName; }else{ $info = $fileName. " Importé avec avec succès"; } echo '<br /><font color="green">'.$info."</font><br /><a href=\"site4.php\">Retour<a/>"; $sql = "INSERT INTO photo(adresse, text) VALUES(:adresse, :text)"; $datas = array(':adresse'=>$fileName ,':text'=> $legende); try{ $insertmbr = $bdd->prepare($sql); $insertmbr->execute($datas); }catch(Exception $e){ echo "Erreur ! ".$e->getMessage(); } $info = "La photo et le commentaire a était inscrit au serveur ! <a href=\"/sites/site7.php\">Aller voir !<a/>"; }else{ $erreur = "La photo et le commentaire n'ont pas était envoyer !"; } ?> <html> <head> <title>TUTO PHP</title> <meta charset="utf-8"> </head> <body> <br /> <br /> <div align="center"> <form action="envoie.php" method="post" enctype="multipart/form-data"> <table> <tr> <td> <label for="fichier">Votre photo :</label> <p>La taille maximum de la photo doit être de 20 MO !</p> </td> <td> <input type="file" name="fichier" id="fichier" /><br /> </td> </tr> <tr> <td> <label for="legende">Commentaire sous la photo :</label><br /><br /> </td> <td> <textarea name="legende" id="legende" rows="10" cols="40">Saisir un texte ici.</textarea> </td> </tr> <tr> <td> <input type="submit" name="envoie" value="Envoyer le fichier" /> </td> </tr> </table> </form> </div> </body> </html>
NB: Tu avais également un souci dans les TR / TD de ton tableau HTML ....
TR => LIGNE du tableau
TD => CELLULE de la ligne
Donc un Tableau contient des TR ... les TR contiennent des TD .... (c'est comme ça...)
Cordialement,
Jordane
Bonjour, merci encore pour votre aide.
Et merci pour la petite précision du TD et TR, moi qui avais un problème de CSS sa devrait m'aider.
Donc après avoir essayer votre code j'ai un code erreur.
Erreur : SQLSTATE[HY000] [2019] Unknown character set
On dirait que ça vient du
Et merci pour la petite précision du TD et TR, moi qui avais un problème de CSS sa devrait m'aider.
Donc après avoir essayer votre code j'ai un code erreur.
Erreur : SQLSTATE[HY000] [2019] Unknown character set
On dirait que ça vient du
$charset = ";charset=UTF8";
J'ai corriger le problème je sais pas si sais bien ce que j'ai fait.
Voila mon code de "cnxBDD.php"
Voila mon code de "cnxBDD.php"
<?php
try{
$bdd = new PDO('mysql:host=localhost;dbname=site1;charset=utf8', 'root', '');
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
} catch(PDOException $e) {
die('Erreur : ' . $e->getMessage());
}
?>
Donc le code fonctionne mais je voudrais que cela sois plus simple.
J'aimerai sur la page que sur la page pour sélectionner la photo et l'envoyer au serveur stocké dans le dossier "upload".
Après j'aimerai que cela sois traité en récupérant la valeur de la cible de la photo et laisser un message qui me dit que sais bon que cela sais bien effectuer.
Je vais travailler la dessus.
Merci d'avance.
Si quelqu’un peu m'aider ,....