|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Aug 2002
Messaggi: 3958
|
[php] visualizzare record e ordinarli
Ciao a tutti,
ho 2 domande: 1) Ho un modulo html che passa ad una pagina php di ricerca che si collega ad un database mysql le variabile in base alle quali effettuare la ricerca e visualizzare i risultati, ad esempio: $sql = "SELECT * from PERSONALE where reparto= '$rep' and cognome = '$cognome'"; con questa istruzione poi la variabile $sql è passata ad una funzione di ricerca che visualizzera i risultati in base al cognome e al rep (sta per reparto di appartenenza) Volevo sapere se nel caso in cui dal form html non inviassi nessun parametro (form in bianco) e prema il tasto di invio, come faccio a far visualizzare tutti i record del database. Per informazione la tabella contiene un campo con numero progressivo nominato "id_utente" (attualmente ci sono 7 record: tutti quelli che vorrei visualizzare indistintamente) dovrebbe essere una cosa del tipo: elseif($rep==""&&$cognome=="") { ..istruzione.. } ho già usato una cosa simile che prevede una determinata situazione ma adesso non riesco a venirne a capo (forse mi perdo in un bicchiere d'acqua!!) si potrebbe richiamare una nuova funzione che non abbia niente a che fare con quella sopra (non voglio modificarla altrimenti faccio casini) e che stampi con un cicli for tutte le righe esistenti: ma come si fa a comunicare al ciclo quanti record ci sono nel database? ovviamente. Mi basterebbe anche un semplice link da aggiungere nella pagina html che richiami uno script php che mi visualizzi l'intero elenco. Ho riutilizzato per la cronaca script a questa pagina: http://a2.swlibero.org/a2280.html#almltitle3095 il file brdp_db.php e index.php per la precisione 2) vorrei visualizzare i cognomi (l'intera lista o solo quelli ricercati) inseriti nel campo relativo del database in ordine alfabetico . Esiste una funzione del php per fare questo? ciao e grazie. |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Nov 2002
Messaggi: 160
|
1)
Forse ho capito male io, dal mometo che la soluzione mi sembra così banale: Questi ti dovrebbe visualizzare l'intero elenco... sempre se ho capito bene la tua domanda else if ($rep==""&&$cognome=="") { $sql = "SELECT * FROM Personale"; } Per la stampa della lista il ciclo lo puoi fare indirettamente con un while $ris = risultato query while (list($pers_cognome) = mysql_fetch_row ($ris)) { print($pers_cognome); } 2) Per la visualizzazione della lista ordinata per cognome semplicemente la fai fare al db: $sql = "SELECT * FROM Personale ORDER by cognome"; |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Feb 2004
Città: Rimini
Messaggi: 247
|
la funzione
mysql_num_rows(recordset) ritorna il numero di righe che contiene il recordset in cui hai i dati del risultato della query. ad esempio per stampare tutti i cognomi $sql="select * from personale"; $ris=mysql_query($sql); $totr=mysql_num_rows($ris); print "Elenco cognomi"; for ($i=0;$i<$totr<$i++){ print "<br>".mysql_result($ris,$i,"cognome"); } il resto tutto come ha detto fabio_tarantino...
__________________
"Se per caso il C non fosse sufficiente il Vero Programmatore lavorera' in assembler, se neppure questo fosse sufficiente allora il lavoro non e' fattibile, ma la cosa e' impossibile, un Vero Programmatore in C ed assembler puo' fare TUTTO, per definizione." |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
|
|
|
|
|
|
|
#5 | |
|
Member
Iscritto dal: Feb 2004
Città: Rimini
Messaggi: 247
|
Quote:
__________________
"Se per caso il C non fosse sufficiente il Vero Programmatore lavorera' in assembler, se neppure questo fosse sufficiente allora il lavoro non e' fattibile, ma la cosa e' impossibile, un Vero Programmatore in C ed assembler puo' fare TUTTO, per definizione." |
|
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
|
|
|
|
|
|
|
#7 |
|
Member
Iscritto dal: Feb 2004
Città: Rimini
Messaggi: 247
|
il primo che ho imparato (alle superiori...
) è stato quello, ci sono un po legato ancora@cionci quella guida a delphi che ti dicevo ci sto lavorando ma il tempo è veramente poco...tra un mesetto è ora di esami e sono un po preso...
__________________
"Se per caso il C non fosse sufficiente il Vero Programmatore lavorera' in assembler, se neppure questo fosse sufficiente allora il lavoro non e' fattibile, ma la cosa e' impossibile, un Vero Programmatore in C ed assembler puo' fare TUTTO, per definizione." |
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
|
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Aug 2002
Messaggi: 3958
|
grazie!
comunque ci deve essere qualcosa che non va nel codice, qualche errore mio o chissà, avevo pensato già più o meno alle soluzioni proposte. ...boh.. invio i dati ad un altro file ricerca.php fatto ad hoc e faccio prima grazie ancora e ciao. |
|
|
|
|
|
#10 |
|
Member
Iscritto dal: Nov 2002
Messaggi: 160
|
magari se posti il codice incriminato ti diamo una mano
|
|
|
|
|
|
#11 | |
|
Senior Member
Iscritto dal: Aug 2002
Messaggi: 3958
|
Quote:
Non capisco qual'è il problema (sono alle prime armi con il php abbiate pazienza)!! vi posto tutto: Codice:
//file con le opzioni di ricerca.html:
<html>
<body>
<form method="GET" action="index.php">
<table border="0" width="48%" cellspacing="1">
<tr>
<td width="1%"><b>Reparto</b></td>
<td width="101%"><select size="1" name="rep">
<option></option>
<option>Manager </option>
<option>Officina </option>
<option>Stireria </option></td> </tr>
<tr>
<td width="1%"><b>Cognome</b></td>
<td width="101%"><input type="text" name="cognome" size="20"></td>
</tr>
<td width="54%"><input type="submit" value="Invia" name="B1"><input type="reset" value="Reimposta dati" name="B2">
</form>
</td>
</tr></table></form>
</body>
</html>
//file destinazione index.php:
<?
include("brdp_db.php");
$db = new database;
$db->connetti();
if($rep&&$cognome!="")
{
$sql = "SELECT * from BRDP_TB_UTENTI where reparto= '$rep' and cognome = '$cognome'";
}elseif($cognome=="")
{
$sql = "SELECT * from BRDP_TB_UTENTI where reparto= '$rep'";
}elseif($rep=="")
{
$sql = "SELECT * from BRDP_TB_UTENTI where cognome= '$cognome'";//fino a qui nessun problema
}elseif ((empty($rep)) && (empty($cognome))) //qui non va!
{
$sql = "SELECT * from BRDP_TB_UTENTI";
}
?>
<html>
<head>
</head><body>
<a href="ricerca.php">RICERCA</a>
<br><br> <table>
<?
# Eseguo la query contenuta in $sql
if($db->esegui($sql)){
if($db->righe()>0){
for($i=0; $i<$db->righe(); $i++){
$j=$i+1;
echo "<tr><td>".$j.") ".$db->leggi($i,"nome")." <td>".$db->leggi($i,"cognome")."</td></td>";
echo "<td><a href=\"agenda.php?utente=".$db->leggi($i,"id_utente");
echo "&nome=".$db->leggi($i,"nome");
echo "\">Agenda utente</a></td></tr>";
}
}else{
echo "<tr><td> Nessun utente attivo in archivio </td></tr>";
}
}else{
echo "<tr><td>Errore di interrogazione.</td></tr>";
}
?>
</table>
</body></html>
<?
$db->disconnetti();
?>
//file principale da includere brdp_db.php scaricato dal sito citato sopra:
<?
class database {
var $db;
function database($USER="", $PASSWORD="", $DB="brdp_esempio_1 ", $HOST="127.0.0.1" ){
$this->db["user"] = $USER;
$this->db["password"] = $PASSWORD;
$this->db["db"] = $DB;
$this->db["host"] = $HOST;
}
function connetti(){
$this->db["connessione"] = @mysql_connect($this->db["host"],$this->db["user"],$this->db["password"]);
if ($this->db["connessione"]){
return $this->db["connessione"];
}else{
?>
<br>
<table align="center" width="500" cellspacing="0" cellpadding="4" border="1">
<tr bgcolor="#e2e2e2">
<td>
<font color="#000000" face="helvetica,verdana" size="5">
<b>PROBLEMI DI CONNESSIONE</b>
</font>
</td>
</tr>
<tr>
<td>
<font size="2" color="#4F4F4F" face="Helvetica, Verdana">
I nostri server sono, momentaneamente, <b>sovraccarichi</b>
e NON possono stabilire una connessione. Vi invitiamo a
riprovare più tardi. Se il problema persiste, per favore,
segnalatelo al<b><i>
<a href="mailto:webmastert@del_sito.it">webmaster</a></i></b>.
</font>
</td>
</tr>
</table>
<?
exit;
}
}
function disconnetti(){
@mysql_close($this->db["connessione"]);
}
function esegui($query){
$this->db["risultato"] = @mysql_db_query($this->db["db"],$query,$this->db["connessione"]);
return $this->db["risultato"];
}
function query2select($query, $nome, $valore, $default, $metodo){
if($this->esegui($query)){
for($i=0; $i<$this->righe(); $i++){
$sel="";
if ($default == $this->leggi($i,$valore))
$sel="selected";
$ris = $ris."<option value=\"".$this->leggi($i,$valore)."\" ".$sel.">";
$ris = $ris.$this->leggi($i,$nome)."</option>\n";
}
if($metodo){
echo $ris;
return true;
}else{
return $ris;
}
}else{
return false;
}
}
function getlast_id(){
return @mysql_insert_id($this->db["connessione"]);
}
function leggi($numero_riga,$nome_campo){
return @mysql_result($this->db["risultato"],$numero_riga,$nome_campo);
}
function righe(){
$this->db["righe"] = @mysql_num_rows($this->db["risultato"]);
return $this->db["righe"];
}
function affected_row()
{
return @mysql_affected_rows($this->db["connessione"]);
}
}
?>
vorrei avere l'intera lista invece visualizzo il messaggio di errore "Nessun utente attivo in archivio". Come mai? Volevo scrivere una funzione a parte ma mi sono accorto che mi serve il pezzo di codice che affianca al nome e cognome il link che riporta alla pagina personale di ogni persona con i dati completi e non so come integrarlo (agenda.php). Mi aiutate allora? |
|
|
|
|
|
|
#12 |
|
Member
Iscritto dal: Nov 2002
Messaggi: 160
|
Intanto correggi queste cosette:
1) nel file ricerca.html devi chiudere il tag select chiudi due volte il tag form 2) nel file index.php ma che è: if($rep&&$cognome!="") ?? Non mi dire che php permette questa sintassi!! Io riscriveri in: if ( ($rep != "") && ($cognome != "") ) Anche questo: elseif ((empty($rep)) && (empty($cognome))) lo riscriverei in else (e basta tanto con i rami precedenti hai risolto tutti i casi) |
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Aug 2002
Messaggi: 3958
|
ho risolto! ho dovuto cambiare il codice.
Però adesso, volendo strafare ho aggiunto nel modulo di ricerca due nuove scelte: selezione delle persone che hanno uno stipendio compreso tra un tot minimo e un tot massimo nel file index ho aggiunto questo (non so se la sintassi è corretta, vado a tentativi il più delle volte!!) elseif(($inf!=""&&$sup!="")&&((empty($rep)) && (empty($cognome)))) { $tutto = "SELECT * from rubrica where stipendio >= '$inf'and stipendio <= '$sup'"; } il fatto è che se elimino gli altri elseif il codice sopra fa il suo dovere altrimenti non viene considerato. Io vorrei però che tenesse conto sia che la scelta sia fatta solo per stipendio sia che sia fatta per stipendio, reparto oppure cognome. Mi spiego: le persone del reparto Officina che hanno uno stipendio tra totmin e totmassimo. Capito? grazie |
|
|
|
|
|
#14 |
|
Member
Iscritto dal: Nov 2002
Messaggi: 160
|
if ( ($rep != "") && ($cognome) ) {
if ( ($inf != "") && ($sup != "") ) { $sql = "SELECT * FROM rubrica WHERE ((stipendo>=$inf) AND (stipendio<=$sup)) AND (cognome='$cognome') AND (reparto='$rep') "; } else { $sql = "SELECT * FROM rubrica WHERE (cognome='$cognome') AND (reparto='$rep') "; } } elseif ($rep != "") { if ( ($inf != "") && ($sup != "") ) { $sql = "SELECT * FROM rubrica WHERE ((stipendo>=$inf) AND (stipendio<=$sup)) AND (reparto='$rep') "; } else { $sql = "SELECT * FROM rubrica WHERE reparto='$rep' "; } } elseif ($cognome != "") { if ( ($inf != "") && ($sup != "") ) { $sql = "SELECT * FROM rubrica WHERE ((stipendo>=$inf) AND (stipendio<=$sup)) AND (cognome='$cognome') "; } else { $sql = "SELECT * FROM rubrica WHERE cognome='$cognome' "; } } |
|
|
|
|
|
#15 |
|
Senior Member
Iscritto dal: Aug 2002
Messaggi: 3958
|
grazie!!
già che ci siamo: Vorrei visualizzare i valori numerici di un campo in ordine decrescente. Se uso ad esempio l'istruzione "ORDER BY" stipendio ottengo invece la visualizzazione dei valori ordinati in ordine crescente. Qual'è l'istruzione che permette di farlo? Grazie |
|
|
|
|
|
#16 |
|
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8896
|
DESC dovrebbe essere
MEMBRO DEL GRAN CONSIGLIO DELLE CACCOLE VERDI ~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:46.











) è stato quello, ci sono un po legato ancora








