Verschiedene Profile - Variable übergeben

Topol

Mitglied
Hallo,

ich bin momentan dabei eine Website aufzubauen. Nach dem Login auf der index.php (mit FB/Twitter) wird man weitergeleitet auf die home.php.

In der Session Start steht immer die ID der Usertabelle.

PHP:
session_start();
$uid=$_SESSION['id'];


Auf dieser home.php kann man auf sein eigenes Profil gehen mit

PHP:
<li><a href="profile/profil.php?id=<?php echo $_SESSION['id']; ?>"> Profile </a></li>

Dabei habe ich 3 verschiedene Tabellen in meiner MySQL Datenbank.
Aufbau seht ihr hier: http://ondras.zarovi.cz/sql/demo/?keyword=topo

Users: Alle Users von FB/Twitter/Eigene User
Messages: Alle Pinnwandeinträge
Kommentare: Alle Kommentare zu Pinnwandeinträgen


Mein Script für die Pinnwandeinträge war zuerst auf 1 Pinnwand ausgelegt. Diese habe ich jetzt so konfiguriert, dass auf seiner eigenen Pinnwand nur die eigenen Posts und und die Posts bei denen man kommentiert hat angezeigt werden. Dies funktioniert auch.

Mit $profil_id = $_GET['id'] konnte ich die ID des aktuellen Profils an mein Programm übergeben und es zeigt mir auch bei anderen Profilen alle Messages und Kommentare von deren ID an.

Nun wollte ich noch die Profilid bei den Pinnwandeinträgen=Messages abspeichern damit ich nicht nur deren Pinnwandeinträge auf der Generellen Pinnwand anzeigen lassen kann, sondern auch Pinnwandeinträge von anderen Benutzern auf dem aktuellen Profil.

Beispiel: User mit ID 001 ist auf Profil 005. Er sieht alle Einträge von 005 und alle Kommentare von 005. Zusätzlich wenn ID 001 auf Profil 005 einen Pinnwandeintrag hinterlässt wird er abgespeichert, aber nicht angezeigt.

Jetzt zum PROBLEM:

In der Profil.php wird meine functions.php included.
Aber in der functions.php bekomme ich es nicht hin die $profil_id der profil.php aufzurufen.
Er schreibt mir dann in die Messages Tablle bei Profil_id immer den Wert 0.

Leider komme ich an diesem Punkt alleine nicht mehr weiter.

Da ich wirklich kein PHP Profi bin würde ich mich über Anregungen und Vorschläge freuen.

MfG Topol

Falls Ihr mehr Code oder sonstiges braucht, bitte melden!


Code in der profil.php:

PHP:
include_once 'includes/functions.php';
$profil_id = $_GET['id'];
$Wall = new Wall_Updates();
$updatesarray=$Wall->Updates($profil_id); // $uid mit $profil_id ersetzt um die Einträge des  aktuellen Profils anzuzeigen

<div id="content">
		<?php include('load_messages.php'); ?>
</div>

Code zum INSERT von neuen Pinnwandeinträgen=Update=Messages in der functions.php:

PHP:
 class Wall_Updates {

	//Insert Update           U.creator eingefügt für die differenzierte Anzeige der User [ Creator für den Ersteller des Updates ]
	public function Insert_Update($uid, $update) 
	{
	$update=htmlentities($update);
	   $time=time();
	   $ip=$_SERVER['REMOTE_ADDR'];
	   $creator=$_SESSION['username'];
	   $profil_id=$_GET['id'];
        $query = mysql_query("SELECT msg_id,message,creator,profil_id FROM `messages` WHERE uid_fk='$uid' order by msg_id desc limit 1") or die(mysql_error());
        $result = mysql_fetch_array($query);
		
        if ($update!=$result['message']) {
            $query = mysql_query("INSERT INTO `messages` (message, uid_fk, ip,created,creator,profil_id) VALUES ('$update', '$uid', '$ip','$time','$creator','$profil_id')") or die(mysql_error());
            $newquery = mysql_query("SELECT M.msg_id, M.uid_fk, M.message, M.created, U.username, M.creator, M.profil_id FROM messages M, users U where M.uid_fk=U.id and M.uid_fk='$uid' order by M.msg_id desc limit 1 ");
            $result = mysql_fetch_array($newquery);
			 return $result;
        } 
		else...
 
Zuletzt bearbeitet:
Bitte, bitte den Code in Zukunft formatiert in [PHP]mein Code[/PHP] setzen

In der Profil.php wird meine functions.php included.
Aber in der functions.php bekomme ich es nicht hin die $profil_id der profil.php aufzurufen.
Er schreibt mir dann in die Messages Tablle bei Profil_id immer den Wert 0.
Wo ist der include('functions.php') in deiner profil.php?
Wo rufst du nachher Insert_Update() auf?
Was ist Wall_Updates für eine Klasse? Beinhaltet sie die Methode Insert_Update()?
 
Hallo Yaslaw,

danke für deine schnelle Antwort und deinen Tipp mit den PHP Codes.

Zu deinen Fragen:

1) Der Include ist am Anfang der Datei
PHP:
 include_once 'includes/functions.php';
2) Die Insert_Update wird in der message_ajax.php aufgerufen. Diese dient dazu die message sofort anzuzeigen, wenn sie gepostet wurde.
3) Die functions.php besteht im Prinzip aus der Wall_Updates Klasse und beinhaltet die Methode Insert_Update().

Entschuldigung schonmal für die verwirrende Darstellung.
 
Da stellt sich mir die Frage. Wenn du Insert_Update() aus Ajax aufrufst. Bist du sicher dass bei diesem Aufruf der Part $profil_id = $_GET['id'] ausgeführt wird? Also dass er beim Aufruf ab Ajax über diese Zeile kommt?
Wird die ID beim Ajax-Aufruf mitgegeben?
 
Hallo Yaslaw,

ich bin mir leider gar nicht sicher wie das momentan funktioniert.

Der Aufruf $profil_id=$_GET['id']; in der Profil.php funktioniert und gibt die ID aus.

Den Aufruf $profil_id=$_GET['id']; in der functions.php habe ich manuell hinzugefügt.

Mir ist momentan leider nicht bewusst wie ich die Get ID von Profil.php auf functions bekommen.

Hier mal der Code von der Message_ajax.php:

PHP:
 <?php

error_reporting(0);
include_once 'includes/db.php';
include_once 'includes/functions.php';
include_once 'includes/tolink.php';
include_once 'includes/time_stamp.php';
include_once 'session.php';
$Wall = new Wall_Updates();
if(isSet($_POST['update']))
{
$update=$_POST['update'];
$data=$Wall->Insert_Update($uid,$update);

if($data)
{
$msg_id=$data['msg_id'];
$message=tolink(htmlentities($data['message']));
$time=$data['created'];
$uid=$data['uid_fk'];
$username=$data['username'];
$face=$Wall->Gravatar($uid);
//$commentsarray=$Wall->Comments($msg_id);
?>
 
Zuletzt bearbeitet:
Zeig mal deinen Ajax-Aufruf.
Die Seite die du dort aufrufst muss nachher auf die Session zugreiffen und die ID auslesen.

Der Ablauf ist der folgende



- Seitenanfrage

==>PHP beginnt. Die Session muss neu gestartet werden.Die id neu auslesen
- PHP Script erstellt eine HTML-Seite
- Seite an Browser senden
==>Hier ist PHP fertig

- User klickt auf Link
- Ajax startet eine Anfrage an den Server
==>PHP beginnt wieder. Die Session muss neu gestartet werden. Die id neu auslesen
- PHP Script erstellt ein HTML-Code
- Seite an Browser senden
==>Hier ist PHP fertig

-Ajax beendet seinen Teil
 
Vielen Dank für die ausführliche Erklärung.

In der Profil.php wird auch auf mehrere Javascript Dokumente verwiesen:

PHP:
  <script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
  <script>window.jQuery || document.write('<script src="js/libs/jquery-1.7.1.min.js"><\/script>')</script>
  <script src="js/libs/modernizr-2.5.0.min.js"></script>
  <script src="js/plugins.js"></script>
  <script src="js/script.js"></script>
  <script type="text/javascript" src="js/jquery.oembed.js"></script>
  <script type="text/javascript" src="js/wall.js"></script>
  <script type="text/javascript" src="js/jquery.autoresize.js"></script>

In der Wall.js wird die AJAX aufgerufen.

PHP:
// wall.js

$(document).ready(function() 
{
// Update Status
$(".update_button").click(function() 
{
var updateval = $("#update").val();
var dataString = 'update='+ updateval;
if(updateval=='')
{
alert("Please Enter Some Text");
}
else
{
$("#flash").show();
$("#flash").fadeIn(400).html('Loading Update...');
$.ajax({
type: "POST",
url: "message_ajax.php",
data: dataString,
cache: false,
success: function(html)
{
$("#flash").fadeOut('slow');
$("#content").prepend(html);
$("#update").val('');	
$("#update").focus();

    	

$("#stexpand").oembed(updateval);
  }
 });
}
return false;
	});

____________

Liege ich mit der Annahme richtig, dass ich in der wall.js dann neben dem Text des abgeschickten Updates auch die aktuelle Profilid des Browsers(?id=xxx) mit POST übergeben muss?
 
Zuletzt bearbeitet:
Und wird in der message_ajax.php die Session auch gestartet und die ID ausgelesen?
Oder wo klappts nicht? Irgendwie seh ich nicht mehr durch
 
Hallo,

also es geht hierrum nicht um die Session ID des angemeldeten Benutzers, sondern die Profilid der aktuellen Seite.

Dann möchte ich mit $profil_id=$_GET['id'] die Profilnummer aus der URL auslesen und diese dann in der functions.php in die DB unter Messages.Profil_ID speichern lassen, damit ich die Pinnwandeinträge einer Pinnwand zuordnen kann.

Wenn ich den Befehl aber in der functions.php einfüge schreibt er mir nach einem Pinnwandeintrag in die Messages.Profil_ID aber den Wert 0.

Ich weiss aber nicht warum.
 
Ich hab zwar kein blassem Schimmer von Javascript.
Aber beim Aufruf sehe ich dass du POST und nicht GET verwendest.
Auch sehe ich die ID nicht, die du mit übergeben willst
Javascript:
$.ajax({
type: "POST",
url: "message_ajax.php",
data: dataString,
cache: false,
success: function(html)
 

Neue Beiträge

Zurück