Estrazione dati da DB

WottaFacca

Utente Attivo
20 Mar 2015
134
0
0
Desenzano d/G
Salve a tutti,

avendo appena iniziato a programmare in PHP ho dei problemi che mi bloccano.

Avrei bisogno del codice per estrarre i dati di una colonna di una tabella per poi visualizzarli in un menu a tendina (<select>)

Grazie in anticipo per la risposta
 
Ciao,
per quanto riguarda l'estrazione dei dati di una tabella (se ho capito bene il tuo problema) devi usare una SELECT nel seguente modo:

SELECT nomecolonna/e FROM nometabella;

per estrarre tutti i record della tabella o, aggiungendo la clausola WHERE ed impostando una condizione, per visualizzare solo i record che soddisfano quella determinata condizione. Ciao



Zorrino
 
Ciao,
per quanto riguarda l'estrazione dei dati di una tabella (se ho capito bene il tuo problema) devi usare una SELECT nel seguente modo:

SELECT nomecolonna/e FROM nometabella;

per estrarre tutti i record della tabella o, aggiungendo la clausola WHERE ed impostando una condizione, per visualizzare solo i record che soddisfano quella determinata condizione. Ciao



Zorrino

Grazie per la risposta, ma forse non sono riuscito a spiegarmi bene, il mio problema è quello di creare il menù a tendina.

WottaFacca
 
Ho confuso (SELECT è anche il 'comando' HTML per creare menu a tendina).
In pratica, dopo aver letto il DB, dovrai creare un loop col quale leggere (ed eventualmente stampare) i record della tabella. All'interno del loop creerai una variabile ($nome) che conterrà il contenuto del campo nome
dell'array $riga in questo modo:

PHP:
while ($riga=mysql_fetch_array($tabella)) {
       $nome=$riga['NOME'];
       echo '     <option value="N">'.$nome.'</option>';
}

Il comando OPTION serve a popolare il menu col nome appena letto.

Prima del loop devi impostare il menu a tendina così:

PHP:
echo '<form name="form1" method="post" action="">';
echo '   Nomi&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
echo '   <select name="nomi">';

che chiuderai dopo il loop così:

PHP:
echo '   </select>';
echo '</form>';

Spero di esserti stato d'aiuto. Buona serata


Zorro
 
Ultima modifica di un moderatore:
Sicuramente sto sbagliando qualcosa io, questo è il mio codice

PHP:
<?php

// modifica i nomi dentro le quadre secondo quelli che hai te nel DB

	$idfolder = $_POST["IDFolder"];

// --> Variabili <--
  //nome host
  $host =  "localhost";
  //nome user
  $user = "xxx";
  //password
  $psswd = "xxxx";
  //nome del DB
  $db_name = "nomedb";


	$con = mysqli_connect($host, $user, $psswd, $db_name);

	if(mysqli_connect_error())
  {
    echo "<h1>Errore nella connesione al Database !!!<h1>";
  }
  else
  {
    $qr = "SELECT IDFolder FROM folder ;"; 
	
	
echo '	<form name="form1" method="post" action="">';
echo '  Folder ';
echo '  <select name="nomi">'; 

while ($riga=mysql_fetch_array($tabella)) {
       $idfolder=$riga['IDFolder'];
       echo '     <option value="N">'.$idfolder.'</option>';
}  

echo '   </select>';
echo '</form>';  

?>

se riuscite ad aiutarmi mi fate un grandissimo piacere
 
Ciao,
ho letto il tuo codice e così, a prima vista, non vedo la graffa di chiusura della IF (ramo dell'ELSE) prima del TAG di chiusura del PHP (?>)
Prova intanto così, altrimenti ti posto il mio codice, a me funziona perfettamente.Ciao


zorro
 
Ho notato anch'io che mancava la graffa, l'ho chiusta ma nada, non riesce ad eseguire il while, nel senso che mi visualizza la scritta Folder e sotto il menu a tendina, che però è vuoto, non prende i dati dal DB.

Se puoi scrivimi il tuo codice così provo con quello, grazie in anticipo :)

WottaFacca
 
Ultima modifica:
ciao
intatto non fai la selezione, manca mysql_query
PHP:
<?php
//.......
$qr = "SELECT IDFolder FROM folder ";
$ris=mysql_query($qr);
//.............
//poi
while ($riga=mysql_fetch_array($ris)) {
//....
?>
 
Adesso il codice è questo, ma lo stesso non mostra niente nel menù a tendina

PHP:
<?php

// modifica i nomi dentro le quadre secondo quelli che hai te nel DB

	$idfolder = $_POST["IDFolder"];

// --> Variabili <--
  //nome host
  $host =  "localhost";
  //nome user
  $user = "xxx";
  //password
  $psswd = "xxx";
  //nome del DB
  $db_name = "dbname";


	$con = mysqli_connect($host, $user, $psswd, $db_name);

	if(mysqli_connect_error())
  {
    echo "<h1>Errore nella connesione al Database !!!<h1>";
  }
  else
  {
  	
    $qr = "SELECT IDFolder FROM folder"; 
	$ris = mysql_query($qr);

    
   
  
echo '	<form name="form1" method="post" action="">';
echo '  Folder <br> <br>';
echo '  <select name="nomi">'; 

	while ($riga=mysql_fetch_array($ris)) {
       $idfolder=$riga['IDFolder'];
        
       echo '     <option value="N">' .$idfolder. '</option>';
	}
    
echo '   </select>';
echo '</form>';
}

?>
 
ciao
a parte che non capisco a che ti serva quella prima istruzione
$idfolder = $_POST["IDFolder"];
per il resto è sintatticamente corretto, quindi verifica la corrispondenza esatta (compreso maiuscole/minuscole) tra il nome della tabella e quello dei campi
e che la tabella non sia vuota
 
ciao
a parte che non capisco a che ti serva quella prima istruzione
$idfolder = $_POST["IDFolder"];
per il resto è sintatticamente corretto, quindi verifica la corrispondenza esatta (compreso maiuscole/minuscole) tra il nome della tabella e quello dei campi
e che la tabella non sia vuota

Siccome ho fatto un bel po' di copia e incolla, mi era sfuggita la prima istruzione, che come hai notato anche te non serve a niente, infatti l'ho rimossa.

Per il resto, ho controllato se tutte le scritte erano in ordine e anche quelle sono corrette, nella tabella ci sono una cosa tipo 20 righe quindi non capisco perchè php non vuole farmi lavorare xD
 
Ti posto l mio codice cdmpleto (a me fnzina benissimo):


PHP:
<?php

//connessione al server DB
$link_connessione=mysql_connect("localhost","username","password") or die ("Connessione impossibile"); 
//Selezione del database
$db=mysql_select_db("nome_DB", $link_connessione) or die ("Database inesistente!");
//Visualizzazione dei record di una tabella
$query="SELECT nomecampo/i FROM nometabella'";
$tabella=mysql_query($query, $link_connessione) or die ("Attenzione: errore nella query");
//Esecuzione della query
  
echo '<form name="form1" method="post" action="">';
echo '   Nomi*****';
echo '   <select name="nomi">';
echo '     <option></option>';

while ($riga=mysql_fetch_array($tabella)) {
         $nome=$riga['NOME'];
         echo '     <option value="N">'.$nome.'</option>';
}

echo '   </select>';
echo '</form>';
?>


Spero adesso funzioni. Ciao
 
Ultima modifica di un moderatore:
ciao
non avrai fatto il copy/paste direttamente di
$query="SELECT nomecampo/i FROM nometabella'"; ?
zorro intende che al posto di nomecampo/i devi mettere il nome di un tuo campo o campi e il nome della tia tabella, comunque se vuoi estrarli tutti metti
PHP:
$query="SELECT * FROM nometabella'";
 
Non capisco dobe potrebbe essere l'errore, soprattutto se hai copiato e incollato la query direttamente da MyAdmin.
Quindi l'errore riguarda solo la lettura dell a tabella. Ti suggerirei innazi tutto, come suggeriva anche borgo italia, di sostittuire nomecampo/i
nella SELECT di lettura con l'asterisco (*) e di provare a stampare a video tutti i campi del record: per fare questo all'interno del ciclo WHILE
all'istruzione $nome=$riga['NOME']; devi far seguire tante istruzioni quanti sono i campi del tuo record es:

$nome1=$riga['NOME1'];
$nome2=$riga['NOME'2];
$nome3=$riga['NOME'3];

e provare poi a stamparli a video

echo "campo1 campo2 campo3"; (occhio agli apici: doppi, non singoli)

e poi fammi sapere com'è andata. Intanto mi posti il tuo codice ?? Ciao
 
Questo è il codice completo, adesso provo mettendo * al posto del nome del campo e li visualizzo tutti.

Mi sorge un dubbio però, potrebbe essere un problema il fatto che non uso xampp ma sto lavorando tramite Altervista??


PHP:
<?php

//connessione al server DB
$link_connessione=mysql_connect("localhost","xxx","xxx") or die ("Connessione impossibile"); 

//Selezione del database
$db=mysql_select_db("nome_DB", $link_connessione) or die ("Database inesistente!"); 
//Visualizzazione dei record di una tabella 
	
	$query= "SELECT IDFolder FROM `folder`";
	$tabella= mysql_query($query, $link_connessione) or die ("Attenzione: errore nella query");
    
    
    

//Esecuzione della query

  echo ' <form name="form1" method="post" action="">';
  echo ' Folder <br>';
  echo ' <select name="Folder">';
  echo ' <option></option>';

  
  while ($riga=mysql_fetch_array($tabella)) {
  	
    $nome=$riga['NOME'];
  	echo ' <option value="N">'.$nome.'</option>';
  	
  }

  echo ' </select>';
  echo '</form>';
  


?>
 
Ok, adesso funziona, praticamente mi ero dimenticato di modificare questa riga con il nome giusto xD.

Codice:
$nome=$riga['NOME'];

Grazie mille, adesso aprirò un nuovo post per il prossimo problema xD
 
Contento di esserti stato utile.
Avevo immaginato che il problema fosse lì, quando mi hai detto che cliccando sul menu, comunque ti apriva la tendina (quindi eseguiva corrretamente la query) ma non stampava niente (o, più correttamente, stampava delle righe vuote) per cui il problema doveva essere che il campo non veniva correttamente memorizzato nella variabile, che restava quindi vuota. Anch'io comunque uso Altervista

Ciao
 
Grazie mille, adesso l'unica cosa è che quei dati che prendo dalla tabella dovrei mandarli, insieme ad altri dati di un'altro select ad una tabella nuova, se controlli nella sezione ho aperto un nuovo post, potresti controllare e se possibile aiutarmi a risolvere please.

Grazie ancora :) :)

WottaFacca
 

Discussioni simili