Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Aspecte legale https://registratu...

Filtru de apa curata apa de miner...

Unde gasesc borcane mari 5 - litr...

sfat achiziție bicicleta pli...
 NVIDIA Shield Programe Romania IP

Se opreste motorul in mers Golf 5

Probleme cu instalator Casa verde

Linie vinetie mana stanga
 Opriri și reporniri dese

Protectie soare/vizuala in interior

Tratament pt piele..canapea

Buget 19k-masina noua-sfaturi
 Grosime adeziv gresie

TVA doar la valoarea adaugata sau...

Inregistrare ecran

M-am inregistrat in e-factura. Ca...
 

Preluare Array asociativ dintr-o functie care il returneaza

- - - - -
  • Please log in to reply
7 replies to this topic

#1
dianagaby2017

dianagaby2017

    New Member

  • Grup: Junior Members
  • Posts: 5
  • Înscris: 14.02.2018
Buna,
De 2 zile ma straduiesc cu aceasta problema (Google, Youtube). Nu reusesc sa gasesc pe internet exact ce am nevoie, care este ceva simplu-ca idee cel putin. M-am exprimat in mai multe feluri la cautare, dar...
Am o functie care returneaza un Array asociativ in fisierul function_news.php.
In fisierul prev_stiri.php vreau sa il preiau si sa ii pot accesa usor elementele, pe care apoi le voi afisa in pagina. Am creat aici un Array, pe care nu stiu cum sa il accesez element cu elemen sa le afisez in DIV-uri.
Va arat ce am facut pana acum:
function_news.php:
Pe pagina trebuie sa-mi apara stirile in ordinea id-urilor lor: exemplu 1569, 1568, 1567, 1566, ..., 1557. Sa fie 13 afisate.
Functia aceasta face ce trebuie - va returna id-urile (care CONTIN o stire, deci ID-uri care sunt prezente in baza de date). Mi le va returna in ordinea inversa citirii, cum am nevoie: 1569, 1568, 1567, 1566, ..., 1557 (intrucat, la cautarea in baza, query-ul le va citi invers: 1557, 1558, 1558, ..., 1569).
Functia aceasta e OK:
function display_prev_news($id){
		 
	global $con; 
	$row_exist = 0;
	$row_count = 0;
	$id_stiri = array();
	$i = 0;
 
	do{
			 
	$sql_stire = "SELECT `id_stire` FROM `news` WHERE `id_stire` = '$id'";
 
	$result_row = mysqli_query($con, $sql_stire);
 
	$row_exist = mysqli_num_rows($result_row);
 
	/* Daca exista stire cu id-ul "$id", este memorat id-ul "$id" in
	array-ul de id-uri, "$id_stiri" */
	if($row_exist){
		$id_stiri[$i++] = $id;
	 
		$row_count++;//daca exista stire cu id-ul "$id", este numarata de acest contor
		//echo 'id: '.$id[$i++].'<br><br>'; //ok
		}
	 
	$id++; //mergi la urmatorul ID
 
	mysqli_free_result($result_row);
	 
	//echo 'id: '.$id.'<br>'; ok
 
	}while($row_count <= 12);//END WHILE
 
 
	//se sorteaza array-ul "$id_stiri" in ordine DESCRECATOARE
	rsort($id_stiri);
	 
	return $id_stiri;
}

