[PHP] associare immagine ad un array

  • Creatore Discussione Creatore Discussione Punix
  • Data di inizio Data di inizio

Punix

Nuovo Utente
20 Feb 2017
13
1
3
34
salve, ho creato un piccolo box di news dove mi vengono restituite notizie riguardanti eventuali compleanni ..

PHP:
<?php
// HERE add your data for connecting to MySQ database
$host = 'XXXX';           // MySQL server address
$user = 'XXXX';                // User name
$pass = 'XXXX';            // User`s password
$dbname = 'XXXXXX';          // Database name

// connect to the MySQL server
$conn = new mysqli($host, $user, $pass, $dbname);

// check connection
if (mysqli_connect_errno()) exit('Connect failed: '. mysqli_connect_error());

$oggi=date("d-m-Y");;//leggi la data atuale, attento = a come è scritta in tabella

//interroghi il db
$query="SELECT username,sesso FROM users WHERE date_format(compleanno,'%d %m') = date_format(curdate(),'%d %m');";
$ris=mysqli_query($conn, $query);

echo "<table class='bordered' style='margin:30px auto;'>
                <tr>
                <td>
                <center>
                <img src='images/news.gif' width='300' height='60'>
                <br><br>
                </center>


<div class='marquee up'><p>";

//e estrai i nomi degli utenti che compiono gli anni $oggi
while($riga=mysqli_fetch_assoc($ris)){
    $utenti[]=$riga['username'];
    $sesso=$riga['sesso'];
    
}
//se nessun utente compie gli anni
if (count($utenti) == 0) {
echo $oggi.": Oggi nessun utente compie gli anni.";
}else{


//controllo sesso utente e attribuisco immagine in base al sesso
if ($sesso == 'Uomo') {   
$img='<img src="images/uomo_s.png" width="15px" height="25px">';
}else{
$img='<img src="images/donna_s.png" width="25px" height="25px">';
}

//raggruppi i nomi
$compleanni_di_oggi=implode("<img src ='".$img."'><font color='white'>,</font> ",$utenti);//diventa es. Attenzio, Pancrazio


    
//e fai gli auguri
ob_start();
echo $oggi.": L'utente <font color='red'>$compleanni_di_oggi</font> oggi compie gli anni. <i>Intorno le ore 12:00 vi arriver&agrave; un e-mail di auguri (al 100% la troverete nella posta indesiderata o SPAM)</i>, ancora Tanti Auguri!!<img src='images/auguri.gif' width='30px' height='30px'>";
$out1 = ob_get_contents();
ob_end_clean();

//controllo numero utenti che compiono gli anni e modifico l echo di auguri in plurale o singolare
if (count($utenti) == 1) {
echo "$out1";
}
else{
$cerca = array("L'utente","compie");
$sostituisci = array("Gli utenti","compiono");
echo str_replace($cerca, $sostituisci, $out1);
}
}
echo "</p></div></td></tr></table>";
?>

il mio problema è che vorrei associare agli username che mi vengono restituiti come array un immagine in base al sesso , in modo tale che mi viene restituito username e immagine accostata...ho provato ad inserire quel tag img dentro l implode , ma nulla, ottengo solo un immagine danneggiata per ogni utente, e l ultimo utente che compie gli anni (in caso di piu utenti che compiono gli anni) dato che non è seguito dalla virgola non mi da nessuna immagine... spero di essermi spiegato bene cosa intendo fare ..qualcuno saprebbe dirmi come rimediare?
 
Per fare un debug più veloce puoi postare l'output in html? Da lì ti renti subito conto del perchè non visualizza l'immagine
 
Per il problema con l'immagine devi modificare questa riga:

PHP:
$compleanni_di_oggi=implode("<img src ='".$img."'><font color='white'>,</font> ",$utenti);//diventa es. Attenzio, Pancrazio
diventa
PHP:
$compleanni_di_oggi=implode($img."><font color='white'>,</font> ",$utenti);//diventa es. Attenzio, Pancrazio

