Inssertions d'images hors bases de données

Fermé
Roulieuh - Modifié par Roulieuh le 30/05/2010 à 13:56
thunder413 Messages postés 167 Date d'inscription jeudi 21 mai 2009 Statut Membre Dernière intervention 16 novembre 2012 - 7 juin 2010 à 13:51
Bonjour,
je suis en train de réaliser un projet informatique pour mon école. Je suis débutante totalement dans le monde PHP myadmin et je ne trouves pas de réponse assez explicite à mon problème. En fait j'ai une base de donnée d'élève avec Non prénom, classe ... Et j'aimerais rajouter à chacun leur photo pour que quand dans le programme php je fasse l'appelle des données la photo apparaisse. Quand je rentre les identifiants d'un des élèves, son nom prénom classe apparait bien, mais pas la photo... J'ai vu que le plus simple pour ne pas surcharger la base de donnée est de mettre un lien vers l'image mais je ne sais pas du tout comment faire, pour l'instant j'ai créé en plus de nom classe, et les iD propre à l'élevé, image en varchar (255) et j'ai mis ./images/DUMASg.jpg comme valeur pour mon premier élève. DUMASg.jpg étant le nom de la photo que j'ai stocké dans un dossier images sur filezila. J'ai mis un

<p id="ficheEleve"> <?php echo ($donnees[0]." ".$donnees[1]); ?> <br/>
<?php echo $donnees[2]; ?> <br/> <br/>
<img src="<? echo $donnees["image"]; ?>" alt="DUMASg" />

Modules : </p>

Comme code, mais sur ma page internet plus rien ne s'affiche à par les entêtes et autres de fond.. Je pense ne pas avoir réellement saisie ce qu'il fallait faire.. Un petit coup de main serait la bienvenu :)
Merci d'avance.
A voir également:

15 réponses

Subshadow Messages postés 8 Date d'inscription dimanche 30 mai 2010 Statut Membre Dernière intervention 30 mai 2010
30 mai 2010 à 14:46
Salut,

Ta technique est pas mauvaise. Je te conseil d'enregistrer la photo de l'élève en lui mettant comme nom l'id de l'élève, ce qui donnera part exemple 1.jpg pour le premier élève de la BDD.

Ensuite pour générer cette photo, tu doit juste faire un <img src="./images/<?php echo $donnees["idEleve"].".jpg"; ?>" />

Bonne chance ;)
0
thunder413 Messages postés 167 Date d'inscription jeudi 21 mai 2009 Statut Membre Dernière intervention 16 novembre 2012 23
30 mai 2010 à 14:48
salut,
il se peut que ta requete ne s'est pas bien executer tu peut essayer de mettre
mysql_query("ta requete")or die(mysql_error()) sinon si c'est deja fait poste la partie executant la requete ensuite on vera
CORDIALEMENT
0
Merci d'avoir répondu aussi rapidement, mais ça ne fonctionne toujours pas. J'ai fait ceci :

mysql_connect($host, $user, $passwd) or die("erreur de connexion au serveur");
mysql_select_db($bdd) or die("erreur de connexion a la base de donnees");
$fiche = mysql_query("SELECT ETUDIANT.NOM, ETUDIANT.PRENOM, GROUPE_TP.NOM FROM CLASSE JOIN GROUPE_TD ON CLASSE.ID_CLASSE = GROUPE_TD.ID_CLASSE JOIN GROUPE_TP ON GROUPE_TP.ID_TD = GROUPE_TD.ID_TD JOIN ETUDIANT ON ETUDIANT.ID_TP = GROUPE_TP.ID_TP WHERE ID_ETUDIANT ='".$_SESSION['identifiant']."'");
$donnees = mysql_fetch_row($fiche);
?>

<p id="ficheEleve"> <?php echo ($donnees[0]." ".$donnees[1]); ?> <br/>
<?php echo $donnees[2]; ?> <br/> <br/>
<img src="./images/<?php echo $donnees["idETUDIANT"].".jpg"; ?>" />

Modules : </p>

Tout s'affiche de nouveau, mais toujours pas l'image...
0
C'est bon ça marche sans problèmes :D Merci beaucoup! Par contre j'aurais une autre question, voila sur le site que je créais j'ai besoin de récupérer l'heure donc je prends celle du serveur qui est cadré sur Berlin (j'ai vérifié). Le seul hic, c'est qu'il ne prend pas en compte l'heure d'été... Avez vous une idée de comment je pourrais faire automatiquement le changement? J'ai lu beaucoup de choses, mais il y a surtout de la doc sur NTP et si j'ai bien compris ça permet de régler l'heure d'une machine pas un serveur...
Merci d'avance
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
thunder413 Messages postés 167 Date d'inscription jeudi 21 mai 2009 Statut Membre Dernière intervention 16 novembre 2012 23
2 juin 2010 à 14:02
tu peut essayer gmdate() ceci
<?php
$timestamp = time()+date("Z");
echo gmdate("Y/m/d H:i:s",$timestamp);
?>
<code>
date("Z") retourne le décalage horaire et gmdate similaire a date sauf quel retourne le temps en GMT
ou regarde du cote de <code>date_default_timezone_set('Europe/Paris');
0
J'ai déjà essayé avec date_default_timezone_set('Europe/Paris'); ça ne prend pas en compte l'heure d'été!

Par contre j'ai testé l'autre solution et je pense ne pas trop avoir compris son fonctionnement parce que ça ne fait pas ce que ça devrait faire.. Soit j'ai la même heure (donc il manque toujours 1H..) Soit ça m'enlève carrément 2h..

Je fais des tests encore.. C'est pas concluant pour l'instant! J'ai trouvé un code permettant de regarder dans quel interval de dâte on est, il suffirait de l'adapter en rajouter un plus 1 à l'heure dans la période d'heure d'été, mais il y a surement plus simple...

voici le code que j'ai trouvé :

<?php
/**
* Checks wether a date is between an interval
*
* Usage:
*
* // check if today is older than 2008/12/31
* var_dump(currentDayIsInInterval('2008/12/31'));
* // check if today is younger than 2008/12/31
* var_dump(currentDayIsInInterval(null,'2008/12/31'));
* // check if today is between 2008/12/01 and 2008/12/31
* var_dump(currentDayIsInInterval('2008/12/01','2008/12/31'));
*
* Will trigger errors if date is in wrong format, notices if $begin > $end
*
* @param string $begin Date string as YYYY/mm/dd
* @param string $end Date string as YYYY/mm/dd
* @return bool
*/
function currentDayIsInInterval($begin = '',$end = '')
{
$preg_exp = '"[0-9][0-9][0-9][0-9]/[0-9][0-9]/[0-9][0-9]"';
$preg_error = 'Wrong parameter passed to function '.__FUNCTION__.' : Invalide date
format. Please use YYYY/mm/dd.';
$interval_error = 'First parameter in '.__FUNCTION__.' should be smaller than
second.';
if(empty($begin))
{
$begin = 0;
}
else
{
if(preg_match($preg_exp,$begin))
{
$begin = (int)str_replace('/','',$begin);
}
else
{
trigger_error($preg_error,E_USER_ERROR);
}
}
if(empty($end))
{
$end = 99999999;
}
else
{
if(preg_match($preg_exp,$end))
{
$end = (int)str_replace('/','',$end);
}
else
{
trigger_error($preg_error,E_USER_ERROR);
}
}
if($end < $begin)
{
trigger_error($interval_error,E_USER_WARNING);
}
$time = time();
$now = (int)(date('Y',$time).date('m',$time).date('j',$time));
if($now > $end or $now < $begin)
{
return false;
}
return true;
}
?>


Si une autre idée te viens elle est la bienvenue :)

Miicii
0
thunder413 Messages postés 167 Date d'inscription jeudi 21 mai 2009 Statut Membre Dernière intervention 16 novembre 2012 23
3 juin 2010 à 10:33
bonjour voila plus simple mais tu doit disposer d'au moins de php 5.1
<?php
$date = new DateTime("now"); // 'now' n'est pas nécéssaire, c'est la valeur par défaut
echo $date->format(DateTime::ISO8601).'<br>'; //l'heure du fuseau horraire actuel

$tz = new DateTimeZone('Europe/Paris');//on passe sur paris
$date->setTimezone($tz);//on definit le zone paris
//si ceci ne marche pas decommente cette ligne $date->modify("+2 hour");
echo $date->format("d/m/y H:i"); // 2008-05-27T14:30:46-0400

?>
0
Sinon j'ai essayé comme cela dans un premier temps afin de juste rajouter 1h instantanément, mais cela ne fonctionne pas non plus.. :

<?php
function sql_date_shift($date, $shift)
{
return date("d-m-Y H:i:s" , strtotime($shift, strtotime($date)));
}


$date = date("d-m-Y");
$shift "+1 hours";

echo sql_date_shift($date, $shift);