________________________________________________________________________________________
Si aceasta functie returneaza corect Array-ul asociativ:
Tot din function_news.php:
function display_next_news($id){
global $con;
$sql_stire = "SELECT * FROM `news` WHERE `id_stire` = '$id'";
$result_row = mysqli_query($con, $sql_stire);
$row_stire = mysqli_fetch_assoc($result_row);
$id_stire = $row_stire['id_stire'];
$data_stire_bd = $row_stire['data_stire']; //in formatul din BD: YYYY-MM-DD
$nume_stire = $row_stire['nume_stire'];
$continut_stire = $row_stire['continut_stire'];
$poze_stire = $row_stire['poze_stire'];
$poze_stire2 = $row_stire['poze_stire2'];
$poze_stire3 = $row_stire['poze_stire3'];
$poze_stire4= $row_stire['poze_stire4'];
$poze_stire5 = $row_stire['poze_stire5'];
$poze_stire6 = $row_stire['poze_stire6'];
$poze_stire7 = $row_stire['poze_stire7'];
$poze_stire8 = $row_stire['poze_stire8'];
$poze_stire9 = $row_stire['poze_stire9'];
$poze_stire10 = $row_stire['poze_stire10'];
$poze_stire11 = $row_stire['poze_stire11'];
$poze_stire12 = $row_stire['poze_stire12'];
$poze_stire13 = $row_stire['poze_stire13'];
$poze_stire14 = $row_stire['poze_stire14'];
$poze_stire15 = $row_stire['poze_stire15'];
$poze_stire16 = $row_stire['poze_stire16'];
$poze_stire17 = $row_stire['poze_stire17'];
$stire_pdf = $row_stire['varianta_pdf'];
//$stire_importanta = $row_stire['stire_importanta']; // valoarea "1" daca e importanta, valoarea "0" daca nu
 
//formatul acceptat in MySQL(aaaa-ll-zz)=> aici se transforma in format zz-ll-aaaa
  $an = substr($data_stire_bd, 0, 4);
  $luna = substr($data_stire_bd, 5, 2);
  $ziua = substr($data_stire_bd, 8, 2);
  $data_pe_site = $ziua.'.'.$luna.'.'.$an;
//end transformare format data ...................................................
if($id_stire){
  $collection = array();
  $collection[] = array('id' => $id_stire, 'data' => $data_pe_site,
'titlu' => $nume_stire, 'continut' => $continut_stire, 'pdf' => $stire_pdf, 'poza_01' => $poze_stire);
return $collection;
  }
}

____________________________________________________________________________________________
Apoi, fisierul in prev_stiri.php ma incurc. As vrea sa preiau din functia display_next_news() fiecare rand / fiecare stire intr-un array asociativ, de exemplu $stire, caruia sa ii afisez fiecare element in DIV-ul meu: $stire['pdf'], $stire['id'], $stire['continut'], ...
<div id="stire">
	  
   <?php
 
	  $news_ids = array();
	  $news_ids = display_prev_news($last_id_stire);
	
	  $lung_id_array = count($news_ids);
	  $collection = array();//array ce va contine o inregistrare din BD
	
	
	  /* for($i = 0; $i < $lung_id_array; $i++){
		  echo 'id: '.$news_ids[$i].'<br>';
	  }*/
	
	  for($i = 0; $i < $lung_id_array; $i++){
		  $current_id = $news_ids[$i];
		  $collection[$i] = display_next_news($current_id); 
}

/* 
  print_r($collection);
$col_size = count($collection);
echo 'col size: '.$col_size;
echo '<br><br>';
*/

  ?>
   <!-- de aici in colo, codul ar merge, daca ARRAY-ul ar fi corect, aceasta secventa fiind preluata din alt fisier --> 
			  
   <div class="titlu_stire">
	<?php if($stire['pdf']){ ?>
	 <a href="fisiere/<?php echo $stire['pdf']; ?>" target="_blank">
	  <?php echo $stire['titlu']; ?>
					</a>
	<?php } else {?>
	  <a href="continut_stire_next_10.php?id=<?php echo $stire['id']; ?>">
	   <?php echo $stire['titlu']; ?>
						</a>
	 <?php }?>
   
   </div><!-- END DIV class="titlu_stire" -->
<!------------------------------------------------------------------------------------------------------->  
   <div class="data_stire">
					<?php echo $stire['data'];?>
			</div><!-- END DIV class="data_stire" -->
<!------------------------------------------------------------------------------------------------------->
<?php if(trim($stire['poza_01']=='')){
					$poza = "primaria.JPG";
					}else{
					 $poza = $stire['poza_01'];
	  }//END if ?>

	  
			<div class="poza_stire">
					<img src="poze/<?php echo $poza; ?>" onclick="MM_effectGrowShrink(this, 1000, '100%', '200%', true, false, false)"/>
   </div><!-- END DIV class="poza_stire" -->
  
