ugrás a tartalomhoz

MySQL, PHP kezdok kerdese

eaposztrof · 2007. Jún. 12. (K), 18.59
hogyan tudok egy array-be ujabb tartalmat dobni?
en igy probaltam, de nem megy. mindig csak egy tartalma van
  1. $date=array();  
  2. while ($row = mysql_fetch_assoc($result)) {  
  3.  $dates=$row['submitted']; //kiolvasom a 'submitted' sort, stringkent  
  4.  $date=&$dates; //hozzaadom a stringet a meglevo arrayhez  
  5. }  
es a $date csak egy 'submitted'-et tartalmaz
 
1

operator[]

Csiszár Attila · 2007. Jún. 12. (K), 19.25
  1. $date[]=$row["submitted"];  
Egyébként meg: érdemes tanulmányozni a php manual-t.
Üdv. ati
2

egyformak kiszurse

eaposztrof · 2007. Jún. 12. (K), 19.39
koszi, megtalaltam en is a manualban de amit nem talalok az az, h ha egy tombben ketszer szerepel ugyanaz, akkor is csak egyiket irja ki. koszi a turelmet
3

unique

eaposztrof · 2007. Jún. 12. (K), 19.51
bocsi, megint tul hamar kerdeztem, de alig talalom meg a kulcsszavakat ami szerint rakereshetnek.

array_unique();
4

array_push

Csorba Norbert · 2007. Jún. 13. (Sze), 10.12
$date = array();
array_push($date, $uj_tartalom);
5

mi?

Fraki · 2007. Jún. 13. (Sze), 10.20
Ez a parancs:

$date=&$dates;

egy sima referencia szerinti értékadás, semmit nem ad hozzá semmihez.
Ha meg a tömbökkel kell ismerkedni, akkor a kulcsszó nyilván az array (nem értem, hogy jön ide az array_unique(), ami, mint a neve is mutatja, a duplikátumokat tüntetni el egy tömbből...)
6

unique

eaposztrof · 2007. Jún. 13. (Sze), 18.00
  1. array([0] => 2007-05-05 [1] => 2007-05-04 [2] => 2007-05-04 [3] => 2007-04-24);  
ebbol kellene csinalni:
  1. array([0] => 2007-05 [1] => 2007-05 [2] => 2007-05 [3] => 2007-04);  
majd unique-vel ezt:
  1. array([0] => 2007-05 [2] => 2007-04);  
7

kód

tlof · 2007. Jún. 13. (Sze), 22.21
Egy megoldás a problémára.
A foreach-el végig mész a tömbön, levagdalod a fölösleges elemeket a stringről, majd megnézed, hogy benne vannak-e a többme és ha nem akkor bedobod az elemet a tömbbe.

Hátránya, hogy nagyon nagy elemszámú tömbnél az in_array lassú.
  1. $tomb = array(0 => '2007-05-05',  1 => '2007-05-04', 2 => '2007-05-04',  3 => '2007-04-24');  
  2. $ujtomb = array();  
  3.   
  4. foreach ($tomb as $item)  
  5. {  
  6.     $hossz = (strlen($item) - 3);  
  7.     $temp = substr($item, 0, $hossz);  
  8.     if (!in_array($temp$ujtomb))  
  9.     {  
  10.         $ujtomb[] = $temp;  
  11.     }  
  12.     unset ($temp);  
  13. }  
B, megoldás:
  1. $tomb = array(0 => '2007-05-05',  1 => '2007-05-04', 2 => '2007-05-04',  3 => '2007-04-24');  
  2. $ujtomb = array();  
  3.   
  4. foreach ($tomb as $item)  
  5. {  
  6.     $hossz = (strlen($item) - 3);  
  7.     $temp = substr($item, 0, $hossz);  
  8.     $ujtomb[$temp] = $temp;  
  9.     unset ($temp);  
  10. }  
Annyi változott, hogy az asszociativ tömbök azon tulajdonságát használtad ki, hogy egy névnél csak egy érték lehet, igy a végén garantáltan minden elem csak egyszer szerepel a tömbben. Sokkal gyorsabb megoldás, hátránya, hogy nem 100%-ik azt kapod amit szerettél volna, de egy utólagos foreach még mindig gyorsabb nagy elemszámnál mint a folytonos in_array
8

mysql_results, searc, array

eaposztrof · 2007. Jún. 15. (P), 17.11
no.. ettol mar a szomszedgyerek is osszerezzent, en meg mar izzasig kinoztam a php.net-et meg google-t.. bizom benne h nektek kisujjbol megy.
  1. $mysql_results = mysql_query ("select * from $table where $row_id like '$search_string'");  
  2.    
  3. //pelda:  
  4. // $row_id tartalmai 2007-05-01,2007-05-01,2007-05-02,2007-05-03,2007-06-20  
  5. // $search_string-nak kell mukodjon ebben a formaban is: "2007-05" es ebben is: "2007-05-01"  
  6. // ha "2007-05", egy ilyen tombot kellene kapjak: array("2007-05-01","2007-05-01","2007-05-02","2007-05-03");  
  7. // ha "2007-05-01" akkor meg ilyent: array("2007-05-01","2007-05-01");  
