8721 sujets

Développement web côté serveur, CMS

Bonjour,

J'essaie de créer un formulaire pour modifier des info dans un base de donné.

Sur l'une de mes page j'indique des info se rapportant à un "prostaff" d'un côté et des l'autre côté il y a des photos en lien au dit "prostaff". Quand je clique sur l'image cela m'amène à un formulaire pour modifier les infos de la photo cliqué. Normalement les info de la photo apparaissent dans le formulaire.

Et c'est là que ce situe mon problème. Peu importe la photo cliqué, ce sont toujours les infos de la dernière photo de la liste qui apparait dans le formulaire et donc je ne peu modifier les info de cette photo uniquement...

Page d'origine:
<?php
$prostaff = $_GET['prostaff'];

include('../config.php');
$requete = mysql_connect($dbhost,$dbuser,$dbpasswd) or die(mysql_error());
$requete = mysql_select_db($dbname) or die(mysql_error());
mysql_query("SET NAMES 'utf8'");
?>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Détail <?php echo $prostaff; ?></title>
<link href="/CSS/prostaff-info.css" rel="stylesheet" type="text/css" />
</head>

<body>
<h1><?php echo $prostaff; ?></h1>
<table>
	<tbody>
        <tr>
            <td>
            <?php
            if($requete = mysql_query("SELECT * FROM prostaff_details WHERE prostaff='$prostaff'") or die("23"/*mysql_error()*/)){
                while($info = mysql_fetch_array($requete)){
                    $equipe = explode('|', $info['equipe']);
                    $ville = $info['ville'];
                    $province = $info['province'];
                    $pays = $info['pays'];
                    $web = $info['web'];
                    $blog = $info['blog'];
                    $mail = $info['mail'];
                    $facebook = $info['facebook'];
                    $youtube = $info['youtube'];
                    $vimeo = $info['vimeo'];
                    $twitter = $info['twitter'];
					
                    if(!empty($equipe)){
                        echo '<p>';
                        for($i = 0; $i < count($equipe); $i++){
                            echo $equipe[$i].'<br>';
                        }
                    }
                ?>
                </p>
                <p><strong>
                <?php
                    if(!empty($ville)){
                        echo $ville.', '.$province.', ';
                    }
                    elseif(!empty($province)){
                        echo $province.', ';
                    }
                    echo $pays;?></strong></p>
            
                <p>
                  <?php 
                    if(!empty($mail)){
                        echo $mail.'<br>';
                    }
                    if(!empty($web)){
                        echo $web.'<br>';
                    } 
                    if(!empty($blog)){
                        echo $blog.'<br>';
                    }
                ?>
                  <br>
                  <?php
                    if(!empty($facebook)){
                        echo '<img src="/interface/images/facebook.png" alt="Facebook" width="30" height="30" class="network"/> '.$facebook.'<br>';
                    }
                    if(!empty($youtube)){
                        echo '<img src="/interface/images/youtube.png" alt="Youtube" width="30" height="30" class="network"/> '.$youtube.'<br>';
                    }
                    if(!empty($vimeo)){
                        echo '<img src="/interface/images/Vimeo.png" alt="Vimeo" width="30" height="30" class="network"/> '.$vimeo.'<br>';
                    }
                    if(!empty($twitter)){
                        echo '<img src="/interface/images/twitter.png" width="30" height="30" alt="Twitter" class="network"/> '.$twitter.'<br>';
                    }
                }
            }
    ?>
            </td>
            <td class="photo">
                <ul>
                <?php
                if($requete = mysql_query("SELECT * FROM prostaff_galerie WHERE prostaff='$prostaff'") or die("89"/*mysql_error()*/)){
                    while($info = mysql_fetch_array($requete)){
						$id = $info['id'];
                    ?>
                    <li>
                    	<a href="#" onclick="javascript:open_modifGalerie();" title="<?php echo $info['title']; ?>">
                            <img src="/Images/Partenaires/<?php echo $info['thumbs']; ?>" alt="<?php echo $info['title']; ?>" width="75" height="75" />
                        </a>
                 </li>
                    <?php
                    }
                }
                ?>
                </ul>
            </td>
        </tr>
        <tr>
        	<td><a href="#" onclick="javascript:open_details();">Ajouter/modifier des détails</a></td>
            <td class="photo"><a href="#" onclick="javascript:open_galerie();">Ajouter des photos</a></td>
        </tr>
    </tbody>
</table>
<a href="#" onclick="javascript:parent.opener.location.reload();self.close('details');" class="retour">Retourner à la liste des Prostaff</a>


<script type="text/javascript">
	function open_galerie(){
		window.open('prostaff_galerie_ajout.php?prostaff=<?php echo $prostaff; ?>','Ajouter une photo','menubar=no, scrollbars=yes, width=500, height=700');
	}
	function open_details(){
		window.open('prostaff_details_modif.php?prostaff=<?php echo $prostaff; ?>','Modifier les info','menubar=no, scrollbars=yes, width=500, height=700');
	}
	function open_modifGalerie(){
		window.open('prostaff_galerie_modif.php?id=<?php echo $id; ?>','Modifier la photo','menubar=no, scrollbars=yes, width=600, height=700');
	}
</script>
</body>
</html>


Formulaire de modification
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Modifier</title>
</head>

<body>
<script type="text/javascript">
function verif(){
	element=document.forms['form'].element['lien'];
	if(element.value==""){
		alert("Vous devez entrer un nom de lien avant d'enregistrer!");
		return false;
	}
	element=document.forms['form'].element['thumbs'];
	if(element.value==""){
		alert("Vous devez entrer un nom de thumbnail avant d'enregistrer!");
		return false;
	}
	element=document.forms['form'].element['title'];
	if(element.value==""){
		alert("Vous devez entrer un titre de fichier avant d'enregistrer!");
		return false;
	}
}
</script>
<?php
$id = $_GET['id'];

include('../config.php');
$requete = mysql_connect($dbhost,$dbuser,$dbpasswd) or die(mysql_error());
$requete = mysql_select_db($dbname) or die(mysql_error());
mysql_query("SET NAMES 'utf8'");

if (empty($_POST['enregistrer'])){
	if($requete = mysql_query("SELECT * FROM prostaff_galerie WHERE id='$id'") or die("37"/*mysql_error()*/)){
		while($modif = mysql_fetch_array($requete)){
			$pro = $modif['prostaff'];
			$link = $modif['lien'];
			$thumbnail = $modif['thumbs'];
			$titre = $modif['title'];
		}
	}
	?>
<form action="prostaff_galerie_modif.php?id=<?php echo $id;?>" method="post" name="form" id="form" onsubmit="return verif()">
	<table width="500" border="0" cellspacing="0" cellpadding="0">
    	<tr>
        	<th height="53" colspan="2" scope="col"><h1><legend>Modifier une image</legend></h1></th>
		</tr>
        <tr>
        	<td height="31" align="right" valign="top" scope="col"><label for="prostaff">Prostaff :&nbsp;</label></td>
			<td valign="top" scope="col"><select name="prostaff" id="prostaff">
            	<option selected="selected" value="<?php echo $pro; ?>"><?php echo $pro; ?></option>
                <option value="Prostaff">--------</option>
                <?php
                $select = mysql_query('SELECT * FROM prostaff_details') or die("57"/*mysql_error()*/);
				while ($data = mysql_fetch_array($select)){
					if (!empty($data['prostaff'])){
                    ?>
                  <option value="<?php echo $data['prostaff'] ?>"><?php echo $data['prostaff'] ?></option>
                  <?php
					}
				}
              ?>
                </select></td>
		</tr>
		<tr>
			<td height="31" align="right" valign="top" scope="col"><label for="lien">Lien :&nbsp;</label></td>
			<td valign="top" scope="col"><input type="text" name="lien" id="lien" size="60" value="<?php echo $link; ?>"></td>
		</tr>
		<tr>
			<td height="31" align="right" valign="top" scope="col"><label for="thumbs">Thumbs :&nbsp;</label></td>
			<td valign="top" scope="col"><input type="text" name="thumbs" id="thumbs" size="60" value="<?php echo $thumbnail; ?>"></td>
		</tr>
		<tr>
			<td height="31" align="right" valign="top" scope="col"><label for="title">Titre :&nbsp;</label></td>
			<td valign="top" scope="col"><input type="text" name="title" id="title" size="30" value="<?php echo $titre; ?>"></td>
		</tr>
		<tr>
			<td width="36%" height="31" valign="top" scope="col">&nbsp;</td>
			<td width="64%" valign="top" scope="col"><input name="enregistrer" type="submit" value="Enregistrer" /></td>
		</tr>
	</table>
</form>
<br>
<br>
<a href="#" onclick="javascript:parent.opener.location.reload();self.close('modifier');">Annuler la modification</a>
<?php
}
else{
	$prostaff = $_POST['prostaff'];
	$lien = $_POST['lien'];
	$thumbs = $_POST['thumbs'];
	$title = $_POST['title'];
	
	if($requete = mysql_query("UPDATE prostaff_galerie SET prostaff='$prostaff',lien='$lien',thumbs='$thumbs',title='$title' WHERE id='$id'") or die(mysql_error())){
		echo "La galerie de ".$prostaff." a été modifié avec succès.";
		?>

		<br /><br /><a href="#" onclick="javascript:parent.opener.location.reload();self.close('modifier');">Retourner au détails de <?php echo $prostaff; ?></a>

		<?php
	}
}
?>
</body>
</html>
Modérateur
Salut,

J'ai lu en Z ton code et c'est normal ton souci :

while(....){
....
<a href="#" onclick="javascript:open_modifGalerie();" title="<?php echo $info['title']; ?>">
....
}
....
function open_modifGalerie(){
		window.open('prostaff_galerie_modif.php?id=<?php echo $id; ?>','Modifier la photo','menubar=no, scrollbars=yes, width=600, height=700');
	}
....

;)

Au passage, le window.open est selon moi une mauvaise pratique. Toujours rester dans la même fenêtre. Donc fait une petite lignbox avec une requête Ajax Smiley cligne
Modifié par niuxe (27 Nov 2012 - 21:22)
Désolé mais je ne vois pas l'erreur...


Et pour les window.open, je sais. Mais il s'agit ici d'un panneau de gestion utilisé à l'interne seulement, je préfère travailler ainsi, j'y vois plus claire. Peut-être que je changerais éventuellement, mais pour l'instant ça va rester comme ça.
Modérateur
Je me répond à moi même.

Si tu veux faire quelque chose de pas mal :

<a href="la-page-destination.php?id=<?php echo $id; ?>" title="<?php echo $info['title']; ?>">


En JS, tu récupères l'id suivant l'attribut href :
natif :

window.onload = function(){
	var 	gridview = document.getElementById('gridview'),
		ancreModif = gridview.getElementsByTagsName('a');
		
	for(var index = 0; index < ancreModif.length;index++){
		ancreModif[index].onclick = function(){
			var 	href = this.href,
				paramId = 'id=',
				lenParamId = paramId.length;
				posId = href.indexOf(paramId),
				idPhoto = href.substr(posId + lenParamId);
			//etc.
			
		}
	}	
}

Modifié par niuxe (27 Nov 2012 - 21:34)
Modérateur
Pour ton erreur,

1. l'initialisation de la fonction est en dehors de la boucle
2. Ne pas initialiser la fonction plusieurs fois en la mettant dans la boucle. Alors prévoir un paramètre dans la fonction Smiley cligne

<<<EDIT;

function open_modifGalerie(valId){
		window.open('prostaff_galerie_modif.php?id='+valId,'Modifier la photo','menubar=no, scrollbars=yes, width=600, height=700');
	}


<a href="#" onclick="javascript:open_modifGalerie(<?php echo $id; ?>);" title="<?php echo $info['title']; ?>">


Perso, je trouve pas propre comme code. Trop de mélange (JS/html/php (dynamique+ mise en forme)). Smiley ohwell

EDIT;
Modifié par niuxe (27 Nov 2012 - 21:41)
Oula!

Tu viens de me perdre!

EDIT: Ah d’accord, je viens de voir ton 2e message, je vais regarder ça c'est plus clair du coup!

EDIT 2: Ouais, je sais qu'il est pas propre, j'essaie de démèler tout ça, mais je suis encore en phase d'apprentissage... je vois pas toujours clair!
Modifié par juliesunset (27 Nov 2012 - 21:48)
Modérateur
C'est à dire ?

<<<EDIT;

Ce message peut te servir dans le cas d'une requête ajax :
1. récupération du contenu de cette vue dans la page courante
2. insertion des données dans le formaulaire de cette vue
3. affichage de cette vue (dans une lightbox par exemple) avec les données dans la page courante

EDIT;
Modifié par niuxe (27 Nov 2012 - 21:54)
Ah ok, je pense avoir compris... entouka ça fonctionne.

Sauf que du coup ça ne s'ouvre plus dans une nouvelle fenêtre et je ne vois pas comment arranger ça avec le nouveau code! Smiley langue
Modérateur
Pour le 2e, c'est une ébauche pour une requête ajax (le etc.) avec une idée pour récupérer l'identifiant de ta fiche. Je t'ai proposé cette idée pour que tu aies un code plus propre