Jump to content

Ierakstu dublējums pie mysql select


MartinsBe
 Share

Recommended Posts

Sveiciens visiem. Esmu atdūries, ka tiek veidota aktivitāšu pārraudzība, un sadaļā aktivitātes no db tabulas aktivitātes tiek izvaditas visas pieejamās. Attiecīgi katrai uzģenerē linku. Pēc domas uz katras uzklikojot ir redzami komentāri par to virzību un to autors. visi postiņi glabājas atsevišķā tabuā posts, kura ir aktivitātes id, posta id utt. Tikai tiklīdz ir jauns posts viņs šo linku izvada pa jaunu, un zem katra rādās pa vienam postam. Te būs arī kods. iesakiet ko esmu izdarījis līki.

<?php
require_once ("./connectDB.php");
function printMainForm () {
echo "<form action=\"\" method=\"post\">
  <input type=\"submit\" name=\"newActivity\" value=\"Izveidot jaunu aktivitāti\">";
}
function printACTform () {
echo "<form action=\"\" method=\"post\">
  <table width=\"100%\" cellpadding=\"1\" cellspacing=\"0\">
  <tr>
   <td width=\"20%\">Nosaukums : </td><td><input type=\"text\" name=\"nosaukums\" /><br /></td>
  </tr>
  <tr>
   <td width=\"20%\">Autors : </td><td><input type=\"text\" name=\"autors\" /><br /></td>
  </tr>
  <tr>
   <td width=\"20%\">Teksts : </td><td><input type=\"text\" name=\"teksts\" /><br /></td>
  </tr>
  <tr>
   <td align=\"center\" width=\"20%\"></td><td><input type=\"submit\" value=\"Izveidot\" name=\"izveidot\"></td>
  </tr>
 </table>
</form>
";
}
function printReplayButton() {
echo "<form action=\"\" method=\"post\">
  <input type=\"submit\" name=\"newPost\" value=\"Pievienot atbildi\">";
}
function printPOSTform () {
echo "<form action=\"\" method=\"post\">
  <table width=\"100%\" cellpadding=\"1\" cellspacing=\"0\">
   <tr>
 <td width=\"20%\">Autors : </td><td><input type=\"text\" name=\"post_autors\" /><br /></td>
   </tr>
   <tr>
 <td width=\"20%\">Teksts : </td><td><input type=\"text\" name=\"post_teksts\" /><br /></td>
   </tr>
   <tr>
 <td align=\"center\" width=\"20%\"></td><td><input type=\"submit\" value=\"Pievienot\" name=\"pievienot\"></td>
   </tr>
  </table>
 </form>";
}
$actName=mysql_real_escape_string($_POST["nosaukums"]);
$actAuthor=mysql_real_escape_string($_POST["autors"]);
$actText=mysql_real_escape_string($_POST["teksts"]);
$postACTID=$_GET["view_id"];
$postAuthor=mysql_real_escape_string($_POST["post_autors"]);
$postText=mysql_real_escape_string($_POST["post_teksts"]);
function addActivity ($a, $b, $c) {
$query="INSERT INTO activities (ID, Name, User, Text) VALUES (NULL, '$a','$b','$c')";
$result = mysql_query($query);
}
function addPost ($a, $b, $c) {
$query="INSERT INTO posts (ID, Activity_ID, User, Text) VALUES (NULL, '$a','$b','$c')";
$result=mysql_query($query);
}
function printActivities($a,$b,$c) {
//$piepras = mysql_query("SELECT * FROM activities, posts WHERE activieties.ID=posts.ctivity_ID");
$query = mysql_query("SELECT * FROM activities LEFT JOIN posts ON (activities.ID=posts.Activity_ID)");
while ($row=mysql_fetch_array($query)) {
 echo "<a href=\"./?id=5&&view_id="  . $row['ID'] . "\"><b>" . $row['Name'] . "</b></a>.";
 if ($_GET["view_id"]==$row['ID']) {
  echo "\n<h2>" . $row['User'] . "</h2><p><i>" . $row['Text'] . "</p></i>";
  printReplayButton();
  echo "<br / >";
 }
 if (isset($_POST["pievienot"])) {
  addPost($postACTID, $postAuthor, $postText);
 }
 if (isset($_POST["newPost"])) {
  printPOSTform();
 }
}

}
?>

 

izvads izskatas kkā tā:

 

aktivitate1

aktivitāte1

aktivitāte 2

Link to comment
Share on other sites

Mezavecis
(labots)

Meklē vainu šeit, jo šis pieprasījums atgriezīs vairāk par vienu ierakstu. Paskaties arī, kādi tev dati datubāzē un ko šis pieprasījums atgriež. Manuprāt jāņem nost identifikators LEFT.

 

SELECT * FROM activities LEFT JOIN posts ON (activities.ID=posts.Activity_ID)

Labots - Mežavecis
Link to comment
Share on other sites

MartinsBe

itkā izņēmu, bet efekta nav.

Link to comment
Share on other sites

Mezavecis

Arī neloģiski izskatās cikls, kura ietvaros notiek posta pievienošanu un tam vajadzētu būt ārpus selekta cikla.

 

Tāpēc saku, paskaties datu bāzē, vai nav jau n kopijās posti saveidoti.

Link to comment
Share on other sites

Леший
(labots)

A priekš kam tu tajā vietā vispār joino posts?

 

Un MySQLā iekš join clause kā pirmo operandu ir jārakstā joinojamas tabulas lauku.

Tas ir

LEFT JOIN posts ON (posts.Activity_ID=activities.ID)

nevis

LEFT JOIN posts ON (activities.ID=posts.Activity_ID)

Labots - Леший
Link to comment
Share on other sites

Izveido kontu, vai pieraksties esošajā, lai komentētu

Jums ir jābūt šī foruma biedram, lai varētu komentēt tēmas

Izveidot jaunu kontu

Piereģistrējies un izveido jaunu kontu, tas būs viegli!

Reģistrēt jaunu kontu

Pierakstīties

Jums jau ir konts? Pierakstieties tajā šeit!

Pierakstīties tagad!
 Share

×
×
  • Izveidot jaunu...