<!---------------------------------------------------------------------------------------------------------------------------------------------------------->  
	<div class="despre_stire">
	  <?php
						$descriere_stire = substr($stire['continut'], 0, 250)."...";
	
						echo $descriere_stire;?>
					  
	  <?php if($stire_pdf){ ?>
					 <a href="fisiere/<?php echo $stire['pdf']; ?>" target="_blank"><span class="color_detalii">[detalii]</span></a>
	  <?php } else {?>
		 <a href="continut_stire_next_10.php?id=<?php echo $stire['id']; ?>"><span class="color_detalii">[detalii]</span></a>
		<?php }?>
	</div><!-- END DIV class="despre_stire" -->
  
<!------------------------------------------------------------------------------------------------------->  
				<div class="clearfooter"></div>
<!-------------------------------------------------------------------------------------------------------> 
				<div class="linie"></div>	  
<!------------------------------------------------------------------------------------------------------->
	 <?php //}//END FOR ?>

	</div><!-- END DIV id="stire" -->


Va multumesc anticipat!
______________________________________________________________________________________________________________________
P.S. Unde imi functioneaza corect si cam tot asa vreau sa fac si aici, in prev_stiri.php, sa se afiseze, doar ca aici mai prelucrez stirile, ca trebuie sa se afiseze invers, este next_stiri.php -aici apar bine:
next_stiri.php
<div id="stire">
<?php do { ?>
	  
			 <?php
	$lid--;
	$collection = array();//array ce va contine o inregistrare din BD
	$collection = display_next_news($lid);
	//print_r($collection);

  //daca exista o inregistrare in BD cu id-ul "$lid", "$count++" o va numara
  if($collection){
	$count++;
   
	foreach($collection  as $stire) { ?>
  
				   
   <div class="titlu_stire">
	<?php if($stire['pdf']){ ?>
	 <a href="fisiere/<?php echo $stire['pdf']; ?>" target="_blank">
	  <?php echo $stire['titlu']; ?>
					</a>
	<?php } else {?>
	  <a href="continut_stire_next_10.php?id=<?php echo $stire['id']; ?>">
	   <?php echo $stire['titlu']; ?>
						</a>
	 <?php }?>
   
   </div><!-- END DIV class="titlu_stire" -->
<!------------------------------------------------------------------------------------------------------->  
   <div class="data_stire">
					<?php echo $stire['data'];?>
			</div><!-- END DIV class="data_stire" -->
<!------------------------------------------------------------------------------------------------------->
<?php if(trim($stire['poza_01']=='')){
					 $poza = "primaria.JPG";
					}else{
					 $poza = $stire['poza_01'];
	  }//END if ?>

	  
			<div class="poza_stire">
					<img src="poze/<?php echo $poza; ?>" onclick="MM_effectGrowShrink(this, 1000, '100%', '200%', true, false, false)"/>
   </div><!-- END DIV class="poza_stire" -->
  
<!---------------------------------------------------------------------------------------------------------------------------------------------------------->  
	<div class="despre_stire">
	  <?php
						$descriere_stire = substr($stire['continut'], 0, 250)."...";
	
						echo $descriere_stire;?>
					  
	  <?php if($stire_pdf){ ?>
					 <a href="fisiere/<?php echo $stire['pdf']; ?>" target="_blank"><span class="color_detalii">[detalii]</span></a>
	  <?php } else {?>
		 <a href="continut_stire_next_10.php?id=<?php echo $stire['id']; ?>"><span class="color_detalii">[detalii]</span></a>
		<?php }?>
	</div><!-- END DIV class="despre_stire" -->
  
<!------------------------------------------------------------------------------------------------------->  
				<div class="clearfooter"></div>
<!-------------------------------------------------------------------------------------------------------> 
				<div class="linie"></div>	  
<!------------------------------------------------------------------------------------------------------->
   <?php }//END "foreach" ?>
		<?php  } // END "if($collection)" ?>
	 <?php }while($count <= 12); // se afiseaza 13 stiri

   //ID-ul ultimei stiri din pagina anterioara
   $last_id_stire = $stire['id'];

  //echo '<br><br> last_id_stire= '.$last_id_stire.'<br>';   ok
  ?>
  

	</div><!-- END DIV id="stire" -->



