News box avec une image, un texte et un timing simples

Eléphant du PHP | 82 Messages

09 juin 2010, 14:41

Non, ça affiche dans le champ date de la table news : 0000-00-00 00:00:00

ViPHP
ViPHP | 5462 Messages

09 juin 2010, 14:43

Non, ça affiche dans le champ date de la table news : 0000-00-00 00:00:00
et quand tu inseres comment est ta requête sql ?

Eléphant du PHP | 82 Messages

09 juin 2010, 14:44

C'est-à-dire, le code ?

insert_news.php
<?php
ini_set('display_errors', 1);
ini_set('error_reporting', E_ALL | E_STRICT);
print_r($_FILES);
$chemin_destination = 'sites/all/images/';
$dossier = 'sites/all/images/';
$fichier = basename($_FILES['image_news']['name']);
$taille_maxi = 102400;
$taille = filesize($_FILES['image_news']['tmp_name']);
$extensions = array('.png', '.gif', '.jpg', '.jpeg');
$extension = strrchr($_FILES['image_news']['name'], '.');
if(!empty($_FILES))
{
$fichier = basename($_FILES['image_news']['name']);
$taille_maxi = 102400;
$taille = filesize($_FILES['image_news']['tmp_name']);
$extensions = array('.png', '.gif', '.jpg', '.jpeg');
$extension = strrchr($_FILES['image_news']['name'], '.');
}
//D&eacute;but des v&eacute;rifications de s&eacute;curit&eacute;...
if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
{
     $erreur = 'Vous devez uploader un fichier de type png, gif, jpg, ou jpeg';
}
if($taille>$taille_maxi)
{
     $erreur = '<br /><br />Le fichier est trop lourd<br /><br />';
}
if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
{
     //On formate le nom du fichier ici...
     $fichier = strtr($fichier, 
          'ÀÁÂÃÄÅÇ&egrave;&eacute;ÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåç&egrave;&eacute;êëìíîïðòóôõöùúûüýÿ', 
          'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
     $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
     if(move_uploaded_file($_FILES['image_news']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionn&eacute;
     {
          echo '<br /><br />Upload effectu&eacute; avec succ&egrave;s !<br /><br />';
     }
     else //Sinon (la fonction renvoie FALSE).
     {
          echo '<br /><br />&Eacute;chec de l\'upload !<br /><br />';
     }
}
else
{
     echo $erreur;
}

// on teste si le formulaire a &eacute;t&eacute; valid&eacute;
if (isset($_POST['go']) && $_POST['go']=='Poster la news') {
// on se connecte à notre base
$base = mysql_connect ('***', '***', '***');  
mysql_select_db('***', $base);  

// on teste la d&eacute;claration de nos variables
if (!isset($_POST['auteur']) || !isset($_POST['titre']) || !isset($_POST['texte_news'])) {
        $erreur = 'Les variables n&eacute;cessaires au script ne sont pas d&eacute;finies.';
}
else {
		
		if (empty($_POST['auteur']) || empty($_POST['titre']) || empty($_POST['texte_news'])) {
                $erreur = 'Au moins un des champs est vide.';
        }
		
        // si tout est bon, on peut commencer l'insertion dans la base
        else {
                // lancement de la requête d'insertion
                $sql = 'INSERT INTO news VALUES("", "'.mysql_escape_string($_POST['auteur']).'", "'.mysql_escape_string($_POST['titre']).'", "'.date("d-m-Y H:i:s").'", "'.mysql_escape_string($dossier . $fichier).'", "'.mysql_escape_string($_POST['texte_news']).'")';
                // on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die) 
                echo $sql;
				mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
                // on ferme la connexion à la base de donn&eacute;es
                mysql_close();
                /* on redirige vers la page d'accueil du site (attention, cette redirection ne fonctionne qui si vous avez plac&eacute; cette page dans un r&eacute;pertoire à partir de la racine du site). Si ce n'est pas le cas, veuillez entrer ici le bon chemin d'acc&egrave;s afin de retomber sur la page d'accueil du site. 
                header('Location: index.php'); */
                // on termine le script courant
                exit();
                }
        }
}

?>
<html>
<head>
<title>Insertion d'une nouvelle news</title>
</head>

<body>

<!-- on fait pointer le formulaire vers la page traitant les donn&eacute;es -->
<form method="post" action="insert_news.php" enctype="multipart/form-data">
	<table>
		<tr>
			<td>
				<span class="gras">Auteur :</span>
			</td>
			<td>
				<input type="text" name="auteur" maxlength="100" size="30" value="<?php if (isset($_POST['auteur'])) echo htmlentities(trim($_POST['auteur'])); ?>">
			</td>
		</tr>
		<tr>
			<td>
				<span class="gras">Titre :</span>
			</td>
			<td>
				<input type="text" name="titre" maxlength="100" size="100" value="<?php if (isset($_POST['titre'])) echo htmlentities(trim($_POST['titre'])); ?>">
			</td>
		</tr>
		<tr>
			<td>
				<span class="gras">Image</span>
				<input type="text" style="display:none" name="nbr_photo" value="0" id="nbr_photo" />
			</td>
			<td>
				<input type=hidden name=MAX_FILE_SIZE  value=102400>
				<input type="file" name="image_news" id="image_news" value="image_news" />
			</td>   
		</tr>
		<tr>
			<td>
				<span class="gras">News :</span>
			</td>
			<td>
				<textarea name="texte_news" cols="50" rows="10"><?php if (isset($_POST['texte_news'])) echo htmlentities(trim($_POST['texte_news'])); ?></textarea>
			</td>
		</tr>
		<tr>
			<td>
			<td align="right">
				<input type="submit" name="go" value="Poster la news">
			</td>
		</tr>
	</table>
</form>
<?php
// on affiche les erreurs &eacute;ventuelles  
if (isset($erreur)) echo '<br /><br />',$erreur;  
?>
</body>
</html>
Dont :
$sql = 'INSERT INTO news VALUES("", "'.mysql_escape_string($_POST['auteur']).'", "'.mysql_escape_string($_POST['titre']).'", "'.date("d-m-Y H:i:s").'", "'.mysql_escape_string($dossier . $fichier).'", "'.mysql_escape_string($_POST['texte_news']).'")';

ViPHP
ViPHP | 5462 Messages

09 juin 2010, 14:45

quand tu fais
echo $sql;
d'ailleur c'est pas le bon format de date

c'est AAAA-MM-JJ HH:MM:SS

et toi ta fais
JJ-MM-AAAA HH:MM:SS

Eléphant du PHP | 82 Messages

09 juin 2010, 14:51

Oui mais si je le veux dans l'ordre à la française c'est pas possible de faire comme ça ? (pendant ce temps j'essaie d'abord dans le format officiel puis avec le echo sql)

ViPHP
ViPHP | 5462 Messages

09 juin 2010, 14:53

Oui mais si je le veux dans l'ordre à la française c'est pas possible de faire comme ça ? (pendant ce temps j'essaie d'abord dans le format officiel puis avec le echo sql)
c'est après que ca se fais dans ta base c'est dans cette ordre, d'ailleur pas besion de t'emebete a faire la fonction php date dans ta requete, la fonction mysql NOW() suffis

Eléphant du PHP | 82 Messages

09 juin 2010, 14:56

C'est bon, en fait, il faut dans le formulaire relever l'heure en Y-m-d et dans l'affichage changer l'ordre... je répondais pour moi hein :mrgreen:

Merci encore en tout cas. Maintenant un dernier détail (important quand même :mrgreen: )
J'ai 2 fichiers dans un dossier auxquels je veux un mot de passe pour y accéder... il faut un .htaccess ? (parce qu'il y en a déjà un, sinon quoi rajouter ?)

ViPHP
ViPHP | 5462 Messages

09 juin 2010, 15:01

faut rajouter la date a tes fichier image aussi, en gros ton fichier s'appelle
$dossier . time() . $fichier

Eléphant du PHP | 82 Messages

09 juin 2010, 15:06

Ok merci, je viens de rajouter time().

Et juste un truc, comment enlever ça :

Array ( )
Notice: Undefined index: image_news in /homez.60/imediase/www/insert_news.php on line 7

Notice: Undefined index: image_news in /homez.60/imediase/www/insert_news.php on line 9

Notice: Undefined index: image_news in /homez.60/imediase/www/insert_news.php on line 11

les lignes 1 à 19 du fichier concerné :
<?php
ini_set('display_errors', 1);
ini_set('error_reporting', E_ALL | E_STRICT);
print_r($_FILES);
$chemin_destination = 'sites/all/images/';
$dossier = 'sites/all/images/';
$fichier = basename($_FILES['image_news']['name']);
$taille_maxi = 102400;
$taille = filesize($_FILES['image_news']['tmp_name']);
$extensions = array('.png', '.gif', '.jpg', '.jpeg');
$extension = strrchr($_FILES['image_news']['name'], '.');
if(!empty($_FILES))
{
$fichier = basename($_FILES['image_news']['name']);
$taille_maxi = 102400;
$taille = filesize($_FILES['image_news']['tmp_name']);
$extensions = array('.png', '.gif', '.jpg', '.jpeg');
$extension = strrchr($_FILES['image_news']['name'], '.');
}

ViPHP
ViPHP | 5462 Messages

09 juin 2010, 15:07

Je coupe cette affectation et je la colle au début ?
ouai :wink:

pour les erreurs qui aparaisse c'est normale pusique si tu n'upload rien (vu que t'affiche uniquement la page) que $_FILES['image_news']['name'] n'existe pas ainsi que le reste

va falloir plutot faire
if(!empty($_FILES))
{
$fichier = basename($_FILES['image_news']['name']);
$taille_maxi = 102400;
$taille = filesize($_FILES['image_news']['tmp_name']);
$extensions = array('.png', '.gif', '.jpg', '.jpeg');
$extension = strrchr($_FILES['image_news']['name'], '.');
}
:wink:

ViPHP
ViPHP | 5462 Messages

09 juin 2010, 15:08

Ok merci, je viens de rajouter time()
ta bien pensé a le faire au moment de l'upload et au moment de l'insertion j'espere

Eléphant du PHP | 82 Messages

09 juin 2010, 15:11

à ces deux endroits :
     if(move_uploaded_file($_FILES['image_news']['tmp_name'], $dossier . time() . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionn&eacute;
                $sql = 'INSERT INTO news VALUES("", "'.mysql_escape_string($_POST['auteur']).'", "'.mysql_escape_string($_POST['titre']).'", "'.date("Y-m-d H:i:s").'", "'.mysql_escape_string($dossier . time() . $fichier).'", "'.mysql_escape_string($_POST['texte_news']).'")';
C'est bon ?

Eléphant du PHP | 82 Messages

09 juin 2010, 15:13

Et voici les 25 premières lignes de mon code maintenant :
<?php
ini_set('display_errors', 1);
ini_set('error_reporting', E_ALL | E_STRICT);
print_r($_FILES);
$chemin_destination = 'sites/all/images/';
$dossier = 'sites/all/images/';
if(!empty($_FILES))
{
$fichier = basename($_FILES['image_news']['name']);
$taille_maxi = 102400;
$taille = filesize($_FILES['image_news']['tmp_name']);
$extensions = array('.png', '.gif', '.jpg', '.jpeg');
$extension = strrchr($_FILES['image_news']['name'], '.');
}
//D&eacute;but des v&eacute;rifications de s&eacute;curit&eacute;...
if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
{
     $erreur = 'Vous devez uploader un fichier de type png, gif, jpg, ou jpeg';
}
if($taille>$taille_maxi)
{
     $erreur = '<br /><br />Le fichier est trop lourd<br /><br />';
}
if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
{
Mais ça affiche maintenant :

Array ( )
Notice: Undefined variable: extension in /homez.60/imediase/www/insert_news.php on line 16

Notice: Undefined variable: extensions in /homez.60/imediase/www/insert_news.php on line 16

Warning: in_array() [function.in-array]: Wrong datatype for second argument in /homez.60/imediase/www/insert_news.php on line 16

Notice: Undefined variable: taille in /homez.60/imediase/www/insert_news.php on line 20

Notice: Undefined variable: taille_maxi in /homez.60/imediase/www/insert_news.php on line 20

ViPHP
ViPHP | 5462 Messages

09 juin 2010, 15:15

faut rajouté les autres block dedan...

Eléphant du PHP | 82 Messages

09 juin 2010, 15:27

OK, je viens de faire ça... on dirait que TOUT marche...

Me manque plus qu'à protéger deux fichiers... tu sais comment faire ?

Par exemple si on tente d'accéder à de ces deux fichiers, il faut insérer un mot de passe...