webForumDet fria alternativet

Samma datum matchar != ???

4 svar · 469 visningar · startad av aasah

aasahMedlem sedan mars 20033 451 inlägg
#1

Ursäkta knasig rubrik, men... Jag har en databastabell som innehåller pussel. Jag skriver en fråga i SQL som plockar ut alla pussel så att de nyaste hamnar först, så långt funkar det utmärkt.

Men... Nu vill jag lägga in en header i utskriften:
These puzzles have been available since <datum>
Denna ska alltså bara stå EN gång per datum (eftersom vanligtvis flera pussel adderas samma dag). Följande kod borde, tycker jag, skriva ut datumet bara då det är annorlunda än förra gången. Men det gör den inte! Headern kommer ut en gång per pussel. Varför?

//....
$rowP = mysql_fetch_array($resP);
//...
$dateOld = "";
while ($rowJS = mysql_fetch_array($resJS)) {
	$dateCurr = $rowP['datum'];  //Ex March 25th, 2007
	if ($dateCurr != $dateOld) {
		$dateOld = $dateCurr;
		echo "<h2>These puzzles have been available since $dateCurr</h2>";
	}
//....

Men det skumma är att denna header alltid kommer ut, även när datumen ÄR lika??? :q

Sidan i fråga

tantenMedlem sedan nov. 20051 658 inlägg
#2

Jag skulle nog gjort någonting sånt här:
Efter att ha selectat i tabellen/tabeller där t.ex där id och datum kan jämföras.

$result = mysql_query($query);
$curr_date  = "";
$curr_id = "";
while ($r = mysql_fetch_array($result)){
  if ($r['datum'] != $curr_date && $r['id'] != $curr_id)
	  {
    echo "<h2>These puzzles have been available since:  ".$r['datum']." </h2>";
  $curr_date  = $r['datum'];
  $curr_track = $r[id'];
  }
  echo "<h3>".$r['namnpåpuzzlet']." </h3>
    <p> ".$r['puzzeltexten']." </p>";
}
aasahMedlem sedan mars 20033 451 inlägg
#3

Fast saken är den att det enda attribut som olika pussel på ett visst datum har gemensamt är datumet just. (De har alltså olika id.)

tantenMedlem sedan nov. 20051 658 inlägg
#4

Men nya id har väl lagts in varje datum? Det är inte annat än gemensamt datum som söks.

aasahMedlem sedan mars 20033 451 inlägg
#5

En utskrift av vad old eg hade för värde senare, och slanten trillade ner! Den sattes i 90% av alla fall om till "", därför att de flesta pussel bara har en variant. Så felet berodde på felplacering av nollställandet av värdet, den skulle ligga utanför första whileslingan också (vilken inte ens syntes på mitt utsnitt av kod)! :x

//.... 
$dateOld = "";   //<--- utflyttad
while ($rowP = mysql_fetch_array($resP)) { 
//... 
   while ($rowJS = mysql_fetch_array($resJS)) { 
       $dateCurr = $rowP['datum'];  //Ex March 25th, 2007 
       if ($dateCurr != $dateOld) { 
          $dateOld = $dateCurr; 
          echo "<h2>These puzzles have been available since $dateCurr</h2>"; 
       } 
      //....
Genererad på 380 ms · cache AV · v20260730165559-full.f96bc7eb