#2
andronic312

andronic312

    Member

  • Grup: Members
  • Posts: 902
  • Înscris: 16.01.2009
Ce-ți afișează acel  print_r($collection); de dinainte de:

<!-- de aici in colo, codul ar merge, daca ARRAY-ul ar fi corect, aceasta secventa fiind preluata din alt fisier --> 



#3
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,594
  • Înscris: 30.07.2003

 dianagaby2017, on 15 februarie 2018 - 22:35, said:

Va arat ce am facut pana acum:
Daca vrei sa se uite cat mai multi peste codul tau, nu-l arunci aici cu lopata si zici "bai prostilor, cautati-l pe Neghiniţă". Izolezi problema si postezi partea care nu functioneaza, nu ne intereseaza tot balastul, scrii un cod mic demo ce imita problema ta.

Edited by neagu_laurentiu, 16 February 2018 - 07:56.


#4
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006

 neagu_laurentiu, on 16 februarie 2018 - 07:53, said:


Daca vrei sa se uite cat mai multi peste codul tau, nu-l arunci aici cu lopata si zici "bai prostilor, cautati-l pe Neghiniţă". Izolezi problema si postezi partea care nu functioneaza, nu ne intereseaza tot balastul, scrii un cod mic demo ce imita problema ta.
"Problema" e că dacă face asta, cel mai probabil și înțelege problema pe care o are, și nu mai e nevoie de "proști".

Știu că știi, îi spun lui.

#5
dianagaby2017

dianagaby2017

    New Member

  • Grup: Junior Members
  • Posts: 5
  • Înscris: 14.02.2018

 andronic312, on 16 februarie 2018 - 07:03, said:

Ce-ți afișează acel  print_r($collection); de dinainte de:

<!-- de aici in colo, codul ar merge, daca ARRAY-ul ar fi corect, aceasta secventa fiind preluata din alt fisier -->



Imi apar stirile asa:

Array ( [0] => Array ( [0] => Array ( [id] => 1569 [data] => 19.07.2017 [titlu] => CUPA MONDIAL ....... 2017 [continut] =>
S�mb?t?, 22 iulie, �ntre orele 8.00 - 15.00, .....mente pentru o lun? oferite de sala de sport Power Gym.
[pdf] => [poza_01] => 1569_1.jpg ) )
[1] => Array ( [0] => Array ( [id] => 1568 [data] => 22.06.2017
[titlu] => Festivalul �n aer liber "..... de-a 6-a edi?ie [continut] => Clubul de motocicli?ti ......�n colaborare cu Casa de Cultur? a ......
[pdf] => [poza_01] => 1568_1.jpg ) )
[2] => Array ( [0] => Array ( [id] => 1567 [data] => .. [titlu] => ANUN? 2017 [continut] => Prim?ria ............. to?i cet??enii ?i cresc?torii de albine c? din cauza condi?ilor meteo, lucr?rile aviochimice de dezinsec?ie .......a nu se produce pagube materiale. [pdf] => [poza_01] => ) )
[3] => Array ( [0] => Array ( [id] => 1566 [data] => 06.06.2017 [titlu] => PROGRAM FESTIVALUL INTERNATIONAL ....... iunie 2017 [continut] => 6 iunie, ora 19:00, Casa .............a celei de a 2-a edi?ii a FILC Vernisaj de fotografie [pdf] => [poza_01] => Afis Lugoj Clasic eveniment deschidere.jpg ) )
[4] => Array ( [0] => Array ( [id] => 1565 [data] => 06.06.2017 [titlu] => Festivalul Interna?ional ........ la a II-a edi?ie [continut] => Mar?i, 30 mai, ora 13.00, la sediul Prim?riei ........... conferin?? de pres? sus?inut? de ..........l?ca?uri de cult din municipiu. [pdf] => [poza_01] => Lugoj Clasic afis.jpg ) )


(Am copiat codul in Word si am mai sters din continutul stirilor, ca sa nu scrie atat de mult aici pe site)

Se afiseaza intr-adevar 13 stiri, asa cum vreau. Diacriticile le voi rezolva ultimele.

Ultima stire, cand afisez colectia:

[12] => Array ( [0] => Array ( [id] => 1557 [data] => 03.05.2017 [titlu] => Ațiune de curățenie �n ................ campaniei "Let's Do It Rom�nia!�" [continut] => S�mbătă, 6 mai, �ntre orele 9.00 și 12.00, are loc .......și Parcul Prefecturii. [pdf] => [poza_01] => ) ) )


