8791 sujets

Développement web côté serveur, CMS

Pages :
bonjour

j'ai ma table sql et lorsque je rentre un message, la date ne s'affiche pas.

c'est 0000 00 00

Pourquoi ?

champ : Jour
Type : Date
Taille : 11
Not Nul
Defaut : aucune

et à défaut, j'ai même mis "tel que définit" , je n'ai pas la date ni dans ma base sql ni dans ma page web.
Smiley confus
Modifié par ytzmi (27 Jul 2011 - 18:46)
je me suis peut-être mal exprimée.

dans mon phpmyadmin, dans ma table sql, j'ai

id
jour
message

quand je rentre un message, ma page affiche l'id, le message et pour la date, c'est 000 00 00

hors, si je vais dans mon phpmyadmin pour voir la date, et bien, je n'ai pas de date, c'est du 0000 00 00, et donc, il est logique que la date ne s'affiche pas dans ma page.

ma question est pourquoi dans ma table sql, je n'ai pas de date.

Est-ce une erreur de structure de ma table ?
je vous ai donné en premier message la structure.
essayes de mettre à jour via phpmyadmin, en plus il affiche la requête et permet de créer le code php ...
peut-être que si je mets des images vous comprendrez mieux

là, c'est ma page web :


upload/38798-pageweb.jpg

et là c'est ce que l'on voit sur phpmyadmin

upload/38798-phpmyadm.jpg

et vous verrez qu'il y a 0000 00 00 pour les dates...

là, est le code de ma page

$base = mysql_connect (".sql.free.fr", "table", "mdp");
mysql_select_db ('table', $base);

$sql = "SELECT Id, Jour, Message FROM ma_table ORDER BY Id DESC";
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());

$nb_signature = mysql_num_rows($req);

if ($nb_signature == 0) {
	echo 'Aucune idée pour l\'instant.';
}
else {
	while ($data = mysql_fetch_array($req)) {
		sscanf($data['Jour'], "%4s-%2s-%2s", $jour, $mois, $annee);

		echo ' ' , $jour , ' / ' , $mois , ' / ' , $annee , '';
		echo '<br />';
		echo nl2br(htmlentities(trim($data['Message'])));
		echo '<br />';
		echo nl2br(htmlentities(trim($data['Id'])));
		echo '<br /><br /><hr width="80%" color="#CC6600"/><hr width="60%" color="#3333CC" />';
		echo '<br /><br />';
	}
}
// on libère l'espace mémoire alloué pour cette requête
mysql_free_result ($req);
// on ferme la connection à la base de données.
mysql_close ();

Modifié par ytzmi (19 Jul 2011 - 22:10)
a écrit :
hors, si je vais dans mon phpmyadmin pour voir la date, et bien, je n'ai pas de date, c'est du 0000 00 00, et donc, il est logique que la date ne s'affiche pas dans ma page.

ma question est pourquoi dans ma table sql, je n'ai pas de date.


Heuu... parce que ta requête d'insertion ne marche pas ...
Bonsoir à toutes et à tous,

le problème vient que le format date en MySql n'est pas une chaine de caractères. Le format date est un nombre entier commençant, si je me souviens bien, à la date du 01/01/1970. Donc lorsque vous calculez la différence entre deux dates, il vous donne un nombre de jours et cela à cause du fait que la date s'exprime en nombre de jour.

Donc en partant d'une date au format 'YYYY-MM-DD' sous forme d'une chaine de caractères, surtout si celle-ci a été saisie au clavier par l'instruction sscanf comme je l'ai vu ci-dessus, vous devez pour cela, en PHP, définir les variables suivantes :

$AA = substr($string_date, 0, 4);
$MM = substr($string_date, 5, 2);
$$JJ = substr($string_date, 8, 2);

puis ensuite créer la variable au format date :

