Javascript et PHP (fenêtre.ouvert)
Donc, dans mon site, j'ai un système de news qui dispose d'une option permettant de modifier et de supprimer les nouvelles de l'administrateur désirs.
Et bien, j'ai du modifier la partie droite à l'aide de:
href="noticiaEditarForm.php?id_noticia=<?php echo $id ?>">Editar</a>
Et puis un $_GET
sur l'autre page.
Cependant, ce n'est pas la façon dont j'ai envie de ma fenêtre d'édition.
Donc, j'ai exploré un moyen d'envoyer la variable PHP qui contient la clé primaire de la table news (MySQL) à une fenêtre, à l'aide de JavaScript. Mais c'est juste la chose, il ne retourne que la 1ère valeur de la requête... (j'.e Si je clique sur modifier le 3e article, il édite mon 1er. Toujours.)
Voici mon code actuel:
<div class="noticias">
<?php
include('conn/conn.php');
mysql_select_db($bd, $conn);
$resultado = mysql_query("SELECT * FROM noticia INNER JOIN user ON noticia.id_user=user.id_user ORDER BY id_noticia DESC");
while ($linha = mysql_fetch_array($resultado)) {
echo "<h1>" . $linha['titulo'] . "</h1>";
echo "<i>Posted by " .$linha['username']. " on " . "<y>" . $linha['data'] . "</y>" . "</i>";
echo "<p>";
echo $linha['texto'];
$id = $linha['id_noticia'];
if (isset($_SESSION['admin'])) {
?>
<div class="noticiasOpcao">
<a href="" onClick="open_win_editar()">Editar</a>
<a onclick="return confirm('Are you sure?')" href="noticiaApagar.php?id_noticia=<?php echo $id ?>">Apagar</a>
</div>
<?php
}
}
?>
<script language="javascript">
function open_win_editar() {
window.open (
"noticiaEditarForm.php?id_noticia=<?php echo $id; ?>",
"Editar notícia",
"location=1, status=1, scrollbars=1, width=800, height=455"
);
}
</script>
<?php mysql_close($conn); ?>
</div>
Mon point consiste alors à utiliser une autre requête pour obtenir le titre et le texte de l'article pour l'afficher sur un éditeur WYSIWYG.
Quelqu'un peut mon défaut?
- Qu'est-ce que le réel rendu de la sortie? Est le
$id
le même à chaque itération de la boucle? - Aussi, le
window.open
appel JavaScript aura toujours le dernier$id
de la boucle PHP, comme il arrive après la boucle. De sorte que la fonction sera toujours ouverte la dernière. - avez-vous essayez de charger la "fenêtre d'édition" directement avec l'id correct? Où est ta requête qui charge l'enregistrement par id?
- David: je pense que c'est le problème ici. Il doit remplir un bloc de script ou quelque chose de possible de stocker les ID plutôt que de coder en dur les ID dans le open_win_editar fonction.
- Ricardo, vous n'avez pas besoin de modifier le titre et ajouter "Résolu", appuyez simplement sur le bouton "accepter" à côté d'une réponse (comme vous l'avez déjà fait).
Vous devez vous connecter pour publier un commentaire.
Ce code:
Se passe à l'extérieur de l'PHP
while
boucle, de sorte que la valeur de$id
sera la dernière valeur qui a été définie pour$id
dans la boucle. Ainsi, le code JavaScript ouvre toujours le même lien.Si vous avez besoin du code à l'intérieur de la boucle PHP pour spécifier le
$id
valeur pour le JavaScript, vous pouvez la passer en argument à la fonction JavaScript. Quelque chose comme ceci:De sorte que le code de rendu de l'ancrage des balises dans la boucle serait passer l'argument comme ceci:
Le rendu de la sortie serait alors contenir l'enregistrement
$id
valeur sur chaquea
tag pour être utilisé par le code JavaScript sur le client.Ce n'est qu'une fois rendu, avec probablement le dernier ID. Vous avez besoin de trouver une structure de sorte que vous pouvez passer un ID différent sur ce que l'article que vous avez cliqué sur modifier.
L'id de la pièce à modifier est seulement mis à jour à l'intérieur de la boucle while et jamais en dehors d'elle.
De l'utiliser comme vous le souhaitez, vous devez utiliser un paramètre pour la open_with_editar fonction:
Maintenant, vous n'avez qu'à mettre à jour l'événement onclick et la main sur teh respectifs id:
Qui devrait fonctionner.
Ce qui concerne
STEFAN