Désolé, je pensais être clair. Je reprend donc en simplifiant pour ne traiter qu'un problème. J'ai d'ailleurs continué à chercher hier soir et ai conclus que le script appelé n'est pas exécuté:
Je simplifie en oubliant 5 minutes l'utilisation de la base de données:
L'appel du scipt par:
echo "<img src = \"script_affiche.php\">";
ne provoque pas l’exécution de ce dernier, mais l'affichage d'une page avec un petit carré (firefox ou internet explorer même combat !):
Si je fais un clic droit et choisi l'option afficher l'image" du menu contextuel, le script est exécuté et l'image affichée !
Voici le script, pour l'affichage d'une image stockée sur disque:
<?php
//$genre=_GET('genre');
//truc=$_GET('truc');
//header('content-type:image/jpg');
//echo $truc;
echo "<img src = \"a11.jpg\">";
?>
Il n'y a pas d'erreur php (j'en veux pour preuve qu'en introduisant une erreur dans le script d'affichage, le comportement est le même, avec affichage de l'erreur php
APRES le clic droit !
Pourquoi ce comportement ? Je ne comprend pas.
J'espère que cette fois-ci c'est clair,bien que long.
Merci d'avance
J'ai pas mal d'expérience en programmation, mais pas en php (pascal et delphi). Il y a quelque chose qui m'échappe. Je procède toujours en découpant les gros problèmes en plus petits et en général ça va.
Voici les scripts complets quand même , pour info. Je me suis inspiré de choses trouvées sur le net (merci à ceux qui ont mis ces infos en ligne):
Le premier permet d’enregistrer les données d'un formulaire dans deux tables. Seule la partie image est pour le moment écrite (et fonctionne, le champ blob est bien rempli. Au final, il est censé afficher les données écrites, pour contrôle:
(la partie affichage de l'image de la base de données est en commentaire pour ne garder que ce qui est décrit ci dessus)
<?php
function transfert($connexion)
{
$ret=false;
$img_blob='';
$img_taille=0;
$img_type='';
$img_nom='';
$taille_max=250000;
$ret=is_uploaded_file($_FILES['fic']['tmp_name']) ;
if(!$ret)
{
echo "Problème de tranfert" ;
}
else {
// fichier bien reçu
$img_taille=$_FILES['fic']['size'];
$img_nom=$_FILES['fic']['name'];
$img_type=$_FILES['fic']['type'];
// echo "fichier : ".$_FILES['fic']['tmp_name'];
// echo "<br>";
// echo "taille : ".$_FILES['fic']['size'];
// echo "<br>";
// Vérification de la taille maximale du fichier:
$requete = "select * from les_collec where id_les_collec = ".$_POST['D2'];
// echo $requete;
// echo "<br>";
$resultat_taille = mysqli_query($connexion,$requete) or die("Impossible de récupérer la taille maximale autorisée des fichiers");
// $nblignes = mysqli_num_rows($resultat_taille); Inutile car il ne peut y avoir qu'un enregistrement
$ligne= mysqli_fetch_row($resultat_taille);
$taille_max= $ligne[2];
// echo $taille_max;
// echo "<br>";
if($img_taille>$taille_max) {
echo "Image trop grosse";
// echo "<br>";
}
else {
// Récupération du fichier:
$img_blob=file_get_contents($_FILES['fic']['tmp_name']);
// Enregistrement de l'image dans la table
$req = "INSERT INTO images (".
"img_nom, img_taille, img_type, img_blob ".
") VALUES (".
"'".$img_nom."', ".
"'".$img_taille."', ".
"'".$img_type."', "."'".addslashes($img_blob)."') ";
//echo $req;
$resultat = mysqli_query($connexion,$req) or die("Impossible de stocker l'image du registre");
// echo "<br>";
// affichage, pour test
$req = "SELECT * FROM images ORDER BY img_id DESC LIMIT 0, 1";
// echo $req;
// echo "<br>";
$resultat = mysqli_query($connexion,$req) or die ('récupération image impossible');
$ligne= mysqli_fetch_row($resultat);
$req = "select * from images where img_id = ".$ligne[0];
//echo $req;
//echo "<br>";
$resultat = mysqli_query($connexion,$req) or die ('récupération image impossible');
$ligne= mysqli_fetch_row($resultat);
if(isset($ligne[0]))
{
// création page HTML_
//echo' <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">';
//echo"<html>";
//echo"<head>";
//echo '<meta http-equiv="Content-Language" content="fr">';
//echo'<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">';
//echo"<title>Création entrée du registre</title>";
//echo "</head>";
//echo"<body>";
//echo "0 ".$ligne[0]."<BR>";
//echo "1 ".$ligne[1]."<BR>";
//echo "2 ".$ligne[2]."<BR>";
//echo "3 ".$ligne[3]." Header<BR>";
//echo "4 ".$ligne[4]//." IMAGE <BR><BR>";
//header("content-type:".$ligne[3]);
$truc=$ligne[4];
//echo $truc;
//echo"<img src = \"script_affiche.php?genre='.$ligne[3];'&truc='.$ligne[4];'./>";
//echo "<img src = \"a11.jpg\">";
echo "<img src = \"script_affiche.php\">";
//echo'<img src = \"script_affiche.php?truc='.$truc.' \">';
// echo $ligne[0];
}
// Récupération de l'index de l'image
// Enregistrement dans le registre
}
// echo "<br>";
}
}
// Petit script pour afficher les paramètres transmis par un formulaire
//foreach($_POST as $champ => $valeur )
// {
// echo "$champ = $valeur <br>";
//}
// Connexion à la base de données:
$hote = "localhost";
$utilisateur = "root";
$passw = "root";
$nombase = "collections";
$connexion = mysqli_connect($hote,$utilisateur,$passw,$nombase)
or die("Connexion );impossible à la base de données collections");
if(isset($_FILES['fic']))
{
transfert($connexion);
}
else{
echo "ça ne passe pas";
}
echo"</body>";
Désolé, je pensais être clair. Je reprend donc en simplifiant pour ne traiter qu'un problème. J'ai d'ailleurs continué à chercher hier soir et ai conclus que le script appelé n'est pas exécuté:
Je simplifie en oubliant 5 minutes l'utilisation de la base de données:
L'appel du scipt par:
[color=#004080]echo "<img src = \"script_affiche.php\">";[/color]
ne provoque pas l’exécution de ce dernier, mais l'affichage d'une page avec un petit carré (firefox ou internet explorer même combat !):
Si je fais un clic droit et choisi l'option afficher l'image" du menu contextuel, le script est exécuté et l'image affichée !
Voici le script, pour l'affichage d'une image stockée sur disque:
[php]<?php
//$genre=_GET('genre');
//truc=$_GET('truc');
//header('content-type:image/jpg');
//echo $truc;
echo "<img src = \"a11.jpg\">";
?>[/php]
Il n'y a pas d'erreur php (j'en veux pour preuve qu'en introduisant une erreur dans le script d'affichage, le comportement est le même, avec affichage de l'erreur php [color=#004080]APRES[/color] le clic droit !
Pourquoi ce comportement ? Je ne comprend pas.
J'espère que cette fois-ci c'est clair,bien que long.
Merci d'avance
J'ai pas mal d'expérience en programmation, mais pas en php (pascal et delphi). Il y a quelque chose qui m'échappe. Je procède toujours en découpant les gros problèmes en plus petits et en général ça va.
Voici les scripts complets quand même , pour info. Je me suis inspiré de choses trouvées sur le net (merci à ceux qui ont mis ces infos en ligne):
Le premier permet d’enregistrer les données d'un formulaire dans deux tables. Seule la partie image est pour le moment écrite (et fonctionne, le champ blob est bien rempli. Au final, il est censé afficher les données écrites, pour contrôle:
(la partie affichage de l'image de la base de données est en commentaire pour ne garder que ce qui est décrit ci dessus)
[php]<?php
function transfert($connexion)
{
$ret=false;
$img_blob='';
$img_taille=0;
$img_type='';
$img_nom='';
$taille_max=250000;
$ret=is_uploaded_file($_FILES['fic']['tmp_name']) ;
if(!$ret)
{
echo "Problème de tranfert" ;
}
else {
// fichier bien reçu
$img_taille=$_FILES['fic']['size'];
$img_nom=$_FILES['fic']['name'];
$img_type=$_FILES['fic']['type'];
// echo "fichier : ".$_FILES['fic']['tmp_name'];
// echo "<br>";
// echo "taille : ".$_FILES['fic']['size'];
// echo "<br>";
// Vérification de la taille maximale du fichier:
$requete = "select * from les_collec where id_les_collec = ".$_POST['D2'];
// echo $requete;
// echo "<br>";
$resultat_taille = mysqli_query($connexion,$requete) or die("Impossible de récupérer la taille maximale autorisée des fichiers");
// $nblignes = mysqli_num_rows($resultat_taille); Inutile car il ne peut y avoir qu'un enregistrement
$ligne= mysqli_fetch_row($resultat_taille);
$taille_max= $ligne[2];
// echo $taille_max;
// echo "<br>";
if($img_taille>$taille_max) {
echo "Image trop grosse";
// echo "<br>";
}
else {
// Récupération du fichier:
$img_blob=file_get_contents($_FILES['fic']['tmp_name']);
// Enregistrement de l'image dans la table
$req = "INSERT INTO images (".
"img_nom, img_taille, img_type, img_blob ".
") VALUES (".
"'".$img_nom."', ".
"'".$img_taille."', ".
"'".$img_type."', "."'".addslashes($img_blob)."') ";
//echo $req;
$resultat = mysqli_query($connexion,$req) or die("Impossible de stocker l'image du registre");
// echo "<br>";
// affichage, pour test
$req = "SELECT * FROM images ORDER BY img_id DESC LIMIT 0, 1";
// echo $req;
// echo "<br>";
$resultat = mysqli_query($connexion,$req) or die ('récupération image impossible');
$ligne= mysqli_fetch_row($resultat);
$req = "select * from images where img_id = ".$ligne[0];
//echo $req;
//echo "<br>";
$resultat = mysqli_query($connexion,$req) or die ('récupération image impossible');
$ligne= mysqli_fetch_row($resultat);
if(isset($ligne[0]))
{
// création page HTML_
//echo' <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">';
//echo"<html>";
//echo"<head>";
//echo '<meta http-equiv="Content-Language" content="fr">';
//echo'<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">';
//echo"<title>Création entrée du registre</title>";
//echo "</head>";
//echo"<body>";
//echo "0 ".$ligne[0]."<BR>";
//echo "1 ".$ligne[1]."<BR>";
//echo "2 ".$ligne[2]."<BR>";
//echo "3 ".$ligne[3]." Header<BR>";
//echo "4 ".$ligne[4]//." IMAGE <BR><BR>";
//header("content-type:".$ligne[3]);
$truc=$ligne[4];
//echo $truc;
//echo"<img src = \"script_affiche.php?genre='.$ligne[3];'&truc='.$ligne[4];'./>";
//echo "<img src = \"a11.jpg\">";
echo "<img src = \"script_affiche.php\">";
//echo'<img src = \"script_affiche.php?truc='.$truc.' \">';
// echo $ligne[0];
}
// Récupération de l'index de l'image
// Enregistrement dans le registre
}
// echo "<br>";
}
}
// Petit script pour afficher les paramètres transmis par un formulaire
//foreach($_POST as $champ => $valeur )
// {
// echo "$champ = $valeur <br>";
//}
// Connexion à la base de données:
$hote = "localhost";
$utilisateur = "root";
$passw = "root";
$nombase = "collections";
$connexion = mysqli_connect($hote,$utilisateur,$passw,$nombase)
or die("Connexion );impossible à la base de données collections");
if(isset($_FILES['fic']))
{
transfert($connexion);
}
else{
echo "ça ne passe pas";
}
echo"</body>"; [/php]