Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/07/2011, 11h44   #1
Candidat au titre de Membre du Club
 
Inscription : décembre 2010
Messages : 45
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 45
Points : 12
Points : 12
Par défaut PDO input - boucle mysql Update

Bonjour,
suite à un upload, je souhaiterai mettre en place un système permettant d'ajouter un Titre à l'upload.

Précision : Upload multiple

Donc mon code de récupération après l'upload :


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 
<?php
try
{
	//connexion BDD
	$bdd = connexpdo ('phototheque','myparam');
 
	//Requete préparé pour trouver l'ID département
	$donnees=$bdd->prepare("SELECT IdImg,fichier,titre,commentaire,session,IdPS
				FROM image WHERE session = ? ORDER BY IdImg");
	$donnees->execute(array($rand));
	while ($images = $donnees->fetch(PDO::FETCH_OBJ)) {
 
		// Cette méthode de récupération récupérer tous dans $image
		// Pour extraire ce que l'on souhaite il suffit de l'appeler
		// $image -> IdImg par exemple qui est le champs IdImg
 
	?>	
	<tr>
	<td style="padding-left: 20px; padding-right: 20px;">
 
	Titre : <input type="text" name="<?php echo "titre_" . $images->IdImg ?>" value=""><br />
	</td>
 
	<td style="padding: 20px;"><div align="center"><img src="../photographies/<?php echo $IdPS; ?>/mini/mini_<?php echo $images->fichier; ?>" alt="image" /></div></td></tr>
	<?php	} ?>
	<tr><td colspan="2"><input type="submit" value="Modifier les informations" /></td></tr>
	<?php	} 
catch(Exception $e)
	{
		die('Erreur : '.$e->getMessage()); //En cas d'erreur précédemment, on affiche un message et on arrête tout
	}
Après avoir cliquer sur le bouton dans le fichier


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
<?php
	// Appel de la fonction de connexion à la BDD	
	include_once("../config/connexpdo.inc.php");
	// Appel de la fonction Majuscule et accent	
	include("../fonction/mise_majuscule.php");
 
	$bdd = connexpdo ('phototheque','myparam');
 
	foreach($_POST as $cle => $valeur){
		$IdImg = preg_match('#titre#','',$cle);
 
		$titre = addslashes($_POST['titre_'.$IdImg]);
 
 
		$requete = $bdd->exec("UPDATE image SET session='', titre='$titre' WHERE IdImg='$IdImg'"); 
 
 
 
		}
?>
Ma table "image" :
IdImg
fichier
titre
commentaire
session
IdPS


test code source pour vérifier le si l'Id est affiché :

Code :
1
2
3
4
 
<td style="padding-left: 20px; padding-right: 20px;">
	Titre : <input type="text" name="titre_88" maxlength="50" value=""><br />
</td>

Je n'arrive pas à récupérer l'Id de la photo et ainsi avoir un uploader titre unique par Image.
Avec ce code il me retourne :
Notice: Undefined index: titre_0 in C:\Bouh Studio\wamp\www\phototheque\formulaire\img-update.php on line 12

Merci à tous
bouuuh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2011, 11h59   #2
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 656
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 656
Points : 5 359
Points : 5 359
Attention dans ton tableau $_POST il n'y a pas que tes input titre. Il y a au moins aussi le bouton submit qui donc ne va correspondre à ta regex...

Autre point : preg_match renvoie le nombre de solution trouvée (Cela peut aller de 0 = pas de solution à un 1 car preg_match() s'arrête dès qu'elle a trouvé une première solution.) et non pas ce que renvoie le pattern.

Pourquoi ne pas utiliser un tableau d'input ?
Code :
<input type="text" name="<?php echo 'titre[' . $images->IdImg.']' ?>" value="">
qui sera accessible par un array :
Code :
1
2
3
4
5
6
7
8
if (isset($_POST['titre'])){
	foreach($_POST['titre'] as $IdImg => $valeur){
		$titre = addslashes($valeur);
 
		$requete = $bdd->exec("UPDATE image SET session='', titre='$titre' WHERE IdImg='$IdImg'"); 
 
	}
}
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 20/07/2011, 12h06   #3
Candidat au titre de Membre du Club
 
Inscription : décembre 2010
Messages : 45
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 45
Points : 12
Points : 12
Tu as raison,
le preg_match ne devrais pas etre utiliser ici. J'ai fait une erreur :

Sans rechanger tous le code j'ai modifier par :

$IdImg = str_replace('titre_','',$cle);


Ainsi je récupére bien l'Id


Merci beaucoup
bouuuh est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h39.


 
 
 
 
Partenaires

Hébergement Web