9

mi a kérdésed?

gex · 2007. Jún. 15. (P), 17.20
nem értem, hogy mit szeretnél kérdezni. a felvetett témádra már elégséges választ kaptál, mi kéne még, hogy kisujjból menjen?
10

ujtema

eaposztrof · 2007. Jún. 15. (P), 17.32
ez egy ujabb kerdes lenne.. megprobalom erthetobben..

$mysql_results = mysql_query ("select * from $table where $row_id like '$search_string'");

mysql, $row_id (tartalmait lasd alabb) sorabol kell kilistazzam azokat a sorokat, amelyek tartalmazzak a kovetkezo stringet: "2007-05-01" (pelda szerint ebbol 2 van). ez megoldhato az alabbival:
mysql_query ("select * from $table where $row_id like '2007-05-01'");
de nekem akkor is listaznia kell, ha a '2007-05-01' helyett csak anyit irok: '2007-05', de ekkor mar a pelda szerint 4 talalatot kell visszaadjon.

$row_id tartalmai: 2007-05-01,2007-05-01,2007-05-02,2007-05-03,2007-06-20
11

nincs kérdés...

gex · 2007. Jún. 15. (P), 17.43
még mindig nem tettél fel kérdést, ajánlom figyelmedbe ezt a szálat.
azért megpróbálom. az a baj, hogy nincs eredmény? talán kéne egy % jel a like utáni részbe. a dátumok kezelésére pedig vannak külön függvények. teszteld le hogyan gyorsabb.
12

Új kérdés = új téma

Marcell · 2007. Jún. 15. (P), 17.46
Tedd fel új témába az új kérdést, és akkor később könnyebb lesz visszakeresni, ha valaki ugyanebbe futna bele.

Amúgy a kereséshez a % metakarakter és a REGEXP parancs használatos a MySQL-ben. Bővebben: http://dev.mysql.com/doc/refman/4.1/en/pattern-matching.html
13

kesztermek hirek mysqlbol stringgel vezerelve, archivval

eaposztrof · 2007. Jún. 15. (P), 19.44
ime amit alkottam, ezen kerdesek segitsegevel.. mondjuk h 3ev utani visszateressel.. amint kerdeseimbol is kitunt, sokminden kimaradt ezido alatt.. biztos vagyok benne h sok korrigalni valo van meg benne.. szivesen varom a tippeket es tanacsokat.. h kovetkezo jobban sikeruljon.. nemcsak nekem hanem bajtarsaknak szinten.
  1. <?php  
  2. include("config.php");  
  3. @mysql_connect($dbhost,$dbuser,$dbpass);  
  4. @mysql_select_db($dbname);  
  5.   
  6.  if ( isset($_REQUEST['news']) ) {  
  7.     $news=$_REQUEST['news'];  
  8.  }  
  9.   
  10. $result = mysql_query("SELECT * FROM ".$table." order by submitted desc");  
  11. $num_rows = mysql_num_rows($result);  
  12. $date = array();  
  13. $i = 1;  
  14. $monthn = array("01"=>"January""02"=>"February""03"=>"March""04"=>"April""05"=>"May""06"=>"June""07"=>"July""08"=>"August""09"=>"September""10"=>"October""11"=>"November""12"=>"December");  
  15.   
  16. //only the selected days  
  17.     if ($news) {  
  18.   
  19. $results = mysql_query ("select * from $table where submitted like '$news%'");  
  20.   
  21.         if ($news=="archive") { echo "<div class=newstext>Please select the Month</div><br>"; };  
  22.         while ($row = mysql_fetch_assoc($results))  {  
  23.                     if ($i<$onpage*3) {  
  24. //                      echo "1<br>";  
  25.                         $mf=explode("-",$row['submitted']);  
  26.                         $monthformat=$mf[1]."-".$mf[2]."-".$mf[0];  
  27.                         $content_href=$row['titlelink']." target=_new";  
  28.                         echo "<a name=news".$row['id']."><br><div class=newsdate>".$row['submitted']." </div><a class=newstitle href=".$content_href.">".$row['title']."</a><br>";  
  29. //                      echo "2<br>";  
  30.                         echo "<div class=newstext>".nl2br($row['content'])."</div><br><hr>";  
  31.                     }  
  32.                     $i++;  
  33.         };  
  34.         //footer daylinks  
  35.         while ($row = mysql_fetch_assoc($result))   {  
  36.             $dates2=$row['submitted'];  
  37.             $date2[]=$dates2;  
  38.         }  
  39.   
  40. //      if ($news!="archive") {echo "Days | ";};  
  41.   
  42. /*      $i=0; 
  43.         $dateu2=array_unique($date2); 
  44.         foreach($dateu2 as $elem) { 
  45.             $explode = explode('-',$elem); 
  46.             if($explode[1] == substr($news, 5, 2)) { 
  47.                 $dateu2n[] = $elem; 
  48.             } 
  49.         } 
  50.  
  51.         foreach ($dateu2n as $asd2) { 
  52.             if ($asd2!= "") { 
  53.                 if ($news == $asd2) { 
  54.                     echo "<a>"; 
  55.                     echo substr($asd2, 8, 2).". "; 
  56.                     echo "</a> | "; 
  57.                 } else { 
  58.                     echo "<a href=?news=".$asd2.">"; 
  59.                     echo substr($asd2, 8, 2).". "; 
  60.                     echo "</a> | "; 
  61.                 } 
  62.             } 
  63.             $i++; 
  64.         }; 
  65. */ // thats no more important but i leave in, working  
  66.         $i=0;  
  67.             $dateu = array_values(array_unique($date2));  
  68.         $dateno=array_count_values($dateu);  
  69.         $date_array=array();  
  70.         foreach ($dateno as $asd)   {  
  71.             $date_array_element = substr($dateu[$i], 0, 7);  
  72.             $date_array[] = $date_array_element;  
  73.             $i++;  
  74.         }  
  75.   
  76.         $month = array_unique($date_array);  
  77.         echo "<br><hr>Monthly Archive | ";  
  78.         $i=0;  
  79.         foreach ($dateno as $asd2) {  
  80.             if ($month[$i]!= "") {  
  81.                 if (substr($news, 0, 7) == $month[$i]) {  
  82.                     echo "<a>";  
  83.                     $mf=explode("-",$month[$i]);  
  84.                     $monthformat=$mf[1]."-".$mf[0];  
  85.                     echo str_replace(substr($monthformat, 0, 2),$monthn[substr($monthformat, 0, 2)],str_replace('-','. ',$monthformat));  
  86.                     echo "</a> | ";  
  87.                 } else {  
  88.                     echo "<a href=?news=".str_replace('. ','',substr($dateu[$i],0,7)).">";  
  89.                     $mf=explode("-",$month[$i]);  
  90.                     $monthformat=$mf[1]."-".$mf[0];  
  91.                     echo str_replace(substr($monthformat, 0, 2),$monthn[substr($monthformat, 0, 2)],str_replace('-','. ',$monthformat));  
  92.                     echo "</a> | ";  
  93.                 }  
  94.             }  
  95.             $i++;  
  96.         }  
  97.   
  98.         } else {  
  99.   
  100.         //first 20 news + 20 titles  
  101.             while ($row = mysql_fetch_assoc($result))   {  
  102.   
  103.                         if ($i<$onpage*3) {  
  104. //                      echo "1<br>";  
  105.                         $mf=explode("-",$row['submitted']);  
  106.                         $monthformat=$mf[1]."-".$mf[2]."-".$mf[0];  
  107.                         $content_href = "?news=".substr($row['submitted'],0,7)."#news".$row['id'];  
  108.                         if ($i<$onpage) { $content_href=$row['titlelink']." target=_new"; };  
  109.                         echo "<a name=news".$row['id']."><br><div class=newsdate>".$row['submitted']." </div><a class=newstitle href=".$content_href.">".$row['title']."</a><br>";  
  110.                         if ($i<$onpage) {  
  111. //                              echo "2<br>";  
  112.                             echo "<div class=newstext>".nl2br($row['content'])."</div><br><hr>";  
  113.                         }  
  114.   
  115.                     } else {  
  116.                         $dates=$row['submitted'];  
  117.                         $date[]=$dates;  
  118.                         }  
  119.                         $i++;  
  120.         }  
  121.     }  
  122.   
  123.         $i=0;  
  124.         $dateu = array_values(array_unique($date));  
  125.         $dateno=array_count_values($dateu);  
  126.         $date_array=array();  
  127.         foreach ($dateno as $asd)   {  
  128.             $date_array_element = substr($dateu[$i], 0, 7);  
  129.             $date_array[] = $date_array_element;  
  130.             $i++;  
  131.         }  
  132.   
  133.     if (!$news){  
  134.         $month = array_unique($date_array);  
  135.         echo "<br><hr>Monthly Archive | ";  
  136.         $i=0;  
  137.         foreach ($dateno as $asd2) {  
  138.             if ($month[$i]!= "") {  
  139.                 if (substr($news, 0, 7) == $month[$i]) {  
  140.                     echo "<a>";  
  141.                     $mf=explode("-",$month[$i]);  
  142.                     $monthformat=$mf[1]."-".$mf[0];  
  143.                     echo str_replace(substr($monthformat, 0, 2),$monthn[substr($monthformat, 0, 2)],str_replace('-','. ',$monthformat));  
  144.                     echo "</a> | ";  
  145.                 } else {  
  146.                     echo "<a href=?news=".str_replace('. ','',substr($dateu[$i],0,7)).">";  
  147.                     $mf=explode("-",$month[$i]);  
  148.                     $monthformat=$mf[1]."-".$mf[0];  
  149.                     echo str_replace(substr($monthformat, 0, 2),$monthn[substr($monthformat, 0, 2)],str_replace('-','. ',$monthformat));  
  150.                     echo "</a> | ";  
  151.                 }  
  152.             }  
  153.             $i++;  
  154.         }  
  155.     }  
  156. ?>