2016-05-09 5 views
2

ich eine Seite müssen übergeben, die Informationen aus der Datenbank erhält und wandelt sie in Reihen:wie mysqli_fetch_assoc Reihen zu anderen Seiten

<?php 

session_start(); 
$cuser = $_SESSION["username"]; 

$getRequests = "SELECT * FROM friends WHERE user2='$cuser' AND accepted='0'"; 
$query = $conn->query($getRequests); 

if ($query->num_rows >= 1) { 
    while($row = mysqli_fetch_assoc($query)) { 
    echo "<div id=fRequest>"; 
    echo "<a href='#'>".$row["user1"]."</a>"; 
    echo "</div><br>"; 
    echo "<a href='#'><button>Accept</button></a>", " ", "<a href='#'><button>Ignore</button></a>"; 
    echo "<br><br>"; 
    } 
} else { 
    echo "You don't have any friend request :("; 

} 

?> 

Wie ich Informationen weitergeben zu tun (von einer bestimmten Zeile) auf einem anderen Seite zu Führen Sie dann ein SQL-Skript aus?

PS: Ich bekomme normalerweise mehr als 1 Ergebnis von dieser Abfrage.

+0

Fügen Sie in Ihrem Akzeptieren- oder Ignorieren-Anker einen Link zur neuen Seite hinzu, zusammen mit der ID der Zeile. dann Zugriff auf die Zeile auf der neuen Seite mit mysql-Abfrage sagen * von Freunden wählen, wo diese ID – Poria

+0

@Poria, aber wie die anderen Seiten kennt die ID, muss ich es auf eine Weise tun, dass andere Leute nicht ID ändern oder darauf zugreifen können anders als durch Klicken auf die Accpet-Taste –

+0

senden Sie es wie accept.php? row_id = und auf accept.php erhalten Sie die ID von der URL mit $ _GET [' row_id ']; dann übergeben Sie es in Ihrer MySQL-Abfrage, wenn es numerisch ist, indem Sie is_numeric ($ _ GET ['row_id']) – Poria

Antwort

0

holen Wenn Sie sie über die $_POST senden möchten superglobal, können Sie Folgendes tun:

<?php 
    //your previous php code here that obtains the values 
?> 

<form action="otherpage.php" method="POST" id="myForm"> 
    <input type="hidden" name="v1" value="<?php echo /*value you want to pass*/?>"> 
    <input type="hidden" name="v2" value="<?php echo /*value you want to pass*/?>"> 
</form> 

<script type="text/javascript"> 
    document.getElementById('myForm').submit(); // SUBMIT FORM 
</script> 

Sie würden so viele Eingaben erstellen, wie Sie benötigen. Dies kann auch automatisch mit PHP erfolgen, wenn die Anzahl der Eingänge variiert.

Dann auf Seite otherpage.php Sie etwas ähnliches tun wäre:

<?php 
    $v1 = $_POST['v1']; 
    $v2 = $_POST['v2']; 
?> 

Sie können mysql_real_escape_string() benutzen, um Ihre Eingabe zu sanieren, aber wenn Sie PDO Prepared Statements für Ihre folgenden Abfragen verwenden, während die Parameter zu binden, dann Es sollte kein Escapen erforderlich sein, wie im folgenden Thread erwähnt: what is the PDO equivalent of mysql_real_escape_string

+0

Danke, es funktionierte: D –

+0

@ João kein Problem Alter! Seien Sie vorsichtig mit der Abfrage, die Sie mit $ v1 und $ v2. Bitte verwenden Sie vorbereitete Anweisungen und binden Sie Ihre Parameter, nur um sql Injektion zu verhindern. – Webeng

3

Sie könnten die Daten in einer Sitzung speichern und auf der anderen Seite verwenden.

Zum Beispiel:

while ($row = mysqli_fetch_assoc($query)) { 

    /* Other code */ 

    $_SESSION['user1'][] = $row["user1"]; 

} 

Und dann, in der anderen Seite:

echo "<pre>"; 
print_r($_SESSION['user1']);   
echo "</pre>"; 

Dies gibt Ihnen die ganze Reihe aller benutzer1 Reihen.

+0

Aber das gibt mir die vollständige Anordnung, Ich möchte nur eine spezifische Zeile –

+0

Welche Zeile und welche Daten möchten Sie auf der anderen Seite zugreifen? –

+0

Sitzungen sind wahrscheinlich der sicherste Weg. Die Informationen werden nur auf dem Server gespeichert, also eine große Sache, über die man sich keine Sorgen machen muss. Es ist cool, dass wir alle verschiedene Lösungen (get, post, sessions) gegeben haben, upvoted ur antwort. – Webeng

0

beliebige Parameter href senden und es in einer anderen Seite über get-Methode holen, und führen Sie Abfrage von where-Klausel durch diese Parameter, können Sie diese Informationen

+0

Wenn ich es durch get Methode mache, könnten andere Leute einfach einen beliebigen Wert eingeben und auf die Datenbank zugreifen :( –

+0

@ João Nun, es ist nicht so einfach. Es gibt viele richtige Möglichkeiten, '$ _GET' zu verwenden, um SQL-Abfragen zu tun Was mich mehr über die Verwendung eines Abfrage-Strings beunruhigte, ist, dass die Information auf der URL verfügbar gemacht wird, weshalb ich in meiner Antwort die '$ _POST'-Methode verwenden wollte. – Webeng

+0

Obwohl ich definitiv eine Erklärung geben würde, wie tun dies richtig Waleed, Ursache sql-Injektion ist die Hauptsorge – Webeng

0

Sie könnten diese bestimmte Zeile in eine temporäre Tabelle kopieren und eine MD5-ID generieren. Auf diese Weise könnten Sie einen Link mit einer codierten Get übergeben, die nur auf diese Zeile verweist und es gibt keine Unordnung um sie herum

bearbeiten: von temporary ich meine eine Tabelle, die ihre eigene Zeile nach Zugriff auf es einmal löschen. Oder nach einiger Zeit.

+0

Das ist auch eine gute Idee, danke. –

Verwandte Themen