Page 1 sur 1

concision de script

Posté : 12 sept. 2005, 10:19
par munich_
Bonjour,
Je viens de faire les tutoriaux de phpdébutant, pour construire une page d'ajout d'enregistrement dans une table. Je n'arrive pas a joindre ces deux scripts, le premier copie la photo dans le dossier images/news/ et le deuxième envoie les élèments (titre, corps...) dans la base de données.
Pouvez-vous m'aider.... En fait j'ai fait un formulaire de saisie avec des champs de texte dont celui du nom de la photo et celui du fichier photo (alors que j'aimerai ne faire qu'un champ et que le nom de la photo soit automatiquement celui du fichier que j'ai choisi).

Merci d'avance

Note : pour l'instant ça fonctionne mais ça me copie deux enregistrements dans ma base, et j'aimerais simplifier le code.

<?php

session_start();

if(isset($_FILES['photo']))
{
  // params
  unset($erreur);
  $extensions_ok = array('png', 'gif', 'jpg', 'jpeg');
  $taille_max = 100000;
  $dest_dossier = '../images/news/';
  // vérifications
  if( !in_array( substr(strrchr($_FILES['photo']['name'], '.'), 1), $extensions_ok ) )
  {
    $erreur = 'Veuillez sélectionner un fichier de type png, gif ou jpg !';  
  }
  elseif( file_exists($_FILES['photo']['tmp_name']) 
          and filesize($_FILES['photo']['tmp_name']) > $taille_max)
  {
    $erreur = 'Votre fichier doit faire moins de 500Ko !';
  }
  // copie du fichier
  if(!isset($erreur))
  {
    $dest_fichier = basename($_FILES['photo']['name']);
    // formatage nom fichier
    // enlever les accents
    $dest_fichier = strtr($dest_fichier, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
    // remplacer les caracteres autres que lettres, chiffres et point par _
    $dest_fichier = preg_replace('/([^.a-z0-1]+)/i', '_', $dest_fichier);
    // copie du fichier
    move_uploaded_file($_FILES['photo']['tmp_name'], $dest_dossier . $dest_fichier);
  }
}

?>
deuxième script qui envoie l'enregistrement dans la base
<?php

if(isset($_POST['titre']))     	$titre=$_POST['titre'];   			else	$titre="";
if(isset($_POST['date']))         	$date=$_POST['date'];        		else 	$date="";
if(isset($_POST['corps']))      	$corps=$_POST['corps'];    			else 	$corps="";
if(isset($_POST['lien']))        	$lien=$_POST['lien'];         		else 	$lien="";
if(isset($_POST['photo'])) 		$photo=$_POST['photo'];  			else 	$photo="";
	
	{
	
	$db = mysql_connect('localhost', 'root', '')  or die('Erreur de connexion '.mysql_error());
	
	// sélection de la base  
    mysql_select_db('toaster',$db)  or die('Erreur de selection '.mysql_error());
    
    // on écrit la requête sql
    $sql = "INSERT INTO news(titre, date, corps, photo, lien) VALUES('$titre','$date','$corps','$photo','$lien')";
    
    // on insère les informations du formulaire dans la table
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

    // on affiche le résultat pour le visiteur
    echo 'Vos infos on été ajoutées.';

    mysql_close();  // on ferme la connexion
	}
?> 

Posté : 16 sept. 2005, 17:12
par heddicmi
Salut !

A quoi servent tes accolades dans le 2ème scripts ? Et comment est-il appellé ?

Posté : 16 sept. 2005, 20:02
par Cyrano
Tiens, le second script revu et corrigé : en principe, ça ne doit faire qu'un seul enregistrement sous réserve qu'il ne manque aucune donnée.
<?php
/* Récupération des données du formulaire */
$titre = (isset($_POST['titre'])) ? $_POST['titre'] : "";
$date  = (isset($_POST['date']))  ? $_POST['date']  : "";
$corps = (isset($_POST['corps'])) ? $_POST['corps'] : "";
$lien  = (isset($_POST['lien']))  ? $_POST['lien']  : "";
$photo = (isset($_POST['photo'])) ? $_POST['photo'] : "";
/* Vérification de la validité des données (pas de champ vide) */
if($titre != "" && $date !="" && $corps != "" && $lien != "" && $photo != "")
{
    $db = mysql_connect('localhost', 'root', '')  or die('Erreur de connexion '.mysql_error());

    // sélection de la base
    mysql_select_db('toaster',$db)  or die('Erreur de selection '.mysql_error());

    // on écrit la requête sql
    $sql = "INSERT INTO news(titre, date, corps, photo, lien) VALUES('". $titre ."', '". $date ."', '". $corps ."', '". $photo ."', '". $lien ."')";

    // on insère les informations du formulaire dans la table
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

    // on affiche le résultat pour le visiteur
    echo("<p>Vos infos on été ajoutées.</p>\n");

    mysql_close();  // on ferme la connexion
}
?>
Rien n'empèche en outre d'y ajouter un else dans le cas où justement les informations seraient incomplètes.