Iar, la final, afisez nr. de stiri, sa verific ca au fost introduse in $collection 13 stiri. E ok aici:

col size: 13


 neagu_laurentiu, on 16 februarie 2018 - 07:53, said:

Daca vrei sa se uite cat mai multi peste codul tau, nu-l arunci aici cu lopata si zici "bai prostilor, cautati-l pe Neghiniţă". Izolezi problema si postezi partea care nu functioneaza, nu ne intereseaza tot balastul, scrii un cod mic demo ce imita problema ta.


Puteam sa-l atasez mai bine intr-un fisier... da, de acord, partial. Dar pe forumuri s-a mai spus sa arati si ce ai incercat, ca sa nu zica cine citeste ca tu nu ai facut nimic; Eu am aratat si ce merge in ideea ca am reusit intr-o forma sa fac ce voiam si mi-a mers si vreau sa fac ceva similar aici. ;)

Edited by dianagaby2017, 16 February 2018 - 23:12.


#6
dianagaby2017

dianagaby2017

    New Member

  • Grup: Junior Members
  • Posts: 5
  • Înscris: 14.02.2018

 OriginalCopy, on 16 februarie 2018 - 08:40, said:

"Problema" e că dacă face asta, cel mai probabil și înțelege problema pe care o are, și nu mai e nevoie de "proști".

Știu că știi, îi spun lui.


Nu, nu inteleg, de aceea EU sunt proasta nu cei care citesc. Poate e o chichita pe care eu nu o observ.

#7
alx42

alx42

    Senior Member

  • Grup: Senior Members
  • Posts: 2,802
  • Înscris: 26.06.2014
nu m-am uitat pe tot carnatul, dar am vazut ca in display_next_news() faci un array cu un array cu un singur element. n-are sens, probabil vroiai sa returnezi arrayu' associativ direct?!

#8
dianagaby2017

dianagaby2017

    New Member

  • Grup: Junior Members
  • Posts: 5
  • Înscris: 14.02.2018

 alx42, on 18 februarie 2018 - 19:27, said:

nu m-am uitat pe tot carnatul, dar am vazut ca in display_next_news() faci un array cu un array cu un singur element. n-are sens, probabil vroiai sa returnezi arrayu' associativ direct?!

Am rezolvat:

<div id="stire">
	   
   <?php
  
	  $news_ids = array();
	  $news_ids = display_prev_news($last_id_stire);
	 
	  $lung_id_array = count($news_ids); //lungimea array-ului ce contine ID-urile stirilor
	  $news = array();//array ce va contine o inregistrare din BD
	 
  
  
	  for($i = 0; $i < $lung_id_array; $i++){
		  $current_id = $news_ids[$i];
	$news[$i] = display_next_news($current_id); 
   
	$id_stire = $news[$i]['id'];
	$data = $news[$i]['data'];
	$titlu = $news[$i]['titlu'];
	$continut = $news[$i]['continut'];
	$fisier_pdf = $news[$i]['pdf'];
	$poza_01 = $news[$i]['poza_01'];
?>

 
					
   <div class="titlu_stire">
	<?php if($fisier_pdf){ ?>
	 <a href="fisiere/<?php echo $fisier_pdf; ?>" target="_blank">
	  <?php echo $titlu; ?>
					</a>
	<?php } else {?>
	  <a href="continut_stire_next_10.php?id=<?php echo $id_stire; ?>">
	   <?php echo $titlu; ?>
						</a>
	 <?php }?>
	
   </div><!-- END DIV class="titlu_stire" -->
.................................................................................................


Va multumesc oricum pentru timpul acordat Posted Image Posted Image

Anunturi

Bun venit pe Forumul Softpedia!

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate