Sbizzaritevi...secondo voi...questo è un buon codice? (secondo me no...)

secondo voi...questo è un buon codice? (secondo me no...)

<?php 
  require ('db.php');
  $query = "SELECT commenti, telefono, cellulare, fax, mail, msn_mess, skype, aol_mess, gtalk FROM contatti";
  $result = mysql_query($query, $db)or die("Errore di connessione");
         echo "<div id='testo_contatti'>TELEFONO:<br>";
      while($row = mysql_fetch_array($result)){
            echo " $row[telefono]";}
            echo "</div>";
  $result = mysql_query($query, $db)or die("Errore di connessione");
      echo "<div id='testo_contatti'>CELLULARE:<br>";
      while($row = mysql_fetch_array($result)){
            echo " $row[cellulare]";}
            echo "</div>";
  $result = mysql_query($query, $db)or die("Errore di connessione");
      echo "<div id='testo_contatti'>FAX:<br>";
      while($row = mysql_fetch_array($result)){
            echo " $row[fax]";}
            echo "</div>";
  $result = mysql_query($query, $db)or die("Errore di connessione");
            echo "<div id='testo_contatti'>MAIL:<br>";
      while($row = mysql_fetch_array($result)){
            echo " $row[mail]";}
            echo "</div>";
  $result = mysql_query($query, $db)or die("Errore di connessione");
            echo "<div id='testo_contatti'>MSN MESSENGER:<br>";
      while($row = mysql_fetch_array($result)){
            echo " $row[msn_mess]";}
            echo "</div>";
  $result = mysql_query($query, $db)or die("Errore di connessione");
            echo "<div id='testo_contatti'>SKYPE:<br>";
      while($row = mysql_fetch_array($result)){
            echo " $row[skype]";}
            echo "</div>";
  $result = mysql_query($query, $db)or die("Errore di connessione");
            echo "<div id='testo_contatti'>AOL MESSENGER:<br>";
      while($row = mysql_fetch_array($result)){
            echo " $row[aol_mess]";}
            echo "</div>";
  $result = mysql_query($query, $db)or die("Errore di connessione");
            echo "<div id='testo_contatti'>GOOGLE TALK:<br>";
      while($row = mysql_fetch_array($result)){
            echo " $row[gtalk]";}
            echo "</div>";
  ?>

Io ho pensato in molti modi ad ottenere lo stesso risultato...ma niente!

non mi riesce!

che ne dite voi?

inviato 10 anni fa
micdech
modificato 10 anni fa
X 0 X

invece che far eseguire tutte le volte la query potresti far così:

$query = "SELECT commenti, telefono, cellulare, fax, mail, msn_mess, skype, aol_mess, gtalk FROM contatti";
 $result = mysql_query($query, $db)or die("Errore di connessione");
 $array_result = array();
 while($row = mysql_fetch_array($result)){
  $array_result[] = $row;
 }

e per stamparlo :

echo "<div id='testo_contatti'>TELEFONO:<br>";
 for($i=0;$i<count($array_result); $i++)
    echo " <div>".$array_result[$i]['telefono']."</div>";
 echo "</div>";

 echo "<div id='testo_contatti'>CELLULARE:<br>";
 for($i=0;$i<count($array_result); $i++)
    echo " <div>".$array_result[$i]['cellulare']."</div>";
 echo "</div>";

e così via per tutti i campi.

In questo modo esegui la query una volta sola e il codice risulta più ordinato.

risposto 10 anni fa
ice
ice
1
X 0 X

se non sbablio non è corretto utilizzare diversi DIV con lo stesso id. Se lo scopo è associare un CSS allora bisogna usare l'attributo class

Inoltre mi sembra strano che tu voglia mostrare tutti i risultati in un'unica colonna, mi sarei aspettato piuttosto di vederli su diverse righe.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

ciao Gianni!

non voglio utilizzare necessariamente più div...anche includere tutto in un solo div va bene...il punto è un altro...e cioè, scrivere come semplice testo "Telefono:" e sotto, o affianco, tutti i risultati disponibili...

tu come ti saresti aspettato di incolonnare tutti i risultati?

Ho provato il codice di ice...non va...e inoltre a dire il vero...non l'ho neanche capito! Ma grazie lo stesso ragazzi!

fatevi sempre sentire numerosi!

risposto 10 anni fa
micdech
X 0 X

L'approccio di ice è corretto, devi eseguire una sola volta la query ed una sola volta la fetch. Durante la fetch devi conservare i risultati della query in uno o più array in modo da usare poi il loro contenuto come meglio credi nel momento in cui vai a creare la pagina effettiva.

Ad esempio durante la fetch potresti salvare i risulati della query in diversi array, uno per i numeri di telefono, uno per i cellulari, ecc. Poi quando devi creare l'output prendi ciascun array e ne mostri il contenuto. Potresti ad esempio usare la funzione explode.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

bene!

uè cmq io non intendevo dire che ice avesse scritto un codice sbagliato...solo che io, da novizio, non l'ho capito...

cmq...ora cerco di fare qualcosa come hai detto tu!

Spero di riuscirci!

a presto!

risposto 10 anni fa
micdech
X 0 X
<?php 
  require ('db.php');
  $query = "SELECT commenti, telefono, cellulare, fax, mail, msn_mess, skype, aol_mess, gtalk FROM contatti";
  $result = mysql_query($query, $db)or die("Errore di connessione");
    $row = explode (',',$result);
   $row = mysql_fetch_array ($result);
   echo "<div id='testo_contatti'>TELEFONO:<br>";
    echo "$row[telefono]<br>";
   echo "CELLULARE:<br>";
    echo "$row[cellulare]<br>";
   echo "</div>";
   
   
?>

ragazzi con explode ho provato a fare questo!

il codice va...ma da solo un risultato della mia tabella! quindi non posso verificare se va tutto bene...secondo voi è fatto bene?

risposto 10 anni fa
micdech
X 0 X
<?php 
  require ('db.php');
  $query = "SELECT commenti, telefono, cellulare, fax, mail, msn_mess, skype, aol_mess, gtalk FROM contatti";

$result = mysql_query($query, $db)or die("Errore di connessione");
$row = mysql_fetch_array ($result);   

echo "<div id='testo_contatti'>TELEFONO:<br>";
foreach($row['testo_contatti'] as $test) { echo $test.'<br />'; }

   

echo "CELLULARE:<br>";
foreach($row['cellulare'] as $cell) { echo $cell.'<br />'; }

   

echo "</div>"; ?>

non l'ho provato ma dovrebbe andare ... non ho capito bene che tabella devi fare cmq questo codice dovrebbe mostrarti tutto il contenuto degli array testo_contatti e cellulare e printarli

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

Questa riga:

foreach($row['cellulare'] as $cell) { echo $cell.'<br />'; }

può essere sostituita con:

echo implode ('<br />', $row['cellulare']) , '<br />';

 :bye:

P.S.: in alcuni post precedenti ho parlato della funzione explode ma intendevo riferirmi alla implode  :P

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

infatti avevo pensato che ti riferivi alla funzione contraria...

però ancora non ci sono....purtroppo!

Aiutooooooooooooooooooooooo!!

risposto 10 anni fa
micdech
X 0 X

raga...niente da fare...

purtroppo sono ancora troppo ignorante...

risposto 10 anni fa
micdech
X 0 X

riporta il codice che stai usando adesso

risposto 10 anni fa
Gianni Tomasicchio
X 0 X
<?php 
  require ('db.php');
   $query = "SELECT commenti, telefono, cellulare, fax, mail, msn_mess, skype, aol_mess, gtalk FROM contatti";
   $result = mysql_query($query, $db)or die("Errore di connessione");
   $row = mysql_fetch_array ($result);
   $all_res = implode(",", $row);
      echo "<div id='testo_contatti'>TELEFONO:<br>";
      echo " $all_res[telefono]<br>";
      echo "CELLULARE:<br>";
      echo " $all_res[cellulare]<br>";
      echo "</div>";
?>

raga io sono ancora novello...più di questo non so ancora fare...

il risultato che stampa è una "P"!!!! assurdo! da dove la prende??!!??!!

risposto 10 anni fa
micdech
X 0 X

Ti segnalo i principali error:

1) esegui la funzione mysql_fetch_array una volta sola, prendendo quindi una sola riga dai risultati prodotti dalla query. Se la query restituisce più righe di risultati bisogna estrarle una ad una, richiamando mysql_fetch_array fino a che invece di restituire una riga, resituisce false. Normalmente si procede così:

while($row = mysql_fetch_array($result)){

  $array_result[] = $row;

 }

2) con $all_res = implode rendi la variabile $all_res una stringa e quindi quando usi $all_res[telefono] in realtà stai chiedendo a PHP non un elemento di un array ma di una stringa, e quindi un solo carattere!

Procediamo con ordine: quante righe ti aspetti di ottenere come risultato dalla query?

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

mitico gianni...

questi sono proprio i post che mi piacciono di più!

allora: mi aspetto 6 o 7 righe...

in realtà la pagina si dovrebbe costruire così:

Telefono:

00000, 00000,00000

Cellulare:

9999,9999,99999

MAIL:

micdech@micdech.it, mik@mik.it,

Capito cosa intendo?

cioè php deve scrivere prima un titolo...poi tutti i risultati del campo telefono, poi di nuovo un titolo e ancora tutti i risultati del campo cellulari...e così via...

spero di essere stato chiaro, e soprattutto di aver risposto alle tue domande!  :)

risposto 10 anni fa
micdech
X 0 X

Ice il tuo codice va ora!

ma io ancora non l'ho capito! perchè non me lo commenti un pò?

risposto 10 anni fa
micdech
X 0 X

Memorizzo la query in una variabile e la eseguo,e fin qui penso sia tutto chiaro.

$query = "SELECT commenti, telefono, cellulare, fax, mail, msn_mess, skype, aol_mess, gtalk FROM contatti";
 $result = mysql_query($query, $db)or die("Errore di connessione");

inizializzo un array chiamato "array_result" in cui andrò a memorizzare tutti i record che estrai del database con la query.

$array_result = array();

con mysql_fetch_array faccio in modo che ogni record estratto dal db sia memorizzato in un array associativo salvato nella variabile $row e tramite il ciclo while faccio in modo che questa operazione venga eseguita per tutti i record generati dalla query.

Ad ogni "giro" del ciclo while memorizzo la variabile $row in una cella di $array_result.

Con questa istruzione:

$array_result[] = $row;

dico al php di memorizzare il contenuto di $row in coda all'$array_result.

while($row = mysql_fetch_array($result)){
  $array_result[] = $row;
 }

Alla fine del ciclo while ti ritroverai con :

- $array_result che avrà tante celle quanti sono i record estratti del db

- in ogni cella di $array_result ci sarà un record,quindi se vorrai estrarre tutti i numeri di telefono ti basterà fare:

echo "<div id='testo_contatti'>TELEFONO:<br>";
 for($i=0;$i<count($array_result); $i++)
    echo " <div>".$array_result[$i]['telefono']."</div>";
 echo "</div>";

con il ciclo for scorri tutte le celle di array_result,quindi tutti i record che hai estratto dal db, andando a recuperare la cella corrispondente all record che ti interessa,in questo caso 'telefono'.

Mi sembra di aver spiegato più o meno tutto.

Se hai altri dubbi chiedi pure   :bye:

risposto 10 anni fa
ice
ice
1
X 0 X

io vi ringrazio davvero molto....da tanto cercavo un gruppo che si interessasse al php e con cui potessi crescere!

la spiegazione è stata molto esauriente...

Gianni cmq aveva ragione...l'impaginazione dei risultati viene brutta...soluzioni? o cambio direttamente schema per la pagina?

risposto 10 anni fa
micdech
X 0 X

Tu come vorresti che fossero mostrati i risultati? Normalmente quando una SELECT restituisce più righe di risultati si utilizza una tabella.

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

ne ero convinto anche io...però proprio per questo lavoretto che sto fo facendo...ho voluto usare i livelli...ed è venuto fuori un layout dei dati davvero molto ben fatto!

La svolta naturalemente è nei css! la magia sta nel <div> eh  eh ;D

cmq...in ogni caso...prima volevo fare una impaginazione diversa...ora invece ho deciso di impaginare così...

<div id='info'>INFO:<br>Puoi richiedere informazioni, semplicemente compilando il seguente  modulo, ti risponderemo immediatamente, ma puoi anche contattarci nei seguenti modi<br><-- 081890 | 3280 | <a href='micdech@mik.it'>M@IL</a> --></div>

non so se capisce bene...cmq è il codice sorgente della pagina generata dalla mia pagina php...

risposto 10 anni fa
micdech
modificato 10 anni fa
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda