Javascript und PHP (window.öffnen)
So, in meiner website habe ich ein news-system, die bietet eine option zum Bearbeiten und löschen der Nachrichten, die der administrator wünscht.
Tja, ich hab das Teil Bearbeiten rechts durch die Verwendung:
href="noticiaEditarForm.php?id_noticia=<?php echo $id ?>">Editar</a>
Dann ein $_GET
auf der anderen Seite.
Dies ist jedoch nicht so, wie ich Lust meine Fenster Bearbeiten.
Deshalb habe ich mich erkunden, einen Weg zu schicken, die PHP-variable enthält den Primärschlüssel für die news-Tabelle (MySQL), um ein popup-Fenster mit JavaScript. Aber das ist halt die Sache, es wird nur der 1. Wert es wird von der Abfrage... (ich.e, Wenn ich Sie zum Bearbeiten auf den 3. Artikel, er bearbeitet mein 1. eins. Immer.)
Hier ist mein Derzeitiger code:
<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>
Mein Punkt ist, dann verwenden Sie eine andere Abfrage, um die Titel und text des Artikels angezeigt, die auf einem WYSIWYG-editor.
Kann jeder Punkt meine Fehler?
- Was ist die aktuelle Ausgabe? Ist die
$id
die gleichen, die bei jeder iteration der Schleife? - Auch die
window.open
JavaScript-Aufruf wird immer die Letzte$id
aus dem PHP-Schleife, da geschieht es nach der Schleife. So wird diese Funktion öffnen Sie immer die Letzte. - haben Sie versuchen, laden Sie das "Bearbeiten-Fenster" direkt mit der richtigen id? Wo ist die Abfrage, die Lasten der Datensatz-id?
- David: ich denke, das ist das Problem hier. Er braucht, um füllen Sie ein Skript block oder etwas zu speichern, die möglichen ID ' s statt hardcoding die ID in der open_win_editar Funktion.
- Ricardo, brauchen Sie nicht zu Bearbeiten Sie den Titel und fügen Sie "Gelöst", nur drücken Sie die akzeptieren-Schaltfläche neben der Antwort (wie du schon getan).
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diesem code:
Geschieht außerhalb des PHP -
while
- Schleife, so dass der Wert von$id
werden der Letzte Wert, der festgelegt wurde, zu$id
in der Schleife. Also den JavaScript-code öffnet immer den gleichen link.Benötigen Sie den code innerhalb der PHP-Schleife angeben, die
$id
Wert für das JavaScript, dann übergeben Sie Sie als argument an die JavaScript-Funktion. So etwas wie dieses:So, dass der code das rendering der Anker-tags in der Schleife übergeben würde das argument so:
Den output würde dann enthält der Datensatz-spezifische
$id
Wert auf jedesa
- tag verwendet werden, indem der JavaScript-code auf dem client.Dies ist nur einmal gerendert, wahrscheinlich mit der letzten ID. Sie brauchen, um herauszufinden, eine Struktur, so können Sie geben Sie eine andere ID zu, basierend auf dem, was Artikel, den Sie geklickt haben, zu Bearbeiten.
Die id des Stückes zu Bearbeiten, wird nur aktualisiert, innerhalb der while-Schleife und nie außerhalb von Ihr.
Es zu benutzen, wie Sie möchten, sollten Sie ein parameter für die open_with_editar Funktion:
Nun müssen Sie nur aktualisieren Sie das onclick-Ereignis und mit der hand über die betreffende id:
Funktionieren sollte.
Grüße
STEFAN