$NewDate = date('Ymd', mktime(0, 0, 0, $MM, $JJ, $AA);

Et en principe, vous aurez le bon format de date !

http://php.net/manual/fr/function.mktime.php

@+
Modifié par Artemus24 (22 Jul 2011 - 20:00)
salutation ytzmi

Tu as un problème d'injection sql aussi dans les messages.

J\'ai vu ça sur un des messages à partir de tes captures, la première capture.
« J\'ai des slash devant les apostrophes simple ou double »

Si nécessaire seulement tu peux régler ça avec cette fonction


<?php
  # -- Fonction qui supprime l'effet des magic quotes
  function stripslashes_r($affiche) 
  {
    # -- Si la variable passée en argument est un array,
    # -- on appelle la fonction stripslashes_r dessus.
    if(is_array($affiche)) 
    {
        return array_map('stripslashes_r', $affiche);
    }
    # -- Sinon, un simple stripslashes suffit
    else 
    {
        return stripslashes($affiche);
    }
  }
  # -- Si les magic quotes sont activés, on les désactive avec notre super fonction 
  if(get_magic_quotes_gpc())
  {
     $_GET = stripslashes_r($_GET);
     $_POST = stripslashes_r($_POST);
     $_COOKIE = stripslashes_r($_COOKIE);
     $_REQUEST = stripslashes_r($_REQUEST);
  }
?>


Mais avant, voit si ce n'est pas pour une autre raison, si tu peut désactivé les magic_quotes. Le code si dessus enlève les problèmes d'injections sql, si nous n'avez pas accès à la configuration PHP de votre serveur.

..
Modifié par zardoz (21 Jul 2011 - 00:02)
bonjour à tous

merci pour vos messages

=> pour Artemus24, j'ai bien étudié ce que tu as écrit...
j'ai tenté de le mettre un peu de partout selon les messages d'erreur que je recevais... et à la fin, cela m'a mis une série de chiffre qui ne correspondait à aucune date.

mais, je sais pertinemment que j'en suis la seule fautive car je n'ai pas su l'insérer.

du coup, comme pour chaque problème que je rencontre, vu que la date n'est pas une nécessité absolue, j'ai décidé de ne pas la faire apparaître d'AUTANT PLUS qu'elle n'existe pas dans ma base sql, vu que la date reste à 0 en jour, mois, année.

=> Zardoz

j'ai inséré ton code, je suppose que je n'ai pas dû savoir le faire correctement car mes / persistent avant les apostrophes.

=> ytzmi, c'est moi,
je construis mes codes en allant de forum en forum, de php, phpfrance, siteduzero, et j'en passe et j'en oublie tellement j'en ai vu et lu.

c'est du copiage - collage, du kit en pièce et il est normal que cela ne peut fonctionner "logiquement" comme vous savez le faire.

je veux apprendre et comprendre mais je sens que je suis très limite inférieure à 0 car c'est un langage inconnue pour moi. Smiley ohwell
ytzmi a écrit :
j'ai inséré ton code, je suppose que je n'ai pas dû savoir le faire correctement car mes / persistent avant les apostrophes.


Un include suffit » include_once ('fonctions/injection.php'); C'est mieux même.

Par contre il serait bien que tu t'informe auprès de ton hébergeur en premier lieu. Et poser des questions. Si le magic_quotes est activé. Quelquefois oui, chez certains hébergeurs, pour conserver une compatibilité avec php4.

Si oui, tu devras trouvez un programme pour régler la situation. Dont celui que je t'ai offert (fonctionnel), très fiable même.

Sinon »

Un peu de lecture Manuel PHP : mysql_real_escape_string. <= Ça aussi c'est une possibilité pour protégé dès l'écriture du script de requête.

Une information ++ manuel PHP : injection sql. Et intéressant en plus.

..
Modifié par zardoz (22 Jul 2011 - 00:39)
Alors tu devras trouvez un script de désactivation. Pour ma part c'est la même chose sur servhome.org et le script ci-haut mentionné fait très bien le travail. Je n'ai plus d'injections sql depuis l'utilisation de ce script.

Essais le à nouveau si tu le désir : mais il est préférable d'inclure « include », le script en question. Et pour mieux t'assurer du bon fonctionnement, peut-être pourras-tu simuler un nouveau message.


include_once ('fonctions/injection.php');


Évidemment d'autres façons de faire est aussi possible.

Bonne chance Smiley cligne

..
Modifié par zardoz (22 Jul 2011 - 22:31)
Tu « include » sur les scripts d'insertions et non de sélections.
Les $_GET et les $_POST ( Variable Globale ) : en entrée vers la base.

Je voulais juste m'assurer que tu as bien compris le fonctionnement. Smiley cligne

..
Modifié par zardoz (23 Jul 2011 - 22:49)
j'ai tout compris !

youpi !

Ça marche... grâce à tes explications supplémentaires Smiley cligne

cela n'a rien à voir au sujet du départ, mais au moins, me voilà avec un souci en moins et une jolie page sans /

Grand MERCI Smiley biggrin
Modifié par ytzmi (24 Jul 2011 - 17:52)
C'est bien »
Tu pourras parfaire ta fonction. Si tu le désir.

Bonne chance.

PS : Je trouve important la question des injections sql, c'est disgrâcieux en affichage.

De plus les injections sql prendra des significations différentes : comme le piratage par exemple. Il n'y a pas de tort à s'instruire sur le sujet au Manuel PHP.

Et voilà c'est régler. Smiley cligne

..
Modifié par zardoz (24 Jul 2011 - 19:25)
je peux clore ce sujet.

pour la date, cela vient de ma structure dans ma base sql.

il faut que j'approfondisse car maintenant, j'arrive à avoir soit l'année, soit le jour.
si je pouvais avoir l'ensemble avec le mois, ce serait l'idéal.

merci à tous
Pourquoi tu postes pas la définition de ta table ? Tu aurais eu la réponse depuis longtemps (étonné que personne ne te l'ai demandé d'ailleurs).
Pages :