AIUTO Query Database MySql

  • Creatore Discussione Creatore Discussione ciopin
  • Data di inizio Data di inizio

ciopin

Utente Attivo
26 Mar 2010
59
0
0
Ciao a Tutti,

premetto che io non sono un programmatore ma solo un appassionato...ho da poco iniziato a collaborare con una associazione senza fine di lucro e vorrei aiutarli nella gestione del loro sito. Hanno un database in MySql e bisognerebbe creare una pagina in php che-inserito il Giorno, il Mese e l'Anno-mi restituisca il numero degli iscritti nella tabella XYZ. Mi hanno detto però, ma io non so cosa voglia dire, che nella query sono da contare solo di distinct(email) e confermato != N. Ringrazio chi vorrà aiutarmi.

Luca
 
ciao
nessun problema ad aiutarti, però dovresti essere un po' più preciso.
1. sarebbe bene sapere come è strutturata la tabella
2. cosa vuol dire "inserita la data...", deve estrarre il numero e/o gli iscritti entro tale data? di che tipo è la data nel db (timestamp o "umana")?

per quanto riguarda
...sono da contare solo di distinct(email) e confermato != N...
vuol dire che se (es.) esistono due recrd con stesso indirizzo email (!!!) deve contare solo uno, mentre confermato "diverso da" N (probabilmente è la conferma dell'iscrizione con valor S o N) vuol dire di contare solo i confermati

posta , siamo qui

(!!!) può darsi che mi sbagli, ma l'indirizzo email generalmente è unico, cioè non dovrebbero esistere due record con email uguale, se ho ragione la tabella/script nasce male in partenza
 
Query PHP Database MySql

Ciao,
prima di tutto ti ringrazio per avermi risposto e mi scuso per il ritardo con il quale ti rispondo. Allora il database è strutturato in questo modo: ci sono più sottodatabase interni ma quello che interessa a me è quello XYZ ed è composto dalle seguenti voci:

ID-TOKEN-EMAIL-SESSO-ANNA NASCITA- PROV-CELL-DATA( ANNO-MESE-GIORNO)-PRIVACY-PUBBLIC-IP-CONFERMATO​

Questi sono i campi di cui è composto. A me hanno chiesto di realizzare un menu a tendina che selezionato il database XYZ , scegliendo ( altro menu) giorno-mese-anno ti restituisca gli iscritti unici di quella data evitando di contare le mail doppie (perché mi hanno spiegato che ci sono state iscrizioni di prova con mail piu volte ripetute) e soprattutto considerando solo solo quelli che hanno confermato l’iscrizione ( campo confermato) i cui valori posso essere N o 0 ( o confermato N non confermato).
Spero che tu mi possa aiutare. Grazie Mille per quello che vorrai fare per me.
 
ciao
credo di aver capito, però vorrei sapere una cosa: lavori in php? perchè altrimenti non saprei aiutarti.
comunque devi avere pazienza, sono gli ultimi minuti e poi...vacanze di pasqua

auguri e ci risentiamo dopo (se non hai nel frattempo risolto)
 
Php e Mysql

Si, lavoro in php...io lo conosco ma davvero a livello basico....non preoccuparti aspetto che tu mi dia una mano compatibilmente con i tuoi altri impegni, nel frattempo ti ringrazio ancora per la gentilezza e la pazienza.

Buona Pasqua
 
ciao,
la query che ti serve è una cosa simile:
Codice:
SELECT DISTINCT(email) FROM xyz WHERE data='data_inserita' AND confermato='O'

Per infilare tutto questo in una tendina puoi provare a fare:
Codice:
<?php
//mettiamo che la data sia inviata da un form tramite post e che il campo
//dove viene inserita si chiama 'ins_date'
$date=$_POST['inse_date'];
$strSQL="SELECT DISTINCT(email) FROM xyz WHERE data='".$date."' AND confermato='O'";
$rs=mysql_query($strSQL);

echo '
<html>
    <head></head>
    <body>
        <select id="users" name="users">
            <option id="default" name="default" value="default" selected="selected">Scegli l'utente</option>';
while($rc=mysql_fetch_array($rs)){
    $uname=substr($rc[0],0,strpos($rc,"@"));
    echo '<option id="'.$uname.'" name="'.$uname.'" value="'.$uname.'">'.$rc[0].'</option>';
}
echo '
    </body>
</html>';
?>

Così hai la tua pagina con la tendina fatta e valorizzata che vai a scrivere direttamente in codice HTML tramite PHP. Chiaramente nel mio esempio ho incluso anche i tag html,body,ecc.. tu dovrai inserire la creazione della tendina nel punto opportuno e lasciare intatto il resto.

In alternativa puoi popolare la select con una piccola funziona JS. Per esempio se inserisci nella tua pagina HTML l'oggetto select con solo la voce di default, puoi utilizzare una cosa simile:
Codice:
<?php
$date=$_POST['inse_date'];
$strSQL="SELECT DISTINCT(email) FROM xyz WHERE data='".$date."' AND confermato='O'";
$rs=mysql_query($strSQL);
while($rc=mysql_fetch_array($rs)) $strMails .=$rc[0].",";
$strMails=substr($strMails,0,-1);
?>
<html>
	<head>
		<script language="javascript" type="text/javascript">
		<!--
		function populate(addresses){
			var addrArray=addresses.split(",");
			var obj=document.getElementById("users");
			var uname="";

			for(i=0;i<addrArray.length;i++){
				opt=new Option(addrArray[i],addrArray[i]);
				if(obj.length==0) obj.options[0]=opt;
				else obj.options[obj.length]=opt;
			}
		}
		//-->
		</script>
	</head>
	<body [COLOR="Red"]onload="javascript:populate('<?php echo $strMails; ?>');"[/COLOR]>
		<select id="users" name="users">
			<option id="default" name="default" value="default" selected="selected">Scegli l'utente</option>
		</select>
	</body>
</html>
 

Discussioni simili