|
|
|
|
Bonjour,
Je viens de créer sur mon site un livre d'or avec une base de données Mysql et php pour la page internet.
Quand je remplis mon formulaire avec pseudo, message, etc... il me la crée deux fois dans la base de données.
D'ou cela peut venir?
A savoir que j'ai fait plusieurs tests auparavant et qu'il y a peut etre un bout de code qui reste sur ma page php, mais je connais pas assez.
Merci de votre réponse.
Je l'ai crée avec dream weaver, et c'est bien ce qu'il me semblait,j'avais deux fois la fonction d'insertion d'enregistrement.
|
Je vais reprendre l'idée de quelqu'un sur un post de CCM il ya quelques temps.
<?
function conversion_date($english_date)
{
/* La date récupérée depuis un champs Sql donnera un truc comme ça:
$date="2004-01-05"; */
/* $tab_english_date est la date anglaise sous forme de tableau (avec les "-" comme séparateur) */
$tab_english_date=explode("-",$english_date);
$date_france='';
for ($compteur=2;$compteur>=0;$compteur--)
{
/* On inverse ce tableau et on l'affecte à $date_france en remettant les
"-" */
$date_france.=$tab_english_date[$compteur] . "-";
}
return $date_france;
}
?>
Pour l'utiliser, imaginons que tu as récupéré une date de ta base de données vers une variable nommée $date: $date="2004-01-05"; $french_date=conversion_date($date); echo $french_date; Valà :-) Désolé si le code part dans tout les sens, j'ai du mal à le mettre en forme ici.... Sm95ZXVzZXMgZup0ZXMgOi0p |
Il ya encore un tirêt après l'année, j'ai corrigé ça dans la fonction:
for ($compteur=2;$compteur>=0;$compteur--)
{
// Lorsqu'on arrive à l'année, on ne met pas de tirêt à la fin :-)
if ($compteur==0)
{
$date_france.=$tab_english_date[$compteur];
}
// On inverse ce tableau et on l'affecte à $date_france en remettant les "-"
else
{
$date_france.=$tab_english_date[$compteur] . "-";
}
}
Voilà.... Sm95ZXVzZXMgZup0ZXMgOi0p |
Bon je viens d'essayer tout ca, du coup il me sort qu'un seul tiret.
|
Répondre à kilian
|
Il y a une autre méthode à faire qui est peu être plus pratique:
fonction dateSqlToString($date){
// tout d'abord tu utilise bien la fontion explode
$tab_date=explode("-",$english_date);
//tu créer un timestamp unix avec
$time_date = mktime(0, 0, 0, date[1], date[0], date[2]);
// tu recrée la date selon le format voulu grace à la fonction date()
return date("d-m-Y",$time_date);
}
Après tu change le format donné dans la fonction date et tu pourra avoir une date foraté comme tu le veut. |
Il faut que tu fasse plusieur test:
$sql="SELECT date FROM mabase WHERE id=1"; $result=mysql_query($sql); echo mysql_result($result,0,'date'); (Ou avec ta manière) Si la date que tu affiche est correct tu essaye ensuite la fonction explode: $table_date=explode('-',$date);
echo $table // Doit t'afficher " Array "
foreach($table as $value){
echo $value.'<br>'; // Doit t'afficher les trois valeur de ta date
}
si tout ca marche tu test enfin les fonctions date() et mktime(): $time_date = mktime(0, 0, 0, $tab_date[1], $tab_date[2], $tab_date[0]);
echo date("d-m-Y",$time_date);
fait tout ca en dehors d'une fonction, dans un script ou tu ne fait que ces tests. Essaye et dit nous toutes les erreurs que tu aura.
|
Bon, en effet on devrait voir la date une fois, puis "array" puis encore la date...
<?php require_once('../Connections/guestbook.php');
$sql="SELECT date FROM message WHERE id=1";
$result=mysql_query($sql);
$date=mysql_result($result,0);
echo $date . " ( La date est bien récupérée depuis la base de données)<br><br>";
$table_date=explode('-',$date);
echo "Le shéma du tableau créé avec les champs année, mois et jour séparés:<br>";
print_r ($table_date);
echo "<br><br>Affichage de chaque élément de la date un par un:<br>";
foreach($table_date as $value){
echo $value.'<br>';
}
$time_date = mktime(0, 0, 0, $table_date[1], $table_date[2], $table_date[0]);
echo "<br><br>La date au format que tu voulais: " . date("d-m-Y",$time_date);
}
?>
Ca donne quoi? Sm95ZXVzZXMgZup0ZXMgOi0p
|
Ah? Tiens c'est bizzare qu'à la première actualisation de la page ça ne marche pas. Bon alors sans procéder par les étapes et pour afficher directement la date, c'est:
<?php
require_once('../Connections/guestbook.php');
$sql="SELECT date FROM message WHERE id=1";
$result=mysql_query($sql);
$date=@mysql_result($result,0);
$table_date=explode('-',$date);
$time_date = mktime(0, 0, 0, $table_date[1], $table_date[2], $table_date[0]);
$date_france=date("d-m-Y",$time_date);
if ($date_france != "01-01-1970")
{
echo $date_france;
}
else
{
echo "Date erronée....";
}
?>
Voilà. Mais bon si ça marche pas à tout les coups.... C'est pas pratique de traîner une erreur comme ça. C'est dreamweaver qui génère ce code Php? Sm95ZXVzZXMgZup0ZXMgOi0p |
Répondre à kilian
|
Ben je suis bien d'accord, mais le seul hic, c'est qu'il faut connaitre.
|
Et moi alors on m'invite pas ? :-(
sql="SELECT date FROM message"; sans le WHERE, MySQL va prendre tout les enregistrement. Si tu veut que tes enregistrement soit trier dans l'ordre, selon la date tu rajoute ORDER BY et ASC ou DESC (respectivement Ascendant et descandant) pour le sens du tri: sql="SELECT date FROM message ORDER BY date DESC"; Après ca tu récupère le résultat: $result=mysql_query($sql); Contrairement a avant, ton résultat aura plusieurs ligne. Pour accéder à chacune d'elles on utiliise la fonction mysql_fetch_array() (qui te renvoie la prochaine ligne sous forme de tableau, ou FALSE s'il n'y a pas ou plus de ligne): while($row=mysql_fetch_array($result)){
$table_date=explode('-',$row['date']);
$time_date = mktime(0, 0, 0, $table_date[1], $table_date[2], $table_date[0]);
...
}
Et voila en gros comment tu doit faire. |