Chiamata di una funzione che contenga un array

mediasteno

Utente Attivo
25 Gen 2010
120
0
0
Ho difficoltà a capire come impostare la funzione di una SELECT e la sua chiamata.
Per estrarre i dati dal database utilizzo una SELECT
PHP:
$iniziativa = "SELECT eventi.*, edizione.*,location.luogo,location.citta, location.descrizione, location.img FROM eventi
LEFT JOIN edizione ON eventi.id = edizione.id_evento 
LEFT JOIN location ON edizione.id_location = location.id 
WHERE eventi.nome LIKE '$manifestazione' LIMIT 0,1"; 
$sql_evento = mysql_query("$iniziativa",$link) or die("Errore query database: ".mysql_error()); 
if(mysql_num_rows($sql_evento) < 1) {echo "Non &egrave; stato trovato nessun evento!";} 
                       else 
                       { 
                           while ($row = mysql_fetch_array($sql_evento)) 
                           { 
                              $num_id = ($row['id']); 
                              $titolo_evento = stripslashes($row['titolo_evento']); 
                              $sottotitolo = stripslashes($row['sottotitolo']); 
                              $datainiz = date("d-m-Y", $row['datainizio']); 
                              $datafin = date("d-m-Y", $row['datafine']); 
                              $luogo = stripslashes($row['luogo']); 
                              $citta = stripslashes($row['citta']); 
                              $descrizione = stripslashes($row['descrizione']); 
                              $obiettivo = stripslashes($row['obiettivo']); 
                              $programma = stripslashes($row['programma']); 
                              $linkgalleria = stripslashes($row['linkgalleria']); 
                              $img_location = stripslashes($row['img']); 
                              $id_loc = ($row['id_location']);   
....

Ora vorrei inserire questa SELECT in una funzione function evento ($manifestazione) {...}.
La mia difficoltà sta nel capire come devo impostare la funzione e richiamare la funzione in modo tale da poter recuperare i valori dell'array singolarmente e poterli inserire in diverse parti della pagina permettendo la stampa dei vari elementi dell'array.
 
Ultima modifica:
Nessuna risposta? :crying:
Praticamente io devo ottenere la stessa cosa che ho impostando il codice nel seguente modo:
PHP:
<?php
  if (isset($_GET['evento']))
  {
    $manifestazione = ($_GET['evento']);
            require 'connessione.php';
            $iniziativa = "SELECT eventi.*, edizione.*,location.luogo,location.citta, location.descrizione, location.img FROM eventi
                           LEFT JOIN edizione ON eventi.id = edizione.id_evento
                           LEFT JOIN location ON edizione.id_location = location.id
                           WHERE eventi.nome LIKE '$manifestazione' LIMIT 0,1";
                      $sql_evento = mysql_query("$iniziativa",$link) or die("Errore query database: ".mysql_error());
                      if(mysql_num_rows($sql_evento) < 1) {echo "Non &egrave; stato trovato nessun evento!";}
                       else
                       {
                           while ($row = mysql_fetch_array($sql_evento))
                           {
                              $num_id = ($row['id']);
                              $titolo_evento = stripslashes($row['titolo_evento']);
                              $sottotitolo = stripslashes($row['sottotitolo']);
                              $datainiz = date("d-m-Y", $row['datainizio']);
                              $datafin = date("d-m-Y", $row['datafine']);
                              $luogo = stripslashes($row['luogo']);
                              $citta = stripslashes($row['citta']);
                              $descrizione = stripslashes($row['descrizione']);
                              $obiettivo = stripslashes($row['obiettivo']);
                              $programma = stripslashes($row['programma']);
                              $linkgalleria = stripslashes($row['linkgalleria']);
                              $img_location = stripslashes($row['img']);
                              $id_loc = ($row['id_location']);
?>
<div id="content">
        <div class="post">
		<h2 class="title"><?php echo $titolo_evento; ?></h2>
		<p class="meta"><?php  echo $sottotitolo ?></p>
		...
        </div>

        <div class="post">
                 <h3>Obiettivo</h3>
             <div class="entry">
                   <p>
                      <?php
                        $intro = intro($manifestazione,$obiettivo,obiettivo);
                        echo ("$intro");
                      ?>
                   </p>
	      </div>
	</div>
...
</div>
<?php
}
                               }
                       }
?>


ma inserendo la SELECT in una funzione, in modo tale che non devo ripetere il codice per tutte le pagine ma effettuo la CHIAMATA ALLA FUNZIONE passando come argomento $manifestazione.

Ho provato con LIST ma senza risultato. Non sono brava con gli array :(
 
Prova in questo modo:
PHP:
function evento($manifestazione)
{
    $sql = "SELECT eventi.*, edizione.*,location.luogo,location.citta, location.descrizione, location.img FROM eventi
    LEFT JOIN edizione ON eventi.id = edizione.id_evento
    LEFT JOIN location ON edizione.id_location = location.id
    WHERE eventi.nome LIKE '{$manifestazione}' LIMIT 1";
    $query = mysql_query($sql) or die(sprintf('Errore del database: "%s".', mysql_error()));

    if (mysql_num_rows($query) == 0) {
        return false;
    }
    
    $row = mysql_fetch_assoc($query);

    foreach ($row as $key => $value) {
        $row[$key] = stripslashes($value);
    }

    return $row;
}
Restituisce false se nessun evento è stato trovato, oppure un array contenente i dati dell'evento.
 
a questo punto ho il problema di come posso stampare i vari elementi dell'array. Nella mia pagina devo richiamare la funzione e stampare a video i vari elementi dell'array in diversi punti
 
Ah grazie! io non mettevo le graffe e non ottenevo alcun risultato. Ho adattato il codice alla mia pagina ed ora ho risolto tutto. Grazie
 
ciao, e se la select contenesse molti valori, esempio 10!!! come le visualizzavamo nella pagina?
 
ciao
se non ho capito male, ecco un esempio

PHP:
<?php
//...
$result = mysqli_query($link, "SELECT * FROM tua_tabella");//ipotizziamo due campi campo_1 e campo_2
if(mysqli_num_rows($result)==0){
	echo "nessun record";
}else{
	echo "<table><tr><th>Campo 1</th><th>Campo 2</th></tr>";
	while ($row = mysqli_fetch_assoc($result)) {//e qui stampi i campi dei vari record
		echo "<tr><td>{$row['campo_1']}</td><td>{$row['campo_2']}</td></tr>";
	}
	echo "</table>";
}
//...
?>
 
mi spiego... ho due file:

1° file con la funzione che mi fa la query:

PHP:
function clienti_lista(){
		$con=connetti();
		
		$sql='SELECT * FROM `tabella`';
		if ($num!=0){
			$sql.='  LIMIT 0 , 10';
		}
		$res=mysql_query($sql) or die(mysql_error());
		if ($res){
			$num=mysql_num_rows($res);
			if ($num!=1){
				return 0;
			}
			$cnt = 0;
			$data = array();
			while($row =  mysql_fetch_array($res)){
				$data[$cnt]['nominativo']=$row['0'];
				$data[$cnt]['indirizzo']=$row['1'];
				
                $cnt++;
			}

			return $date;

secondo file dove vado a chiamarmi la funzione e visualizzare i contnuti:

PHP:
<?php 
												
$data = clienti_lista();
foreach ($data as $riga) {
echo "<tr>
<td><a href='#'>".$riga['nominativo']."</td>
<td><span class='label label-important'>waiting</span></td>
</tr> ";
 }
?>

solo che mi dà un errore nel foreach
 
Ultima modifica di un moderatore:
si

PHP:
<?php
	function clienti_lista($num=0,$start=0){
		$con=connetti();
		
		$sql='SELECT NOMINATIVO,INDIRIZZO FROM `tabella`';
		if ($num!=0){
			$sql.='  LIMIT $start , $num';
		}
		$res=mysql_query($sql) or die(mysql_error());
		if ($res){
			$num=mysql_num_rows($res);
			if ($num!=1){
				return 0;
			}
			$cnt = 0;
			$data = array();
			while($row =  mysql_fetch_array($res)){
				$data[$cnt]['nominativo']=$row['0'];
				$data[$cnt]['indirizzo']=$row['1'];
				
                $cnt++;
			}

			return $date;
			disconnetti($con);
		}else{
			disconnetti($con);
			return 0;
		}
		
	}
?>
 
Ultima modifica di un moderatore:
ciao
ho dato un occhio e secondo, se non hai sbagliato nel copy/paste, valorizzi l'array $data e fai il return con $date
PHP:
<?php
//....
$cnt = 0;
$data = array();
            while($row =  mysql_fetch_array($res)){
                $data[$cnt]['nominativo']=$row['0'];
                $data[$cnt]['indirizzo']=$row['1'];
                $cnt++;
            }

            return $date;//qui dovrebbe essere return $data;
            disconnetti($con);//questa non viene mai eseguita
//....
?>
poi l'istruzione disconetti posta li non viene mai eseguita, col return esce, a parte che non servirebbe ci pensa php a chiudere quando serve.
ultimo, dulcis in fundo, abbandona le vecchie istruzioni mysql deprecate e passa a mysqli o alla classe pdo
 

Discussioni simili