le 26/02/2011 à 19:25
Problème Mysql /PHP Bdd ...help pour une débutante
Bonjour à tous,
Je vous écris car je suis une grande débutante en php/mysql. Je m'y suis mise il y a une semaine... Mon but est de faire une galerie de photo administrable. J'en suis à la partie admin et je bloque...
Voilà, je suis à la création d'un album. L'utilisateur doit remplir un champs texte pour donner le titre de l'album et envoyer une photo (qui se copiera sur le serveur automatiquement ainsi que sa miniature générée) par un bouton "envoyer" il valide sa requête.
J'ai réussi à faire en sorte qu'il y ai bien une création de ligne supplémentaire dans ma table avec le nom de l'album dedans, et aussi une autre création de ligne dans ma table "images" avec le champs "id" qui est le même que l'id de la première ligne crée.
Je ne sais pas si je suis très clair...
en gros, j'ai 2 tables :
album_photo (qui a 3 champs) :
-id(key auto-incr)
-position key order
-titre_album
images (qui a 6 champs) :
-id_image(key auto-incr)
-id (le même id de l'album qui vient d'être créé)
-position
-photo_mini
photo_grand
-titre_photo
En résumé au moment de la création de ma ligne dans la table "album_photo" je voudrais qu'il me remplisse les champs "photo_mini" et "photo-grand"
Pour info, les photos se copient parfaitement sur le serveur en normal et en miniature. La ligne se créé bien dans la table images mais les champs photo_mini et photo_grand sont vides...
Je vous envoie le code en espérant vraiment que quelqu'un pourra m'aider... j'ai lu plein de forums essayé mille choses toute la journée mais je pense que mon niveau débutant me limite...
Alors un petit coup de main serait adorable :))
code sur mon index:
Je vous écris car je suis une grande débutante en php/mysql. Je m'y suis mise il y a une semaine... Mon but est de faire une galerie de photo administrable. J'en suis à la partie admin et je bloque...
Voilà, je suis à la création d'un album. L'utilisateur doit remplir un champs texte pour donner le titre de l'album et envoyer une photo (qui se copiera sur le serveur automatiquement ainsi que sa miniature générée) par un bouton "envoyer" il valide sa requête.
J'ai réussi à faire en sorte qu'il y ai bien une création de ligne supplémentaire dans ma table avec le nom de l'album dedans, et aussi une autre création de ligne dans ma table "images" avec le champs "id" qui est le même que l'id de la première ligne crée.
Je ne sais pas si je suis très clair...
en gros, j'ai 2 tables :
album_photo (qui a 3 champs) :
-id(key auto-incr)
-position key order
-titre_album
images (qui a 6 champs) :
-id_image(key auto-incr)
-id (le même id de l'album qui vient d'être créé)
-position
-photo_mini
photo_grand
-titre_photo
En résumé au moment de la création de ma ligne dans la table "album_photo" je voudrais qu'il me remplisse les champs "photo_mini" et "photo-grand"
Pour info, les photos se copient parfaitement sur le serveur en normal et en miniature. La ligne se créé bien dans la table images mais les champs photo_mini et photo_grand sont vides...
Je vous envoie le code en espérant vraiment que quelqu'un pourra m'aider... j'ai lu plein de forums essayé mille choses toute la journée mais je pense que mon niveau débutant me limite...
Alors un petit coup de main serait adorable :))
code sur mon index:
<<?php
// Taille maximum du fichier
$MAX_FILE_SIZE = 8000000;
// Dossier de destination du fichier
$folder = "Photos/";
// Tableau array des différents types
$allowed_types = array("image/bmp", "image/gif", "image/pjpeg", "image/jpeg", "image/jpg", "multipart/x-zip", "video/msvideo");
// Variables récupérées par methode POST du formulaire
$fname = $HTTP_POST_FILES['fichier']['name'];
$ftype = $HTTP_POST_FILES['fichier']['type'];
$fsize = $HTTP_POST_FILES['fichier']['size'];
$ftmp = $HTTP_POST_FILES['fichier']['tmp_name'];
// Divers tests afin de savoir si le format de fichier correspond à notre tableau array
if(!in_array($ftype, $allowed_types)){$error = 1;}
// La taille du fichier n'est pas dépassée
if($fsize > $MAX_FILE_SIZE){$error = 2;}
// Le fichier n'existe pas déjà
if(file_exists($folder."m_".$fname)){$error = 3;}
// Si tout va bien
if(copy($ftmp,''.$folder.''.$fname.'')) {$error = 0;}
// Switch pour la gestion des erreurs
switch($error){
case'0':
echo("Fichier correctement envoyé.");
break;
case'1':
echo("Format de fichier incorrecte.");
break;
case'2':
echo("Fichier trop volumineux.");
break;
case'3':
echo("Fichier déjà existant.");
break;
}
// Variables de connexion à la base
$host = "";
$user = "";
$password = "";
$database = "";
// Connexion à la base
mysql_connect($host,$user,$password);
mysql_select_db("$database");
$Vfichier="$folder$fname";
$Vtitre_album = $_POST["titre_album"];
$Vtitre_album = isset($_POST["titre_album"]) ? mysql_real_escape_string(stripslashes($_POST['titre_album'])) : '';
$Vtitre_album=nl2br($Vtitre_album);
mysql_query("SET NAMES UTF8");
$ok = mysql_db_query($database,"insert into album_photo (titre_album) values ('$Vtitre_album')");
// on teste si les variables du formulaire sont bien déclarées
if(isset($_POST['titre_album'])) {
// on prépare la requête pour récupérer le numero du propriétaire
$sql = 'SELECT id FROM album_photo WHERE titre_album = "'.$_POST['titre_album'].'"';
// 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)
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
// on récupère le résultat sous forme d'un tableau
$data = mysql_fetch_array($req);
// on libère l'espace mémoire alloué pour cette interrogation de la base
mysql_free_result ($req);
// on insère le tuple (mysql_query) et au cas où, on écrira un petit message d'erreur si la requête ne se passe pas bien (or die)
$sql = 'INSERT INTO images (id) VALUES("'.$data['id'].'")';
// on insère le tuple (mysql_query) et au cas où, on écrira un petit message d'erreur si la requête ne se passe pas bien (or die)
mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());
echo '';
}
else {
echo '';
}
$idd=$data['id'];
$folder_min = "Photos/Miniatures/";
$fichier_nom = "$fname";
$path_mini="$folder_min$fname";
mysql_query("SET NAMES UTF8");
$ok5 = "UPDATE images SET photo_mini='$path_mini' photo_grand='$Vfichier' WHERE id='$idd";
$reqq =mysql_query($ok5, $database) or die( mysql_error() ) ;
?>