Ma nel codice ci sono anche altri problemi...
Per esempio, nella variabile img c'è l'immagine relativa all'ultimo utente, ma utilizzando implode viene utilizzata per tutti.
Dovresti utilizzare un ciclo.

edit: potresti fare qualcosa tipo così:
PHP:
<?php
// HERE add your data for connecting to MySQ database
$host = 'XXXX';           // MySQL server address
$user = 'XXXX';           // User name
$pass = 'XXXX';           // User`s password
$dbname = 'XXXXXX';       // Database name

// connect to the MySQL server
$conn = new mysqli($host, $user, $pass, $dbname);

// check connection
if (mysqli_connect_errno()) exit('Connect failed: '. mysqli_connect_error());

$oggi=date("d-m-Y");;//leggi la data atuale, attento = a come è scritta in tabella

//interroghi il db
$query="SELECT username,sesso FROM users WHERE date_format(compleanno,'%d %m') = date_format(curdate(),'%d %m');";
$ris=mysqli_query($conn, $query);

echo "<table class='bordered' style='margin:30px auto;'>
                <tr>
                <td>
                <center>
                <img src='images/news.gif' width='300' height='60'>
                <br><br>
                </center>
<div class='marquee up'><p>";

//e estrai i nomi degli utenti che compiono gli anni $oggi
if (mysqli_num_rows($ris)==0) {
   echo $oggi.": Oggi nessun utente compie gli anni.";
}
elseif (mysqli_num_rows($ris)==1) {
   $riga=mysqli_fetch_assoc($ris);
   $utente = $riga['username'];
   $sesso = $riga['sesso'];
   if ($sesso == 'Uomo') {   
       $img='<img src="images/uomo_s.png" width="15px" height="25px">';
   }
   else {
       $img='<img src="images/donna_s.png" width="25px" height="25px">';
   }
   echo $oggi.": L'utente $img <font color='red'>$utente</font> oggi compie gli anni. <i>Intorno le ore 12:00 vi arriver&agrave; un e-mail di auguri (al 100% la troverete nella posta indesiderata o SPAM)</i>, ancora Tanti Auguri!!<img src='images/auguri.gif' width='30px' height='30px'>";
}
else {
   echo $oggi.": Gli utenti ";
   $utenti = "";
   while($riga=mysqli_fetch_assoc($ris)){
       $utente = $riga['username'];
       $sesso = $riga['sesso'];
       if ($sesso == 'Uomo') {   
           $img='<img src="images/uomo_s.png" width="15px" height="25px">';
       }
       else {
           $img='<img src="images/donna_s.png" width="25px" height="25px">';
       }
       $utenti .= "$img <font color='red'>$utente</font>, ";
   }
   echo substr($utenti, 0, -2);
   echo " oggi compiono gli anni. <i>Intorno le ore 12:00 vi arriver&agrave; un e-mail di auguri (al 100% la troverete nella posta indesiderata o SPAM)</i>, ancora Tanti Auguri!!<img src='images/auguri.gif' width='30px' height='30px'>";
}

echo "</p></div></td></tr></table>";
?>
 
Ultima modifica:
  • Like
Reactions: Punix
Per il problema con l'immagine devi modificare questa riga:

PHP:
$compleanni_di_oggi=implode("<img src ='".$img."'><font color='white'>,</font> ",$utenti);//diventa es. Attenzio, Pancrazio
diventa
PHP:
$compleanni_di_oggi=implode($img."><font color='white'>,</font> ",$utenti);//diventa es. Attenzio, Pancrazio

Ma nel codice ci sono anche altri problemi...
Per esempio, nella variabile img c'è l'immagine relativa all'ultimo utente, ma utilizzando implode viene utilizzata per tutti.
Dovresti utilizzare un ciclo.

edit: potresti fare qualcosa tipo così:
PHP:
<?php
// HERE add your data for connecting to MySQ database
$host = 'XXXX';           // MySQL server address
$user = 'XXXX';           // User name
$pass = 'XXXX';           // User`s password
$dbname = 'XXXXXX';       // Database name

// connect to the MySQL server
$conn = new mysqli($host, $user, $pass, $dbname);

// check connection
if (mysqli_connect_errno()) exit('Connect failed: '. mysqli_connect_error());

$oggi=date("d-m-Y");;//leggi la data atuale, attento = a come è scritta in tabella

//interroghi il db
$query="SELECT username,sesso FROM users WHERE date_format(compleanno,'%d %m') = date_format(curdate(),'%d %m');";
$ris=mysqli_query($conn, $query);

echo "<table class='bordered' style='margin:30px auto;'>
                <tr>
                <td>
                <center>
                <img src='images/news.gif' width='300' height='60'>
                <br><br>
                </center>
<div class='marquee up'><p>";

//e estrai i nomi degli utenti che compiono gli anni $oggi
if (mysqli_num_rows($ris)==0) {
   echo $oggi.": Oggi nessun utente compie gli anni.";
}
elseif (mysqli_num_rows($ris)==1) {
   $riga=mysqli_fetch_assoc($ris);
   $utente = $riga['username'];
   $sesso = $riga['sesso'];
   if ($sesso == 'Uomo') {  
       $img='<img src="images/uomo_s.png" width="15px" height="25px">';
   }
   else {
       $img='<img src="images/donna_s.png" width="25px" height="25px">';
   }
   echo $oggi.": L'utente $img <font color='red'>$utente</font> oggi compie gli anni. <i>Intorno le ore 12:00 vi arriver&agrave; un e-mail di auguri (al 100% la troverete nella posta indesiderata o SPAM)</i>, ancora Tanti Auguri!!<img src='images/auguri.gif' width='30px' height='30px'>";
}
else {
   echo $oggi.": Gli utenti ";
   $utenti = "";
   while($riga=mysqli_fetch_assoc($ris)){
       $utente = $riga['username'];
       $sesso = $riga['sesso'];
       if ($sesso == 'Uomo') {  
           $img='<img src="images/uomo_s.png" width="15px" height="25px">';
       }
       else {
           $img='<img src="images/donna_s.png" width="25px" height="25px">';
       }
       $utenti .= "$img <font color='red'>$utente</font>, ";
   }
   echo substr($utenti, 0, -2);
   echo " oggi compiono gli anni. <i>Intorno le ore 12:00 vi arriver&agrave; un e-mail di auguri (al 100% la troverete nella posta indesiderata o SPAM)</i>, ancora Tanti Auguri!!<img src='images/auguri.gif' width='30px' height='30px'>";
}

echo "</p></div></td></tr></table>";
?>

Perfettissimo quello che volevo.... mille like per te... alla prossima!!
 
  • Like
Reactions: livellacri
salve son sempre io...
PHP:
<?php
// HERE add your data for connecting to MySQ database
$host = 'XXXX';           // MySQL server address
$user = 'XXXX';                // User name
$pass = 'XXXX';            // User`s password
$dbname = 'XXXX';          // Database name


// connect to the MySQL server
$conn = new mysqli($host, $user, $pass, $dbname);

// check connection
if (mysqli_connect_errno()) exit('Connect failed: '. mysqli_connect_error());

$oggi=date("d-m-Y");;//leggi la data atuale, attento = a come è scritta in tabella

//interroghi il db
$query="SELECT username,sesso FROM users WHERE date_format(compleanno,'%d %m') = date_format(curdate(),'%d %m');";
$ris=mysqli_query($conn, $query);

echo "<table class='bordered' style='margin:30px auto;'>
                <tr>
                <td>
                <center>
                <img src='images/news.gif' width='300' height='60'>
                <br><br>
                </center>
<div class='marquee up'><p>";

//e estrai i nomi degli utenti che compiono gli anni $oggi
if (mysqli_num_rows($ris)==0) {
   echo "<font color='red'>$oggi</font> : Oggi nessun utente compie gli anni.";
}
elseif (mysqli_num_rows($ris)==1) {
   $riga=mysqli_fetch_assoc($ris);
   $utente = $riga['username'];
   $sesso = $riga['sesso'];
   if ($sesso == 'Uomo') {   
       $img='<img src="images/uomo_s.png" width="15px" height="25px">';
   }
   else {
       $img='<img src="images/donna_s.png" width="25px" height="25px">';
   }
   echo "<font color='red'>$oggi</font> : L'utente $img <font color='red'>$utente</font> oggi compie gli anni. <i>Intorno le ore 12:00 vi arriver&agrave; un e-mail di auguri (al 100% la troverete nella posta indesiderata o SPAM)</i>, ancora Tanti Auguri!!<img src='images/auguri.gif' width='30px' height='30px'>";
}
else {
   echo "<font color='red'>$oggi</font> : Gli utenti ";
   $utenti = "";
   while($riga=mysqli_fetch_assoc($ris)){
       $utente = $riga['username'];
       $sesso = $riga['sesso'];
       if ($sesso == 'Uomo') {   
           $img='<img src="images/uomo_s.png" width="15px" height="25px">';
       }
       else {
           $img='<img src="images/donna_s.png" width="25px" height="25px">';
       }
       $utenti .= "$img <font color='red'>$utente</font>, ";
   }
   echo substr($utenti, 0, -2);
   echo " oggi compiono gli anni. <i>Intorno le ore 12:00 vi arriver&agrave; un e-mail di auguri (al 100% la troverete nella posta indesiderata o SPAM)</i>, ancora Tanti Auguri!!<img src='images/auguri.gif' width='30px' height='30px'>";
}

echo "</p><p>";


$query2="SELECT username,DATE_FORMAT(`data_reg`,'%d/%m/%Y - %H:%i') AS `data_reg`  FROM users ORDER BY id DESC LIMIT 0,1";
$ris2=mysqli_query($conn, $query2);

if (mysqli_num_rows($ris2)==1) {
   $riga2=mysqli_fetch_assoc($ris2);
   $utente1 = $riga2['username'];
   $data = $riga2['data_reg'];

echo " <font color='red'>$data</font> : L'utente <font color='red'>$utente1</font> &egrave; l&grave;ultimo utente registrato. Benvenuto!! <img src='images/welcome.gif' width='60px' height='60px'> ";

}


echo "</p></div></td></tr></table>";
?>

come potete vedere ho aggiunto un altra cosetta allo script (seleziono momento di registrazione e nome ) dell ultimo utente registrato e stampo a video...


adesso vorrei aggiungere altri 2 messaggi al box di news...
vorrei che nel momento in cui un utente logga al mio sito mi venga restituito un messaggio nel box del tipo:

26/07/2017 - 20:05 L'utente XXX si è loggato.

e nel momento in cui un utente slogga:

26/07/2017 - 20:05 L'utente XXX si è sloggato.

le funzioni che si occupano di gestire lo stato utente ,login e logout si trovano all interno di un altro file php che io chiamo user.class.php.

PHP:
 /***********************************
        VERIFICA DELLO STATO DI LOGIN UTENTE
        ***********************************/ 
          
        // verifica login 
        public function is_logged(){ 
            return isset($_SESSION['auth']); 
            } 
          
        // set login 
        protected function set_logged($id_user){ 
            $_SESSION['auth'] = $id_user; 
            return; 
            } 
          
        // access denied 
        public function access_denied(){ 
            if(!$this->is_logged()){ 
                header("location: ".$this->Urls['login_page']."?message=14"); 
                exit; 
                } 
            return; 
            } 
      
        protected function set_username($username){ 
            $_SESSION['username_logged'] = $username; 
            return; 
            } 
          
        public function get_username(){ 
            return isset($_SESSION['username_logged']) ? $_SESSION['username_logged'] : ''; 
            }     
              
        // logout 
        public function logout(){ 
            session_unset(); 
            session_destroy(); 
            setcookie(session_name(), '', time()-42000, '/'); 
            header("location: ".$this->Urls['login_page']."?message=13"); 
            return; 
            }

dite che è fattibile questa cosa? come posso implementarla?
 

Discussioni simili