8791 sujets

Développement web côté serveur, CMS

salut a tous je fais une petite galerie administrable constituée de dix input file et de champs hidden pour pouvoir faire un upload de ma base j'ais donc regrouper mon $_post et $_file dans le meme tableau mais j'arrive pas a trier correctement les info pour mon upload dans la base pouvez vous me conseiller svp

voici le tableau:


Array ( [0] => 1863 [1] => 1862 [2] => 1860 [3] => 1861 [4] => 1853 [5] => 1854 [6] => 1855 [7] => 1856 [8] => 1857 [9] => 1858 [Send] => fait peter [pictures] => Array ( [name] => Array ( [0] => img1_slideBienEtre_forme_.jpg [1] => img1_slideChambresdHotes_nuits.jpg [2] => img1_slideHome_charme_.jpg [3] => img2_slideBienEtre_massages_.jpg [4] => img2_slideChambresdHotes_ptitDej_.jpg [5] => img2_slideHome_lumieres_.jpg [6] => img3_slideBienEtre_jacuzzi_.jpg [7] => img3_slideChambresdHotes_.jpg [8] => img3_slideHome_confort_.jpg [9] => img4_slideBienEtre_hammam_.jpg ) [type] => Array ( [0] => image/jpeg [1] => image/jpeg [2] => image/jpeg [3] => image/jpeg [4] => image/jpeg [5] => image/jpeg [6] => image/jpeg [7] => image/jpeg [8] => image/jpeg [9] => image/jpeg ) [tmp_name] => Array ( [0] => C:\wamp\tmp\phpBB82.tmp [1] => C:\wamp\tmp\phpBB83.tmp [2] => C:\wamp\tmp\phpBB84.tmp [3] => C:\wamp\tmp\phpBB85.tmp [4] => C:\wamp\tmp\phpBB86.tmp [5] => C:\wamp\tmp\phpBB87.tmp [6] => C:\wamp\tmp\phpBB88.tmp [7] => C:\wamp\tmp\phpBB89.tmp [8] => C:\wamp\tmp\phpBB8A.tmp [9] => C:\wamp\tmp\phpBB8B.tmp ) [error] => Array ( [0] => 0 [1] => 0 [2] => 0 [3] => 0 [4] => 0 [5] => 0 [6] => 0 [7] => 0 [8] => 0 [9] => 0 ) [size] => Array ( [0] => 87675 [1] => 66319 [2] => 123592 [3] => 64968 [4] => 100046 [5] => 100767 [6] => 123482 [7] => 103606 [8] => 43602 [9] => 96304 ) ) )

Modifié par leo2v (27 May 2012 - 20:08)
bon j'arrive pas à récupérer toute les valeurs quelqu’un peut il me dire comment je cible le nom de mes sous array pour pouvoir faire mon foreach as clef =>valeur svp car j'ai essayer plusieurs solutions mais ça me plante une erreure sur l'index du tableau Smiley bawling


