PHP 2 Daten in 1 Spalte

Bobo2040

Mitglied
Hi ich habe nen ganz einfaches Like Script gemacht... :D
So dort kann man halt sachen liken und so.. und dort sollen nun die Usernamen von denen , die geliket haben gespeichert werden
aber ich weiß leider nicht wie, das soll halt immer nur aktualisiert werden, wenn einer Liket soll sein username an den von seinem "vorliker" drangehängt werden aber ich weiß nicht wie.. kann mir da jemand nen gedankenstupser oder so geben.. hier ist nochmal mein code.. ist noch "alpha" version wollte erstmal das grundgerüst , bevor ich an sicherheit usw. gehe :D
PHP:
<?php
	session_start();
	include('../settings/connect.php');
	
	if(!isset($_SESSION['username'])) {
		header("location:../index.php");
		exit();
	} else {
		if(!empty($_POST['post_name']) OR !empty($_POST['post_date'])) {
		$p_name = $_POST['post_name'];
		$p_date = $_POST['post_date'];
		
		$query = 'SELECT * FROM posts WHERE post_name="'.$p_name.'" and datum="'.$p_date.'"';
		$result = mysql_query($query);
		if( !$result ) {
			echo "<h2>Upps da istasd und wohl ein Fehler unterlaufen ******</h2>";
			?>
			<a href="../startpage/s_index.php">Zurueck</a>	
			<?php
		} else {
			while($row = mysql_fetch_object($result)){
			$likes = $row->likes;
			$likes++;
			}
			
			$query = 'UPDATE posts SET likes="' . $likes . '", like_name="' . $_SESSION['username'] . '"';
			$result = mysql_query($query);
			if( !$result ) {
				echo "<h2>Upps da ist und wohl ein Fehler unterlaufen ******</h2>";
				?>
				<a href="../startpage/s_index.php">Zurueck</a>	
				<?php
			} else {
				header("location: ../startpage/s_index.php");
				exit();
			}
		}
		
		} else {
			header("location:../startpage/s_index.php");
			exit();
		}
	}
?>
Und dann noch die html datei :D
PHP:
			<form action="../post/new_post.php" method="post">
				<textarea name="post">Deine Nachricht an all deine Freunde!</textarea>
				<br/>
				<input type="submit" value="Posten">
			</form>
			<br/>
			<?php
			$query = 'SELECT * FROM posts ORDER BY datum';
			$result = mysql_query($query);
			
			while($row = mysql_fetch_object($result)) {
				echo "<h2>";
				echo $row->post_name;
				echo "</h2>";
				echo "<br/>";
				// Auto Links  -> http://www.couchcode.com/php/auto-link-function/
				$pattern = "/(((http[s]?:\/\/)|(www\.))(([a-z][-a-z0-9]+\.)?[a-z][-a-z0-9]+\.[a-z]+(\.[a-z]{2,2})?)\/?[a-z0-9.,_\/~#&=:;%+?-]+[a-z0-9\/#=?]{1,1})/is";
  				$row->post = preg_replace($pattern, " <a href='$1'>$1</a>", $row->post);
  				$row->post = preg_replace("/href='www/", "href='http://www", $row->post);
  				echo $row->post;
				echo "<br/>";
				echo $row->datum;
				echo "<br/>";
				echo $row->likes;
				echo $row->disslikes;
				?>
				<form action="../like_sys/like.php" method="post">
					<input type="hidden" name="post_name" value="<?=$row->post_name;?>">
					<input type="hidden" name="post_date" value="<?=$row->datum;?>">
					<input type="submit" value="Like">
				</form>
				<form action="../like_sys/disslike.php" method="post">
					<input type="hidden" name="post_name" value="<?=$row->post;?>">
					<input type="submit" value="Disslike">
				</form>
				<?php
			}
		}
		
		?>
 
Okay hat sich erledigt habs selbst herausbekommen :D
so siehts jetzt aus..
PHP:
			$query1 = 'SELECT like_name FROM posts WHERE post_name="'.$p_name.'" and datum="'.$p_date.'"';
			$result1 = mysql_query($query1);
			$result2 = mysql_fetch_object($result1);
			
			$like_names = $result2->like_name;
			$komma = ", ";
			$i_l_name = $like_names . $komma . $_SESSION['username'];
			
			while($row = mysql_fetch_object($result)){
			$likes = $row->likes;
			$likes++;
			}
			
			$query = 'UPDATE posts SET likes="' . $likes . '", like_name="' . $i_l_name . '"';
			$result = mysql_query($query);
 
Hi

noch ohne den Code gelesen zu haben:
Du willst also etwas wie "A, B und C mögen das", also mehrere User etc. zusammensammeln,
und fragst, wie du mehrere User in einer Mysql-Spalte bringst?

Mach es nicht. Ist aus vielen Gründen schlecht.
Mach statt einer einzige Spalte eine Tabelle mit (min.) drei Spalten:
Was geliked wurde, wer es war, und einen Timestamp.
Pro Like wird ein ganz eigener Eintrag gemacht.

Um alle User zu bekommen, die X geliked haben machst du eben eine Abfrage wie
SQL:
SELECT likeuser FROM tabelle WHERE likeding=x ORDER BY zeit
(dumme Spaltennamen)
Das Order-by deswegen, um die Reihenfolge, in der geliked wurde, beim Anzeigen einzuhalten.
 
okay gut danke :D ich dachte mit neuen tabellen ist das zu resourcen ... wie hieß das wort noch ?
iwas mit resourcen reich oder so..
 
Du meinst, dass es mehr (Festplatten-)Speicher braucht.
Stimmt.
Aber ich behaupt einfach mal, dass es auf lange Sicht mehr Vorteile als Nachteile gibt,
wenn man seine DB halbwegs normalisiert hat.
Änderbarkeit/Erweiterbarkeit/Verständlichkeit des Ganzen usw.usw.
 
Zurück