?>
0
thunder413 Messages postés 167 Date d'inscription jeudi 21 mai 2009 Statut Membre Dernière intervention 16 novembre 2012 23
3 juin 2010 à 10:39
ta essayé la solution que j'ai poster en haut
0
Dsl, entre temps je n'avais pas vu le post... Je vais tester ça tout de suite! Merci
0
ça ne fonctionne pas non plus... Je ne dois pas avoir php 5.1, rien ne s'affiche.. :(
0
thunder413 Messages postés 167 Date d'inscription jeudi 21 mai 2009 Statut Membre Dernière intervention 16 novembre 2012 23
3 juin 2010 à 11:25
tape dans une page.php phpinfo(); pour savoir quel version de php tu as
sinon tu peut decommenter la ligne que j'ai preciser dans la code
0
Je ne suis pas sûr que ça soit ça, il y a des milliards d'infos! J'ai : X-Powered-By PHP/5.3.2
0
thunder413 Messages postés 167 Date d'inscription jeudi 21 mai 2009 Statut Membre Dernière intervention 16 novembre 2012 23
3 juin 2010 à 11:39
donc tu dispose bien de la version 5.32 de même que la mienne et pourtant j'ai tester le code suivant et sa marche a tu tester le code a part sans l'intégrer pour voir
0
Je viens de le faire.. Il n'y a toujours rien qui s'affiche.. Que je mette le +2 ou non.. :( C'est pas logique si ça marche chez toi ^^
0
thunder413 Messages postés 167 Date d'inscription jeudi 21 mai 2009 Statut Membre Dernière intervention 16 novembre 2012 23
3 juin 2010 à 11:51
en tous cas c'est pas logique moi avec ca
<?php
$date = new DateTime("now"); // 'now' n'est pas nécéssaire, c'est la valeur par défaut
echo $date->format(DateTime::ISO8601).'<br>'; //l'heure du fuseau horraire actuel

$tz = new DateTimeZone('Europe/Paris');//on passe sur paris
$date->setTimezone($tz);//on definit le zone paris
$date->modify("+2 hour");
echo $date->format("d/m/y H:i"); // 2008-05-27T14:30:46-0400
?>

j'ai ca
2010-06-03T09:49:26+0200
03/06/10 11:49
0
thunder413 Messages postés 167 Date d'inscription jeudi 21 mai 2009 Statut Membre Dernière intervention 16 novembre 2012 23
Modifié par thunder413 le 3/06/2010 à 12:07
sinon il se peut que la version php5 n'est pas activer tu peut creer un fichier .htaccess et tu y met AddHandler x-httpd-php5 .php
AddType application/x-httpd-php5 .php

tu doit mettre le fichier .htaccess a la racine de ton site
0
ça ne lui plait pas du tout... Il refuse mes accès du coup ^^
0
thunder413 Messages postés 167 Date d'inscription jeudi 21 mai 2009 Statut Membre Dernière intervention 16 novembre 2012 23
3 juin 2010 à 12:39
donc laisse tomber la soluce .htacces renome ton fichier .php en .php5 normalement ca devrai aller
0
Denouveau moi XD

Ben ça ne marche toujours pas.. Dsl pour le temps de réponse, mais j'ai dû m'occuper d'un autre projet en meca... Bref j'ai essayé un autre code :

<?php
$france=1;

function dimanche($date)

while (date("D", $date ) !='Sun')
{
$date = mktime(0,0,0,date("m",$date), date("d",$date)-1, date("Y",$date));
}
return $date;
}

function ete($decalage)
{
$debut = dimanche(mktime(0,0,0,03,31,date("Y"))); // 31-03-$annee
$fin = dimanche(mktime(0,0,0,10,31,date("Y"))); // 31-10-$annee

if (time()>=mktime(2+$decalage,0,0,date("m",$debut), date("d",$debut), date("Y",$debut)))
{
if (time()<mktime(3+$decalage,0,0,date("m",$fin), date("d",$fin), date("Y",$fin)))
{
$decalage+=1;
}
}

return $decalage;
}

$france=ete($france);


echo "Il est ";
echo gmdate("H:i", time() + $france*3600);
echo " en France";
?>

Il devrait marché et pourtant, ... il me dit qu'il veut un date_default_timezone_set(''); or quand je lui mets apparemment le code n'est absolument pas pris en compte...
Une idée?
0
thunder413 Messages postés 167 Date d'inscription jeudi 21 mai 2009 Statut Membre Dernière intervention 16 novembre 2012 23
6 juin 2010 à 02:59
salut,

j'ai tester et ca marche ton problème venait que tu forcer ton script a afficher la date GMT avec gmdate() alors que tu doit seulement utiliser date();

Note: quelque soit le timestamp passer a gmdate() celle-ci retourne toujours la date/heure GMT par apport a celui-ci

j'espere que c'est résolu :)

CORDIALEMENT
0
Effectivement ça fonctionne, l'heure s'affiche mais cette fois ci avec un décalage horaire de 2h au lieu de 1.. ça n'en finis plus.. XD

Merci en tout les cas pour la patience et tes réponses :)
0
Je pense d'ailleurs savoir pourquoi ^^
Le fuseau horaire avec la version PH5.1 prend en compte le décalage d'été si j'ai bien compris ce que j'ai lu.. Au final pas besoin de mettre tout ce code, mais juste :
<?php
date_default_timezone_set('Europe/Paris');
$france=1;
echo "Il est ";
echo date("H:i", time() + $france*3600);
echo " en France";
?>
0
thunder413 Messages postés 167 Date d'inscription jeudi 21 mai 2009 Statut Membre Dernière intervention 16 novembre 2012 23
7 juin 2010 à 03:14
date_default_timezone_set('Europe/Paris'); //été la solution depuis le depart mais t' avais dit que ca marchais pas avec toi c'est pourca qu'on a penser a reinventé la roue :)
donc ta nouvelle soluce sa marche avec toi ?
0
Oui mais à condition de mettre le fuseau horaire avec $france sinon ça ne marche pas ^^ :)
La soutenance du projet a été fait ce matin et ça c'est très bien passé :D
Merci beaucoup pour ton aide!!
0
thunder413 Messages postés 167 Date d'inscription jeudi 21 mai 2009 Statut Membre Dernière intervention 16 novembre 2012 23
7 juin 2010 à 13:51
felicitation donc et bonne continuation
0