if(isset($_POST['Send'])){
	$conte=$_POST;
   $image=$_FILES;
   array_push($image["pictures"],$conte);
   
   foreach ($image["pictures"]["error"] as $key => $error ) {
    if ($error == UPLOAD_ERR_OK) {

        $tmp_name = $image["pictures"]["tmp_name"][$key];
        $name[$key] = $image["pictures"]["name"][$key];
		$yop=$image["pictures"][0][$key];
		$photo=$name[$key];
	
        move_uploaded_file($tmp_name, "images/".$name[$key]);
		echo $photo.'<br/>' ;	
		
	}}

et il me plant ça
( ! ) Notice: Undefined offset: 0 in C:\wamp\www\siteabbaye\admin\multimageazi.php on line 172

Modifié par leo2v (28 May 2012 - 09:56)

$conte=$_POST;
$image=$_FILES;
array_push($image[&quot;pictures&quot;],$conte);


Tu te rends compte que ça sert à rien à part bouffer de la mémoire inutilement ?
oki mais comment recup mon $_post et mon $_file dans le même tableau pour pouvoir le distribuer dans la bbd en fin de mon foreach qui doit regroupé tout ce dont j'ais besoin...
le but est que ma table photo comprend un idposition que je ne peus pas recup autrement que par un champ caché l'id position correspond a l'id de l'index de la photo dans ma table
et dans les paramètre que me renvoie $_file il ne peu pas y figurer, de plus dans ma table j'ai une colonne idordre qui correspond a l'ordre d'affichage de mes photo dans un slideshow jquery encore une variable que je recup dans un champs caché et que je renvoie dans mon upload afin que toute les images mise a jour dans ma bdd remplacent celle qui doivent l'être
Donc au final je coince un peu.....
je post mon code ça paraîtra plus clair


<?php

$idgite="1";
	// on se connecte à la base de données
	if( $_SERVER['SERVER_NAME'] == '127.0.0.1' or $_SERVER['SERVER_NAME'] == 'localhost' )
	{
		$nom_du_serveur="127.0.0.1";    $nom_de_la_base="abbaye";    $nom_utilisateur="root";    $passe="";
		mysql_connect( $nom_du_serveur, $nom_utilisateur, $passe);
		mysql_select_db( $nom_de_la_base );
	}else{
		$nom_du_serveur="xxx";    $nom_utilisateur="xxx";    $nom_de_la_base="xxxx";    $passe="xxx";
		mysql_connect( $nom_du_serveur, $nom_utilisateur, $passe);
		mysql_select_db( $nom_de_la_base );
	}
 
mysql_connect("$nom_du_serveur","$nom_utilisateur","$passe");
mysql_select_db("$nom_de_la_base") or die('Impossible de s&eacute;lectionner une base de donn&eacute;e. Assurez vous d\'avoir correctement remplit les donn&eacute;es du fichier connexion_bd.php.');
mysql_query("SET NAMES UTF8");


$requeteSQL= mysql_query("SELECT * FROM photo WHERE idgite='".mysql_real_escape_string($idgite)."' ORDER BY photo.idordre ASC");
if(mysql_num_rows($requeteSQL) == 0)
{
echo '<p>Pas de gîte pour le moment!</p>';
}
//Si la table contient des trucs, on affiche les données
else {
echo'<form style="float:right;" action="" method="post" enctype="multipart/form-data">';
while($affiche = mysql_fetch_array($requeteSQL))
 { 
echo '<input id="'.$affiche['idordre'].'" class="file" type="file" name="pictures[]" onchange="readURL(this);"/><br/>
<span id="x">[X]</span>
<span id="previewPane'.$affiche['idordre'].'">
<img style="width:200px;" id="img_prev'.$affiche['idordre'].'" src="images/'.$affiche['photo'].'" alt="your image" />
<input type="hidden" name="'.$affiche['idordre'].'" value="'.$affiche['id'].'"> 
</span><br/>';
	 

 }
echo '<input type="submit" name="Send" value="fait peter"  /></form>';
 }

if(isset($_POST['Send'])){
	$conte=$_POST;
   $image=$_FILES;
   array_push($image["pictures"],$conte);
   
   foreach ($image["pictures"]["error"] as $key => $error ) {
    if ($error == UPLOAD_ERR_OK) {

        $tmp_name = $image["pictures"]["tmp_name"][$key];
        $name[$key] = $image["pictures"]["name"][$key];
		$yop=$image["pictures"][0][$key];
		$photo=$name[$key];
	
        move_uploaded_file($tmp_name, "images/".$name[$key]);
		echo $photo.'<br/>' ;	
	/*$requeteSQL= mysql_query("	UPDATE photo SET id='".mysql_real_escape_string($id)."' , idgite='".mysql_real_escape_string($idgite)."', photo ='".mysql_real_escape_string($photo)."', '".mysql_real_escape_string($idordre)."' WHERE  idgite='".mysql_real_escape_string($idgite)."'");*/			
	}}
	print_r($image);

    }
?>

Modifié par leo2v (28 May 2012 - 11:40)
j'ai bien tenter ça mais ça me sort tout en séparer et j'arrive pas a recup la val 1 de chaque array hhhhhhhhhhhhelp!!!!

		foreach( $image["pictures"] as $key => $value ) 
{ 
  echo $key . ': <br />'; 
   foreach( $value as $valeur ) 

    echo '  ' . $valeur . '<br />'; 
   

}
Je n'ai pas lu le code, il est trop moche, mais pour faire simple :

1 - Liste les tableaux que tu récupères, avec leur format.
2 - Crée un tableau (ou tout autre format de données) qui puisse accueillir les infos des tableaux que tu as récupéré en 1.
3 - Connaissant le format de ton tableau (2), tu peux faire un algorithme pour ne récupérer que les informations dont tu as besoin.

En gros ce qu'il faut faire, c'est réfléchir avant de coder, pas le contraire.
Zed13 a écrit :
Je n'ai pas lu le code, il est trop moche, mais pour faire simple :

1 - Liste les tableaux que tu récupères, avec leur format.
2 - Crée un tableau (ou tout autre format de données) qui puisse accueillir les infos des tableaux que tu as récupéré en 1.
3 - Connaissant le format de ton tableau (2), tu peux faire un algorithme pour ne récupérer que les informations dont tu as besoin.

En gros ce qu'il faut faire, c'est réfléchir avant de coder, pas le contraire.


merci pour ta remarque je l'accepte tel quel, j'essaye de faire de mon mieux car je n'ai aucune formation de codeur, c'est avant tout une passion.. Smiley biggrin ..
Donc comme je ne connais pas le resultat de tel ou tel fonction ou objet etc... il me faut les tester les une aprés les autres afin de voir comment il se comporte ou voir ce qu'il ou elle produisent et je peu te dire que :
Ce que certain de vous savent faire en 10 minute il me faut quelque fois trois jours pour le produire
je promet donc d’améliorer la lisibilités de mon code dans le futur Smiley cligne
Pour le moment j'explore les zzzzarray et je te remercie pour ton post sur le sujet du haut car j'ais enfin pu produire ce que je cherchais
par contre si quelqu’un m'aide a optimiser mon code avec des explications je suis preneur Smiley ravi


<?php

$idgite="1";
	// on se connecte à la base de données
	if( $_SERVER['SERVER_NAME'] == '127.0.0.1' or $_SERVER['SERVER_NAME'] == 'localhost' )
	{
		$nom_du_serveur="127.0.0.1";    $nom_de_la_base="abbaye";    $nom_utilisateur="root";    $passe="";
		mysql_connect( $nom_du_serveur, $nom_utilisateur, $passe);
		mysql_select_db( $nom_de_la_base );
	}else{
		$nom_du_serveur="xxxxxx";    $nom_utilisateur="xxxxxx";    $nom_de_la_base="xxxxxx";    $passe="xxxxxx";
		mysql_connect( $nom_du_serveur, $nom_utilisateur, $passe);
		mysql_select_db( $nom_de_la_base );
	}
 
mysql_connect("$nom_du_serveur","$nom_utilisateur","$passe");
mysql_select_db("$nom_de_la_base") or die('Impossible de s&eacute;lectionner une base de donn&eacute;e. Assurez vous d\'avoir correctement remplit les donn&eacute;es du fichier connexion_bd.php.');
mysql_query("SET NAMES UTF8");


$requeteSQL= mysql_query("SELECT * FROM photo WHERE idgite='".mysql_real_escape_string($idgite)."' ORDER BY photo.idordre ASC");
if(mysql_num_rows($requeteSQL) == 0)
{
echo '<p>Pas de gîte pour le moment!</p>';
}
//Si la table contient des trucs, on affiche les données
else {
echo'<form style="float:right;" action="" method="post" enctype="multipart/form-data">';
while($affiche = mysql_fetch_array($requeteSQL))
 { 
echo '<input id="'.$affiche['idordre'].'" class="file" type="file" name="pictures[]" onchange="readURL(this);"/><br/>
<span id="x">[X]</span>
<span id="previewPane'.$affiche['idordre'].'">
<img style="width:200px;" id="img_prev'.$affiche['idordre'].'" src="images/'.$affiche['photo'].'" alt="your image" />
<input type="hidden" name="'.$affiche['idordre'].'" value="'.$affiche['id'].'"/>

</span><br/>';
	 

 }
echo '<input type="submit" name="Send" value="fait peter"  /></form>';
 }

if(isset($_POST['Send'])){
//ceci contiend un array de description des tof poster par $_files avec tout size name temp_name etc
    $image=$_FILES;
//on nettoie la fin du $_POST[] poluer par send
    $conte=$_POST;
//verif
    print_r($conte);
    echo '<br/>';
$conte_prov = array_pop($conte);
//je file un nom a mon array
$tab["conteur"]= $conte;
print_r($conte);
echo '<br/>';
	
//la je balanceman mon array formater dans le array pre-formater du $_files
   array_push($image["pictures"],$tab);


//balenceman les tof dans le dossier image qui reçois les copies
   foreach ($image["pictures"]["error"] as $key => $error ) {
    if ($error == UPLOAD_ERR_OK) {

        $tmp_name = $image["pictures"]["tmp_name"][$key];
        $name[$key] = $image["pictures"]["name"][$key];
		$photo=$name[$key];
        move_uploaded_file($tmp_name, "images/".$name[$key]);
	}}
//petit script de Mr Zed13 afin de trier tout ce bronx
   $size = sizeof($image['pictures']['name']); 
//me retourne 10
echo $size;
echo '<br/>';	
	 for($i = 0; $i < $size ; $i++){
		      print_r( $image['pictures']['name'][$i] . '<br/> ');
		      print_r( $image['pictures']['type'][$i] . '<br/> ');
		      print_r( $image['pictures']['tmp_name'][$i] . '<br/> ');
		      print_r( $image['pictures']['error'][$i] . '<br/> ');
			  print_r( $image['pictures']['size'][$i] . '<br/> ');
			  print_r( $image['pictures']['0']['conteur'][$i] . '<br/> ');
			  print_r($i. '<br/> ');
		 }
	//reste plus qu'a uploader ce petit monde au bon endrois pfiuuuu!!!!
	/*$requeteSQL= mysql_query("	UPDATE photo SET id='".mysql_real_escape_string($id)."' , idgite='".mysql_real_escape_string($idgite)."', photo ='".mysql_real_escape_string($photo)."', '".mysql_real_escape_string($idordre)."' WHERE  idgite='".mysql_real_escape_string($idgite)."'");*/			
	
	print_r($image);
    }
?>

voila tout est op n'oubliez pas de renomer votre page dans le header en fin de requete sql
je vous file ma base en format sql que vous pouvez importer dans phpmyadmin a vous de changer le path des image et réinitialiser les id
il faudra aussi importer le jquery-1.4a2.min.js que je dois encore peaufiner
et bien entendu il faudra au prealable créer une page pour le premier insert des images
enjoy!!! merci à alsacréations forum et leur participants pour le coup de pouce

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Document sans titre</title>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script src="scripts/jquery-1.4a2.min.js"type="text/javascript"></script>

<script>



var blank="img/log_pas_image.png";
function readURL(input) {
	
	//alert(input.value);//donne le nom de la photo en cours d'upload
	
    if (input.files && input.files[0]) {
        var reader = new FileReader();

        reader.onload = function (e) {
			
				if(input.id==0){
            $('#img_prev0')
            .attr('src', e.target.result)
            .height(100);
				}
				else if(input.id==1)
				{
					
			$('#img_prev1')
            .attr('src', e.target.result)
            .height(100);
				}
			else if(input.id==2)
				{	
			$('#img_prev2')
            .attr('src', e.target.result)
            .height(100);		
					}
					else if(input.id==3)
				{	
			$('#img_prev3')
            .attr('src', e.target.result)
            .height(100);		
					}
					else if(input.id==4)
				{	
			$('#img_prev4')
            .attr('src', e.target.result)
            .height(100);		
					}
					else if(input.id==5)
				{	
			$('#img_prev5')
            .attr('src', e.target.result)
            .height(100);		
					}
					else if(input.id==6)
				{	
			$('#img_prev6')
            .attr('src', e.target.result)
            .height(100);		
					}
					else if(input.id==7)
				{	
			$('#img_prev7')
            .attr('src', e.target.result)
            .height(100);		
					}
					else if(input.id==8)
				{	
			$('#img_prev8')
            .attr('src', e.target.result)
            .height(100);		
					}
					else if(input.id==9)
				{	
			$('#img_prev9')
            .attr('src', e.target.result)
            .height(100);		
					}
        };

        reader.readAsDataURL(input.files[0]);
    }
    else {
      var img = input.value;
        $('#img_prev').attr('src',img).height(100);
    }
    $("#x").show().css("margin-right","10px");
}

$(document).ready(function() {
  $("#x").click(function() {
    $("#img_prev").attr("src",blank);
    $("#x").hide();  
  });
}); 


</script>

<!--[if IE]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<style>

article, aside, figure, footer, header, hgroup,
menu, nav, section { display: block; }
#x { display:none; position:relative; z-index:200; float:right}
#previewPane { display: inline-block; }
</style>
</head>
<body>
<?php

$idgite="1";
	// on se connecte à la base de données
	if( $_SERVER['SERVER_NAME'] == '127.0.0.1' or $_SERVER['SERVER_NAME'] == 'localhost' )
	{
		$nom_du_serveur="127.0.0.1";    $nom_de_la_base="abbaye";    $nom_utilisateur="root";    $passe="";
		mysql_connect( $nom_du_serveur, $nom_utilisateur, $passe);
		mysql_select_db( $nom_de_la_base );
	}else{
		$nom_du_serveur="xxxxx";    $nom_utilisateur="xxxx";    $nom_de_la_base="espelidoabbaye";    $passe="xxxxx";
		mysql_connect( $nom_du_serveur, $nom_utilisateur, $passe);
		mysql_select_db( $nom_de_la_base );
	}
 
mysql_connect("$nom_du_serveur","$nom_utilisateur","$passe");
mysql_select_db("$nom_de_la_base") or die('Impossible de s&eacute;lectionner une base de donn&eacute;e. Assurez vous d\'avoir correctement remplit les donn&eacute;es du fichier connexion_bd.php.');
mysql_query("SET NAMES UTF8");


$requeteSQL= mysql_query("SELECT * FROM photo WHERE idgite='".mysql_real_escape_string($idgite)."' ORDER BY photo.idordre ASC");
if(mysql_num_rows($requeteSQL) == 0)
{
echo '<p>Pas de gîte pour le moment!</p>';
}
//Si la table contient des trucs, on affiche les données
else {
echo'<form style="float:right;" action="" method="post" enctype="multipart/form-data">';
while($affiche = mysql_fetch_array($requeteSQL))
 { 
echo '<input id="'.$affiche['idordre'].'" class="file" type="file" name="pictures[]" onchange="readURL(this);"/><br/>
<span id="x">[X]</span>
<span id="previewPane'.$affiche['idordre'].'">
<img style="width:200px;" id="img_prev'.$affiche['idordre'].'" src="images/'.$affiche['photo'].'" alt="your image" />
<input type="hidden" name="'.$affiche['idordre'].'" value="'.$affiche['id'].'"/>

</span><br/>';
	 

 }
echo '<input type="submit" name="Send" value="fait peter"  /></form>';
 }

if(isset($_POST['Send'])){
	//on nettoie la fin du $_POST[ poluer par send
    $conte=$_POST;


$conte_prov = array_pop($conte);
$tab["conteur"]= $conte;
		print_r($conte);

echo '<br/>';
	
   $image=$_FILES;
   array_push($image["pictures"],$tab);



   foreach ($image["pictures"]["error"] as $key => $error ) {
    if ($error == UPLOAD_ERR_OK) {

        $tmp_name = $image["pictures"]["tmp_name"][$key];
        $name[$key] = $image["pictures"]["name"][$key];
		$photo=$name[$key];
		
		

        move_uploaded_file($tmp_name, "images/".$name[$key]);
	}}
   $size = sizeof($image['pictures']['name']); //me retourne 6
echo $size;
echo '<br/>';	
	 for($i = 0; $i < $size ; $i++){
		     // print_r( $image['pictures']['name'][$i] . '<br/> ');
			  $photos=$image['pictures']['name'][$i];
			  echo $photos. '<br/> ';
		    //  print_r( $image['pictures']['type'][$i] . '<br/> ');
		    //  print_r( $image['pictures']['tmp_name'][$i] . '<br/> ');
		    // print_r( $image['pictures']['error'][$i] . '<br/> ');
		    // print_r( $image['pictures']['size'][$i] . '<br/> ');
		    // print_r( $image['pictures']['0']['conteur'][$i] . '<br/> ');
			  $id=$image['pictures']['0']['conteur'][$i];
			  echo $id. '<br/> ';
		    // print_r($i. '<br/> ');
			$idordre=$i;
			
					// on enregistre les données
		$result = mysql_query(" UPDATE photo SET idgite='".mysql_real_escape_string($idgite)."',  photo='".mysql_real_escape_string($photos)."',  idordre='".mysql_real_escape_string($idordre)."' WHERE id = '".mysql_real_escape_string($id)."'");
 
		//Si il y a une erreur, on crie ^^
		if (!$result) {
			die('Requête invalide : ' . mysql_error());
		}
		else{
			//Si tout est ok, on informe le webmaster
			$message_ok = '<div class="erreur"><a name="ok"></a><b>Page modifi&eacute;e avec succ&egrave;s!</b></div>';
			header("Location:  multimageazi.php");
		}
	
		 }
	

    }
?>
</body>
</html>





la base

-- phpMyAdmin SQL Dump
-- version 3.4.5
--  http://www.phpmyadmin.net
 
--
-- Client: localhost
-- Généré le : Mar 29 Mai 2012 à 17:27
-- Version du serveur: 5.5.16
-- Version de PHP: 5.3.8

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- Base de données: `abbaye`
--

-- --------------------------------------------------------

--
-- Structure de la table `photo`
--

CREATE TABLE IF NOT EXISTS `photo` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `idgite` int(11) NOT NULL,
  `photo` varchar(100) NOT NULL,
  `idordre` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1864 ;

--
-- Contenu de la table `photo`
--

INSERT INTO `photo` (`id`, `idgite`, `photo`, `idordre`) VALUES
(1863, 1, 'slideHomeplaisir.jpg', 0),
(1862, 1, 'slideHome_loisirs.jpg', 1),
(1860, 1, 'slideHome_bien_etre.jpg', 2),
(1861, 1, 'slideHome_paysages.jpg', 3),
(1853, 1, 'slideBienEtre_hammam.jpg', 4),
(1854, 1, 'slideHome_confort.jpg', 5),
(1855, 1, 'lideChambresdHotes_Frais.jpg', 6),
(1856, 1, 'slideBienEtre_jacuzzi.jpg', 7),
(1857, 1, 'slideHome_lumieres.jpg', 8),
(1858, 1, 'slideChambresdHotes_ptitDej.jpg', 9);

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;