dolarol

Inscris le 25/02/2011 à 20:46
  • Signature
    dolarol
  • Nombre de sujets
    1
  • Nombre de messages
    5
  • Nombre de commentaires
    Aucun
  • Nombre de news
    Aucune
  • Niveau en PHP
    Débutant

Ses dernières news

Aucune news

Ses derniers sujets sur les forums

forum
dolarol
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:

<<?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() ) ;
?>
dolarol

Ses derniers messages sur les forums

forum
dolarol
Bonsoir moogli... merci pour tout!
Oui, pour les identifiants mot de passe tout ça c'est pas terrible! erreur de débutante... heureusement je m'en suis rendue compte rapidement et j'ai changé tout de suite mes mots de passe!
Sinon, j'ai finalement tout reprit par l'id et tout fonctionne à merveille... et surtout parce que j'ai fini par comprendre ce qui faisait que je ne récupérais pas l'id sur mon bouton mofidier alors que je le récupérais sur celui de supprimer...
Dès que j'ai mis ces 2 boutons dans 2 div différentes tout à fonctionné comme par magie!!
En fait c'est en supprimant mon code du bouton delete que j'ai vu que sans ça fonctionnait!
J'imagine qu'il y a eu conflit car ces 2 boutons étaient sur même ligne de tableau... enfin j'imagine... si tu as une explication plus concrète et technique je suis preneuse!
En tout cas merci pour ton aide :))
dolarol
dolarol
Alors finalement je n'ai pas utilisé la récupération de l'id mais plutôt de mon titre d'album. Car l'id de l'album ne sera pas celui de ma photo...
Mais comme à la création de l'album j'ai fait en sorte qu'il copie le champs du titre à la fois dans ma table photo et dans celle de l'album c'est le titre de l'album qui fait mon lien.

mais je me retrouve confrontée à un autre problème.
Je souhaiterais que, dans ma page d'album, lorsque l'utilisateur clic sur le bouton modifier de l'album en question il se trouve sur la page photo et puisse y voir l'ensemble des photos de cet album.
Seulement voilà, je n'obtient rien de tel!

Voilà le formulaire du bouton "modifier" :

<?php
//connexion à la base de données
define('DB_NAME', '');
define('DB_USER', '');
define('DB_PASSWORD', '');
define('DB_HOST', '');
$link = mysql_connect( DB_HOST , DB_USER , DB_PASSWORD );
mysql_select_db( DB_NAME , $link );
mysql_query("SET NAMES UTF8");

// récupération des photos dans le bon ordre

$result = mysql_query( 'SELECT album_photo.id, album_photo.titre_album FROM album_photo ORDER BY album_photo.position ASC' , $link );
while( $photo = mysql_fetch_assoc( $result ))
{
?>

</div>
<li id="photo_<?php echo $photo['id'] ?>">
<div align="center">
<?php echo $photo['titre_album'] ?>

<TABLE BORDER="0">
<CAPTION></CAPTION>
<TR>
<TH><form method="post" action="supress.php?id='.$data['id'].'"/>
<input type="hidden" name="id" value="<?php echo $photo['id'] ?>" />
<input type="submit" name="del_img" class="delete" value="" />
</form> </TH>
<TH> <form action="admin_photo.php" method="post" />
<input type="hidden" name="titre_album" value="<?php echo $photo['titre_album'] ?>" />
<input type="submit" name="modi_album" class="modif" value="" />
</form> </TH>
</TR>
</TABLE>
</td>
</li>
<div align="center">
<?php


et voilà dans ma page photo le code :
<?php
//connexion à la base de données
define('DB_NAME', '*****');
define('DB_USER', '*****');
define('DB_PASSWORD', '*****');
define('DB_HOST', '*****');
$link = mysql_connect( DB_HOST , DB_USER , DB_PASSWORD );
mysql_select_db( DB_NAME , $link );
mysql_query("SET NAMES UTF8");
$Vtitre_album=$_POST['titre_album'];

// récupération des photos dans le bon ordre
$result = mysql_query( 'SELECT * FROM images WHERE titre_album="$Vtitre_album ORDER BY position ASC' , $link );
while( $photo = mysql_fetch_assoc( $result ))
{
?>

</div>
<li id="photo _<?php echo $photo['titre_photo'] ?>">
<div align="center"><?php echo $photo['titre_album'] ?>
<img src="../<?php echo $photo['photo_mini'] ?>"

<TABLE BORDER="0">
<CAPTION></CAPTION>
<TR>
<TH><form method="post" action="supress.php?id='.$data['id'].'"/>
<input type="hidden" name="id" value="<?php echo $photo['id'] ?>" />
<input type="submit" name="del_img" class="delete" value="" />
</form> </TH>
<TH> <form action="admin_photo.php" method="post" />
<input type="hidden" name="titre_album" value="<?php echo $photo['titre_album'] ?>" />
<input type="submit" name="modi_album" class="modif" value="" />
</form> </TH>
</TR>
</TABLE>

</td>
</li>
<div align="center">
<?php


Lorsque dans ma requête j'écris :

'SELECT * FROM images WHERE titre_album="$Vtitre_album ORDER BY position ASC'
il ne m'affiche rien sur ma page tandis que lorsque j'écris :
'SELECT * FROM images  ORDER BY position ASC'
mes images s'affichent bien, mais du coup j'ai toutes mes images qui s'affichent et non pas celles seulement de l'album que je souhaite modifier...
Si vous avez des pistes pour me guider vers la bonne solution je suis preneuse... une nuit blanche et toujours pas de vrai résulat :(

Modo : j'ai viré tes accès au sgbd pour éviter l'utilisation frauduleuse je te conseil fortement de changer le mot de passe ;)
dolarol

Ses derniers commentaires de news

Aucun commentaire de news

Ses derniers commentaires de sites

Aucun commentaire de sites

Ses derniers commentaires de wall

Aucun commentaire wall
LoadingChargement en cours