1 pièce(s) jointe(s)
Affichage catalogue et formulaire d'édition d'articles PHP
Je suis débutant et c'est la première fois que je m'inscris sur un forum... Merci à tous pour ce forum... J'espère ne pas faire d'impair!
j'ai construit un "site/blog" avec 10 catégories alimentées par des formulaires -> bases de données (id auto, dessins, sculptures, musique, expression etc.. )
je voudrais pouvoir modifier ensuite certaines tables de ces bases (titre, commentaire,.) simplement à partir d'un tableau qui me servirait de 'catalogue et suivi catalogue de mes oeuvres . j'ai trouvé cette discussion:
https://www.developpez.net/forums/d1...he-simple-bdd/
J'ai cherché à comprendre et adapter mais Je bloque. page blanche... comment envoyer et récupérer les $post, comment lancer l'update de la table? (en plus je n'ai pas les erreurs : pas d'accès au serveur d'hébergement de mon site)
Je poste ces débuts de codes.
- recherche.php - (tableau de recherche souhait d'édition "en direct" et validation par bouton ou [entrée] dans la zone concernée.)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| <!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>Recherche</title>
<style>
table{width:100%;border-collapse:collapse}
table tr,table th,table td{border:1px solid black;}
table tr td{text-align:center;padding:1em;}
</style>
</head>
<body>
<?php include('concom.php');?>
<form method='post'>
<input type='number' placeholder='recherche' name="recherche_valeur"/>
<input type='submit' value="Rechercher"/>
</form>
<table>
<thead>
<tr><th>Id</th><th>Titre</th><th>Commentaire</th><th>Date</th></tr>
</thead>
<tbody>
<?php
$sql='select * from pictures';
$params=[];
if(isset($_POST['recherche_valeur'])){
$sql.=' where nom like :nom';
$params[':nom']="%".addcslashes($_POST['recherche_valeur'],'_')."%";
}
$resultats=$connect->prepare($sql);
$resultats->execute($params);
if($resultats->rowCount()>0){
while($d=$resultats->fetch(PDO::FETCH_ASSOC)){
?> <form name="inscription" method="post" action="chgtCom.php">
<tr>
<td><input type='number' value='<? echo$d['Id']?>'name="Id"</td>
<td><input type='textarea' value='<? echo $d['Titre']?>'name="titre"/></td>
<td><input type='textarea' value='<? echo $d['Commentaire']?>' name="Commentaire"/></td>
<td><input type='textarea' value='<? echo $d['Date']?>' name="Date"/></td>
<input type="submit" name="valider" value="valider Id<?=$d['Id']?>"/>
</form>
</tr>
<?php
}
$resultats->closeCursor();
}
else echo '<tr><td colspan=4>aucun résultat trouvé</td></tr>'.
$connect=null;
?>
</tbody>
</table>
</body>
</html> |
- code.php - (fichier récupération du submit et post update dans la table pictures.)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| <?php
$postId= $post ['Id'];
$postTitre=$post ['Titre'];
$postCommentaire=$post ['Commentaire'];
$postDate=$post ['Date'];
$connect = mysqli_connect("localhost", "utilsateur", "mdp", "ma_base");
/* Vérification de la connexion */
if (!$connect) {
echo "Échec de la connexion : ".mysqli_connect_error();
exit();
}
/* Vérification de la connexion */
if(isset($_POST['valider']))
if (!$connect)
{
echo "Échec de la connexion : ".mysqli_connect_error();
exit();
}
else
{
$query="UPDATE pictures SET Titre='$postTitre', Commentaire='$postCommentaire', Date='$postDate' WHERE id='$postId'";
mysql_query($query);
echo "Les modification ont été enregistrées dans la base de données";
mysql_close();
}
else
{
echo "Érreur" ;
exit();
}
mysqli_close($connect);
?> |
- connexion.php - Il y a aussi un fichier de connexion PDO (je n'ai pas trop compris par rapport à if (!$connect)...) mais je chercherai avant d'éventuelles questions
Code:
1 2 3 4 5 6 7 8 9 10
| <?php
//connection_database.php
$connect = new PDO('mysql:host=localhost;dbname=ma_base', 'utilisateur, 'mdp',[
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"
]);
?> |
Un petit rendu du tableau souhaité pour modifier les articles.
Pièce jointe 564430
Si c'est possible, j'en créerai pour chaque catégorie.
Voili ,voilà; J'espère ne pas être trop ridicule et que quelqu'un pourra me mettre sur la bonne voie...
Au plaisir de vous lire,
Merci beaucoup Toufik83! et jreaux62 et petite question en +
Bien. je note pour Pdo. Il faudra que je revoie toutes mes connexions dans mes pages alors...
Un Grand Merci Toufik83!! C'est très clair. vraiment super
Une ou deux petite question supplémentaire si je n'abuse pas de votre temps...
- On cache l'Id (pour des raisons de sécurité?) mais peut-on l'intégrer dans la recherche (c'est la référence de chacune de mes créations). Sinon, Il faut alors que je fasse une table N° par exemple qui récupére l'Id clé primaire?
J'ai mis un peu de temps à répondre, j'avais un souci de codage en utf-8. Mon serveur prend les modifications sans prendre en compte les caractères spéciaux et accents malgré la conversion de mes tables en utf-8.
- J'ai donc récupéré la fonction de mon script qui me sert à poster mes article et l'ai appliquée aux variables comme ça:
Code:
$postTitre=htmlentities($_POST['Titre']);
Ça a l'air de fonctionner mais est-ce que la méthode est correcte?
- Ensuite, je change un peu de "thème", je pensais que ce serait plus simple d'appliquer un dimensionnement automatique au textarea en html ou css. J'ai recherché, certains post parlent de fonctions, de js, Est-qu'il existe une solution "simple"? Sinon, je taperai mon commentaire à part avant de l'insérer pour éviter les err'edfurs. :-)
Encore merci,
C'est magnifique!. même si coté utf-8...
-Ça marche nickel. Merci Toufik83! Au-dessus de mes attentes pour le formulaire.!! recadrage modifiable à la volée. Le style rss suit et tout!!!- Super!. :D
- Par contre, j'ai un souci d'affichage utf-8.
En fait, Quand dans ma table commentaire (utf8_unicode_ci) c'est affiché comme ça : "nouvelle image ù", c'est bon sur mon site qui appelle le commentaire.
Quand on fait htmlspecialchars, ça s'affiche bien sur mes tables dans phpmyadmin mais pas sur le site.
Tout est inversé.
Quand on le force le codage avec htmlentites à la réception du $post et en envoyant dans la base. la base de donnée s'affiche comme ça : "nouvelle image ù" . donc ça marche sur le site! Je crains que le problème ne soit :
? Soit en amont niveau de ma baseMysql et là je n'ai pas d'accés avec mon hébergeur;
? Dans mon html avec un truc qui a foiré avec un vieux dreamweaver, mais je ne vois pas d'erreur. (j'ai fait une vérification d'encodage W3C, Il me trouve 2 balises "meta " mais identiquesalors que je n'en ai qu'une dans l'index... .) ;
? Ou encore dans formulaire d'envoi de mes posts qui balance mes posts en "htmlentities" (avec mes photos dédoublées miniature/originales pour optimiser le chargement avec une fonction...)
Je crois que je vais laissé comme ça au risque de me perdre...vu mon niveau
... J'ai déjà eu déjà beaucoup de mal Et vous m'avez tous beaucoup aidé!
En plus, j'ai encore un "chantier" en suivant xml/php pour comprendre les flux RSS et intégrer un fil plus tard...
(et toujours les PDO include à intégrer sur mes pages... merci jreaux62)
Bref, Merci merci!