Ses derniers messages sur les forums
Bonjour,
Pour tous ceux qui comme moi rechercherais une solution.
Après plusieurs essais, j'ai trouvé la solution. Il faut utiliser pour UPDATE :
$sth = $dbh->exec($sql);
Mon code pour lire avant modification dans un formulaire :
<?php
include_once('../_require/config.inc.php');
if (isset($_GET['id']) && !isset($_GET['go'])) {
$sql = 'SELECT titre, news FROM news WHERE id="'.$_GET['id'].'"';
$sth = $dbh->query($sql);
$result = $sth->fetchALL (PDO::FETCH_ASSOC);
foreach ($result as $row) {
$titre=$row['titre'];
$news=$row['news'];
}
}
?>
<form name="formulaire" method="post" action="edit_news_1.php?go=ok">
<table><tr><td align="left"><span class="texte">Titre :</span></td><td align="left"><input type="text" name="titre" value="<?php if (!isset($row['titre'])) $row['titre'] = ''; echo $row['titre']; ?>"></td></tr>
<tr><td colspan="2" align="center"><textarea name="news" cols="30" rows="3"><?php if (!isset($row['news'])) $row['news'] = ''; echo $row['news']; ?></textarea></td></tr>
<tr><td colspan="2" align="center"><input type="submit" value="Envoyer"></td></tr>
<input type="hidden" name="id" value="<?php echo $_GET['id']; ?>">
</table></form>
SUITE
Mon code pour UPDATE :
<?php
include_once('../_require/config.inc.php');
if (isset($_GET['go'])) {
if ((empty($_POST['titre'])) OR (empty($_POST['news']))) {
$_POST['titre'] = ($_POST['titre']);
$_POST['news'] = ($_POST['news']);
$message = 'Au moins un des deux champs est vide.';
$_GET['id'] = $_POST['id'];
}
$sql = 'UPDATE news SET titre="'.($_POST['titre']).'", news="'.($_POST['news']).'" WHERE id="'.$_POST['id'].'"';
$sth = $dbh->exec($sql);
}
header('Location: index.php');
exit();
?>
Jack Bocar
Bonjour,
Merci Moogli de ta réponse, mais tout ceci, je l'ai déjà vu. Ce que je cherche c'est un code qui fonctionne avec un formulaire de façon à modifier une nouvelle ou le titre de cette nouvelle, effectivement, si je fais une nouvelle requête à chaque fois avec un code de ce genre j'y arrive :
"UPDATE my_news SET titre='PDO', monTexte=' Texte de ma News' WHERE titre='PDO c'est BO'";
Mais, la syntaxe d'une requête qui modifie ou le texte ou le titre depuis un formulaire, je ne trouve pas !
Mais, je me dis que ce n'est pas très important, puisque c'est de la cuisine interne, et l'essentiel est dans l'enregistrement de la nouvelle et sont affichage, plus souple et mieux sécurisé avec PDO, je garde mes anciens codes pour la modification des nouvelle et j'utilise PDO pour envoyer au serveur et afficher à l'écran PDO.
Si tu trouves un code qui fonctionne avec un formulaire, je suis preneur, je continue à rechercher de mon côté. C'est tout de même blizzard de ne pas trouver un seul exemple sur le NET ?
Encore merci.
Jack Bocar
Pour ce qui est de mon code pour lire la news :
$sql = 'SELECT id, date, titre, news FROM news';
$sth = $dbh->query($sql);
$result = $sth->fetchALL (PDO::FETCH_ASSOC);
foreach ($result as $row) {
$date=$row['date'];
$titre=$row['titre'];
$news=$row['news'];
$jour = substr($date_pub, 8, 2);
$mois = substr($date_pub, 5, 2);
$annee = substr($date_pub, 0, 4);
$date = $jour.'-'.$mois.'-'.$annee;
echo '<table border="0" width="100%" cellpadding="0" cellspacing="0" id="cadre-news"><tr><td>';
echo '<table border="0" width="100%" cellpadding="0" cellspacing="0"><tr>';
echo '<td width="20%" id="date-news">, (stripslashes(htmlentities(trim($row['date'])))) ,</td>';
echo '<td width="80%" id="titre-news">, (stripslashes(htmlentities(trim($row['titre'])))) ,</td>';
echo '</tr>';
echo '</table>';
echo '<table border="0" width="100%" cellpadding="0" cellspacing="0"><tr>';
echo '<td id="texte-news">, nl2br(stripslashes(htmlentities(trim($row['news'])))) ,</td>';
echo '</tr>';
echo '</table>';
echo '</td></tr></table>';
echo '';
}
Bonjour,
Je ne trouve pas la bonne syntaxe pour UPDATE avec PDO :
Mon ancien code :
$sql = 'UPDATE infos SET date="'.$date.'", titre="'$_POST['titre']'", text="'$_POST['text']'"';
Comment écrire la syntaxe avec une base PDO.
Pour SELECT et INTO ça fonctionne très bien voici un bout de code :
$sql = 'SELECT id, date, titre, text FROM infos';
$sth = $dbh->query($sql);
$result = $sth->fetchALL (PDO::FETCH_ASSOC);
foreach ($result as $row) {
$date=$row['date'];
$titre=$row['titre'];
$text=$row['text'];
Merci de votre aide pour la syntaxe UPDATE
Jack Bocar
Bonjour,
J'ai acheté le livre PHP5 Avancé, je suis surpris par les cours PHP, parlent pour la plupart des relations bases de données avec le module PDO.
Je ne vois pas vraiment l'intérêt, vu que même sur le site de PHP Facile, vous n'en faites même pas allusion.
De plus, ça fait peur lorsque l'on lit : si votre application n'intercepte pas les exceptions lancées depuis le constructeur PDO, l'action par défaut du moteur PHP est de terminer le script et d'afficher une trace. Cette trace pourrait révéler des détails complets sur la connexion à la base de données, incluant le nom d'utilisateur et le mot de passe. Il est donc de votre responsabilité de gérer cette exception, soit explicitement (via l'instruction catch) ou implicitement via la fonction (set_exception_handler();)
Si vous avez eu cet ouvrage en main, merci de me donner votre avis.
Jack Bocar
Bonjour,
J'ai remplacé date par time, et, je n'ai plus d'erreur !!!!
$temps_actuel = time("U");
//$temps_actuel = date("U");
Est-ce que cette façon de faire est bonne aussi ?
Merci de vos conseils
Jack Bocar
Bonjour,
Merci de ta réponse, mais, je ne vois pas comment faire pour cette variable : date_default_timezone_set() ?
Merci de m'éclairer
Jack Bocar
Bonjour,
Test ceci :
<?php
$sql = 'SELECT id, pseudo, mail, ect FROM membres WHERE nom="NOM_MEMBRES" ';
?>
Jack Bocar
Bonjour,
Je viens de m'apercevoir qu'avec mon gestionnaire d'erreurs, j'ai cette erreur que je ne comprends pas ?
<?php
$tps_max_connex = 180;
$temps_actuel = date("u"); ----> Ligne 3
$sql = 'SELECT count(*) FROM nb_online WHERE ip= "'.$_SERVER['REMOTE_ADDR'].'"';
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error());
$data = mysql_fetch_array($req);
mysql_free_result($req);
if ($data[0]) {
$sql = 'UPDATE nb_online SET time = "'.$temps_actuel.'" WHERE ip = "'.$_SERVER['REMOTE_ADDR'].'"';
$req = mysql_query($sql) or die ('Erreur SQL !'.$sql.''.mysql_error());
}
else {
$sql = 'INSERT INTO nb_online VALUES("'.$_SERVER['REMOTE_ADDR']. '", "'.$temps_actuel.'")';
$req = mysql_query($sql) or die ('Erreur SQL !'.$sql.''.mysql_error());
}
$heure_max = $temps_actuel - $tps_max_connex;
$sql2 = 'DELETE FROM nb_online where time < "'.$heure_max.'"';
$req2 = mysql_query($sql2) or die ('Erreur SQL !'.$sql2.''.mysql_error());
?>
Erreur dans le fichier E:wwwtemplierspagesonlineonline.php à la ligne 3
date() [function.date]: It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Paris' for '1.0/no DST' instead
Merci de vos conseils
Jack Bocar
Bonjour,
Merci,
C'est très possible, je n'y connais rien ou presque rien, je fais ligne à ligne.
On peut dire au pif, je n'ai même pas de livre, je pioche des exemples sur le net et je les assemble.
Je vais tester ta correction et je te dirais.
Il faudrait que LA GLOBULE nous fasse un comment faire un script de news pour PHP5 avec MYSQLI, qui va être un jour utilisé par les serveurs.
Encore merci
Jack Bocar