Frage

versucht, dies für eine ganze Weile und ich brauche Hilfe. Im Prinzip habe ich eine PHP-Datei, dass Abfragen Datenbank und ich möchte die Suche zu starten, basierend auf einem Benutzer Namen angemeldet.

Was auf meiner Seite passiert ist, dass sich ein Benutzer anmeldet mit Twitter Oauth und ich kann ihre Details anzuzeigen (twitter Benutzernamen etc.). Ich habe eine Datenbank, die die Benutzerinformationen und hinzugefügt ich, was ich möchte, ist geschehen, wenn sich der Benutzer anmeldet mit Twitter Oauth, ich jQuery verwenden könnten die Benutzer Benutzernamen und aktualisieren Sie die MySQL-Abfrage zu übernehmen nur die Ergebnisse zu zeigen, wo die user_name = dass bestimmte Benutzer-Namen.

Im Moment ist die mysql Abfrage lautet:

"SELECT * FROM markers WHERE user_name = 'dave'"

Ich habe versucht, so etwas wie:

"SELECT * FROM markers WHERE user_name = '$user_name'"

Und an anderer Stelle in der PHP-Datei Ich habe $ user_name = $ _POST [ 'user_name'] ;. In einer separaten Datei (die, in der der Benutzer umgeleitet wird, nachdem sie sich anmelden über Twitter) Ich habe einige jQuery wie folgt aus:

$(document).ready(function(){
$.post('phpsqlinfo_resultb.php',{user_name:"<?PHP echo $profile_name?>"})});

$ profile_name definiert wurde früher auf dieser Seite.

Ich weiß, ich bin etwas falsch klar zu machen, ich bin immer noch lernen. Gibt es eine Möglichkeit zu erreichen, was ich jQuery mag, mit dem Benutzer Benutzername auf die PHP-Datei zu schreiben, die MySQL-Abfrage zu ändern, nur die Ergebnisse an die Nutzer im Zusammenhang anzuzeigen, die angemeldet ist. Ich habe die PHP-Datei mit der Abfrage enthalten unter :

    <?php
// create a new XML document
//$doc = domxml_new_doc('1.0');
$doc = new DomDocument('1.0');

//$root = $doc->create_element('markers');
//$root = $doc->append_child($root);
$root = $doc->createElement('markers');
$root = $doc->appendChild($root);
$table_id = 'marker';
$user_name = $_POST['user_name'];
// Make a MySQL Connection
include("phpsqlinfo_addrow.php");
    $result = mysql_query("SELECT * FROM markers WHERE user_name = '$user_name'")
    or die(mysql_error());
// process one row at a time
//header("Content-type: text/xml");
header('Content-type: text/xml; charset=utf-8');
while($row = mysql_fetch_assoc($result)) {
    // add node for each row
  $occ = $doc->createElement($table_id);
  $occ = $root->appendChild($occ);
  $occ->setAttribute('lat', $row['lat']);
  $occ->setAttribute('lng', $row['lng']);
  $occ->setAttribute('type', $row['type']);
  $occ->setAttribute('user_name', utf8_encode($row['user_name']));
  $occ->setAttribute('name', utf8_encode($row['name']));
  $occ->setAttribute('tweet', utf8_encode($row['tweet']));
  $occ->setAttribute('image', utf8_encode($row['image']));
} // while
$xml_string = $doc->saveXML();
$user_name2->response;
echo $xml_string;
?>

Dies ist für die Verwendung mit einer Google-Karte Mashup im zu tun versuchen. Vielen Dank, wenn Sie mir helfen können. Wenn meine Frage nicht klar genug ist, bitte sagen, und ich werde versuchen, für Sie zu klären. Ich bin sicher, dass dies eine einfache Lösung ist, ich bin nur relativ unerfahren, es zu tun. Sie ist bereits im dies für zwei Tage und ich bin mit leider von Zeit aus.

War es hilfreich?

Lösung

Zunächst sollten Sie die $ _POST entkommen Sie Einfügen direkt in die Abfrage:

'SELECT * FROM markers WHERE user_name = `' . mysql_real_escape_string($user_name) . '`';

Wie Erik schlägt vor, nicht werfen aus dem Fenster die nützlichsten Warnungen -. Höchstwahrscheinlich die Antwort dann nach rechts weiter knallt

Aber was ich bin mir nicht ganz sicher ist die Art und Weise Mashup funktioniert. Es könnte viel einfacher, wenn man nur innerhalb des PHP selbst all die Dinge tun, javascript gar weggelassen werden. Vielleicht wollen Sie auch OAuth Rückrufe überprüfen - sollten Sie Twitter-ID oder Benutzernamen geben

.

Andere Tipps

Es ist nichts falsch mit:

$result = mysql_query("SELECT * FROM markers WHERE user_name = '$user_name'");

Andere dann ist reif für SQL-Injection - sollte es funktionieren. Möglicherweise möchten Sie Ihre Anfrage direkt auf der Datenbank, um zu versuchen und sehen, ob die Ergebnisse sind, was Sie erwarten.

Ich würde auch das Einschalten der Fehlerberichterstattung während der Entwicklung empfehlen. Fügen Sie die folgenden Zeilen an den Anfang des Dokuments:

error_reporting(E_ALL);
ini_set("display_errors", 1);

und es wird Ihnen uncover viele Fehler helfen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top