Je débute totalement en php (1 semaine) et comme tout débutant j'ai un problème.
Le "truc" c'est que je ne souhaite faire aucun copier / coller de codes trouvés sur le web qui n'aideraient pas ma compréhenssion donc je fais tout selon ce que j'ai retenu pour vérifier mes légères connaissances et c'est pourquoi mon bout de code vous paraitra certainement "non conventionnel".
Donc : J'ai créé une page pour insérer des actus (ça, pas de problème) via une table "actu" dont les champs sont :
- id (ai / primaire)
- title (varchar)
- message (text)
- idate (datetime)
- signature (varchar)
Le code ci dessous :
Je me doute qu'il n'est pas très judicieux d'insérer mon UPDATE dans la boucle mais le fait est qu'au moins il me met à jour l'actu seulement il met toute la table à jour... logique je suis dans la boucle donc il boucle ma condition.
Lorsque je sors ma condition isset($_POST['update'] de la boucle, aucun message d'erreur mais la requète fonctionne pas et rien n'est à jour, c'est là que j'ai dû faire une erreur.
<?php
$name=$_SESSION['name']; // ça c'est juste la session de l'utilisateur connecté que j'ai fait hier, lors des ajout d'actu son nom devient la signature donc inutile ici.
try
{
$pdo_actu[PDO::ATTR_ERRMODE]=PDO::ERRMODE_EXCEPTION; $bdd_actu = new PDO('mysql:host=localhost;dbname=testbidon', 'root', '', $pdo_actu);
$answer=$bdd_actu->query('SELECT * FROM actu ORDER BY idate DESC LIMIT 0,5');
while($done=$answer->fetch())
{
?>
<form method="post" >
<input type="hidden" name="id" value="<?php $done['id']; ?>" />
<p>
<input type="text" name="title" id="textinput" value="<?php echo $done['title']; ?>" />
posté par <strong><?php echo $done['signature']; ?></strong> le <?php echo $done['idate']; ?>
</p>
<?php echo '<img src="../../image_actu/'.$done['image'].'" width="126" height="126" />'; ?>
<textarea name="message" id="textarea_gestion" ><?php echo $done['message']; ?></textarea>
<br />
<div id="message">
<input type="submit" name="update" value="modifier" class="submit" title="modifier l'actu" /> <input type="submit" name="delete" value="supprimer" class="submit" title="supprimer l'actu" />
<br />
</div>
</form>
<?php
if (isset($_POST['update']))
{
$answer_update=$bdd_actu->prepare('UPDATE actu SET title = :newtitle, message = :newmessage WHERE id = :id');
$answer_update->execute(array('newtitle'=>strip_tags($_POST['title']), 'newmessage'=>$_POST['message'], 'id'=>$_POST['id']));
echo 'l\'actu '.$_POST['id'].' a été modifié';
}
}
$answer->closeCursor();
}
catch (Exception $e)
{
die('Ca craint :' .$e->getMessage()); // en attendant de trouver un message super sympa...
}
?>
J'ai aussi essayé de placer l'update sur une autre page en mettant un header sur celle-ci mais là, j'ai eu des erreurs diverses :Le but de la chose était d'intégrer aussi un header dans la page appelé pour revenir sur l'appelante. (j'invente des mots là non?)
Mais bon, j'ai abandonné cette idée.
<?php
if (isset($_POST['update'])) { header ('location : mon_update.php'); }
?>
Donc si l'un d'entre vous (voire plusieurs) a une idée du moment où j'ai loupé mon virage, n'hésitez pas: là j'ai besoin de vous.Merci par avance