stampare una riga sola riconoscendo valori di campi inseriti

 stampare una riga sola riconoscendo valori di campi inseriti

 :)

ciao a tutti

in un sito di orari dei treni

ho fatto un sito dove un utente puo' inserire

-ora

-giorno

-mese

-anno

-direzione

tramite 6 drop down menu

l'altro drop down menu è

soprressione annunciata? yes/no a seconda

quindi, siccome per una data direzione, ora, giorno, mese, anno esiste un solo treno,

per es. 1.10.2008 / 13.00/ varese

solo un solo treno per quelle combinazioni.

Vorrei che nel momento che un utente mi inserisca una segnalazione per quel treno,

venga stampata solo una riga con quei dati (non ripetzioni) del primo utente che l'ha inserita

mentre sulla segnalazione annunciata si/no venisse fatta una media di volta in volta a seconda del numero di segnalazioni.

Esempio questi sono tre treni diversi, inserit da me. .

Giorno Orario Direzione Annunciata

05 ottobre 2008 1614 Varese si

07 ottobre 2008 1314 Varese no

08 ottobre 2008 1914 Varese si

Ma se un utente mi va sul sito e

volesse fare una segnalazione della segnalazione del primo treno soppresso..

verrebbe fuori per ora per come è fatto lo script:

Giorno Orario Direzione Annunciata

05 ottobre 2008 1614 Varese si

05 ottobre 2008 1614 Varese si

07 ottobre 2008 1314 Varese no

08 ottobre 2008 1914 Varese si

Io vorrei che il primo treno del 5 ottobre , php riconoscesse che è giaà stato inserito in base a quei primi 5 campi recuperati dai 5 drop down menu, e capissse che non è il

caso di ristamparli

Come faccio a fare una query benedetta che riconosca che se 5/6 dei primi campi(che sono colonne della tabella stessi nomi) sono già presenti nella tabella, non debbano essere inseriti??

mi serve quindi un controllo sql che sappia trovare se la combinazione dei primi 5

campi è già presente in un record della tabella?

ovverio, le prime 5 colonne contengano stessi valori???

Ringrazio in anticipo tutti coloro che mi daranno una mano. comunque ecco gli script

$giorno = $_POST['giorno'];

$mese = $_POST['mese'];

$anno = $_POST['anno'];

$orario = $_POST['orario'];

$direzione = $_POST['direzione'];

$annunciata = $_POST ['annunciata'];

$sql = "INSERT INTO treni_soppressione (giorno,mese,anno,orario,direzione,annunciata) VALUES ('$giorno','$mese','$anno','$orario','$direzione','$annunciata')";

$result = mysql_query($sql);

cosi ovviamente mi inserisce una riga ogni volta ma è "stupido" perché non riconosce se la combinazione di cui sopra è giaà stata inserita

se volete posso postare il link del sito cosi potete capire, (ma mi sembra chiarissimo ) ;)

 :bye:

paolo

inviato 8 anni fa
RedLynch
X 0 X

Potresti semplicemente effettuare una SELECT prima della INSET per vedere se esiste un record nella tabella contenente esattamente quei 5 campi. In caso positivo non esegui la INSERT.

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

Ciao Gianni.

Ti ringrazio per la risposta

Per es. cosi?

sql="SELECT DISTINCT (giorno+mese+anno+orario+direzione)* FROM treni_soppressione ORDER BY giorno,mese,anno,orario,direzione";

Mi sa che ho scritto una marea di cavolate...è che non so come fare capire a php che la sequenza di 5 campi di seguito se esiste già non deve stamparla. Mi hanno consigliato anche di fare due tabelle e una JOIN ma mi sembra che mi complico la vita...

andrebbe bene la tua, ma non so bene il modo x individuare la squenza

ciao e grazie  :)

risposto 8 anni fa
RedLynch
X 0 X

A quando lo studio dell'SQL? Non crederai mica di poterlo scrivere ad intuito? :P

prova con qualcosa del genere:

SELECT * FROM treni_soppressione WHERE giorno = '$giorno' AND mese = '$mese' AND anno = '$anno' AND orario = '$orario'

Se questa query ti restituisce un record allora non devi fare la INSERT

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

Ciao Gianni

Spero di non scrivere piu' fregnacce come la query di cui sopra...in effetti :-[

Se la guida che hai indicato puo aiutarmi, la scarico e la stampo subito

provo con il tuo suggerimento.

 :bye:

ciao

 :)

risposto 8 anni fa
RedLynch
X 0 X

ciao

ho provato ma con insuccesso questa logica:

//la tua query

$sql1="SELECT * FROM treni_soppressione WHERE giorno = '$giorno' AND mese = '$mese' AND anno = '$anno' AND orario = '$orario' AND direzione = '$direzione'";

$pippo = mysql_query ($sql1);

if (empty ($pippo)) {

//FACCIO QUERY INSERIMENTO

}

non so se é corretto. pURTROPPO non funziona...forse ho sbagliato qualcosa nella logica?

eppure la condizione è

se la query non contiene valori, allora...inserisci

???? :bye:

risposto 8 anni fa
RedLynch
X 0 X

Non è corretto. Il risultato della funzione mysql_query non è il numero di righe restituite dalla query. Per ottenere il numero di record individuati devi procedere così:

$sql1="SELECT * FROM treni_soppressione WHERE giorno = '$giorno' AND mese = '$mese' AND anno = '$anno' AND orario = '$orario' AND direzione = '$direzione'";

$risultato = mysql_query ($sql1);

$num_righe = mysql_num_rows($risultato);

if($num_righe == 0) {
   // Faccio la INSERT
}

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

Gianni grazie mille cosi funziona , sei sempre preciso e chiaro nelle spiegazioni

 O0

ehm....

posso approfittarne per chiederti un'altra cosa?  :-[ :)

risposto 8 anni fa
RedLynch
X 0 X

 :)

In poche parole vorrei che - anche se la select dice che esiste già una riga con quelle caratteristiche come giustamente tu hai formulato (funziona bemissimo) , vorrei che php riconoscesse questo

Il primo utente fa una segnalazione mettiamo

giorno: 10.10.2008

direzione: Sud

Orario treno: 16.00

L'ultimo valore da menu a tendina è la scelta tra Si o NO (ovvero se la soppressione è stata annunciata o meno)

quindi se un utente mi inserisce per primo la combinazione relativa a quel treno, grazie alla tua query non verràè piu inserita un'altra riga con quei valori.

Ma vorrei invece che si creasse una riga con "Numero segnalazioni" e che venga stampato si o no a seconda se prevalgono i si o i no.

Volevo chiederti un suggerimento.

-secondo te mi conviene creare un'altra tabella dove si registra ogni volta quante segnalazioni vengono fatte relative a quella combinazione e aumentare di uno i si o i no scelti e poi stampare? ma come faccio ad associare a quella combinazione di 5 valori il num di segnalazioni?

-oppure fare tutto nella stessa tabella treni_soppressione?

grazie ciao, spero di essere stato chiaro:)

risposto 8 anni fa
RedLynch
X 0 X

Potresti far inserire tutte le segnalazioni e poi realizzare una SELECT che raggruppa tutti i si e tutti i no per ciascun treno.

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

ciao grazie,

si piu o meno era quel che pensavo  O0

l'unico dubbio è come "Legare" le segnalazioni a quel dato treno (la combinazione dei 5 valori della tua query)

mi scervello un po sxo di trovare solution

ciao ;)

risposto 8 anni fa
RedLynch
X 0 X

Un'ultima cosa, se puoi. Lo script funziona ma vorrei sapere come è possibile assegnare a una variabile il valore numerico che è indicato dentro una colonna della tabella mysql

mi spiego.

$sql2 ="UPDATE treni_soppressione SET no=(no+'$no'), si=(si+'$si')  WHERE giorno = '$giorno' AND mese = '$mese' AND anno = '$anno' AND orario = '$orario' AND direzione = '$direzione' ";

$result2 = mysql_query($sql2);

come vedi , no è una colonna della mia tab che ha un determinato valore numerico sotto forma di intero.

per es poniamo sia 3.

allora, il vorrei, all'interno di uno script php , nel file .php. assegnare a una variabile il valore preso

da quella data colonna o campo del mio database mysql che in quel momento contiene.

dopo quella query, ho provato a fare

$variabile = 'si' ; ma ovviamente non funziona.

perché è come se lui non capisse che 'si' è un valore numerico.

Come fare quindi a passare il contenuto numer della colonna del db a una semplice varabile?

non dirmi che non si puo'...ti prego!!

ciao

 ;)

risposto 8 anni fa
RedLynch
X 0 X

Ma se treni_soppressione deve contenere tutte le segnalazioni allora perché vuoi fare delle UPDATE per incrementare il conteggio dei "si" e dei "no"?

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

ciao... ;)

L'update serve per aggiornar ei contatori che determineranno quale prevale se prevale il si, allora verrà astampato il si e viceversa. Questo per dare "peso" a tutte le segnalazioni.Se lascio il volantino del mio sito in stazione per fare segnalazioni, e 20 utenti vogliono segnalare la soppressione non annunciata , magari qualcuno per sbaglio non ha sentito l'annuncio al mircofono che avvisava, va a casa incavolato e scrive "no"

ma nella media, statisticamente parlando , la maggioranza dovrebbe avere capito giusto...e qusta maggioranza farà si che prevalga la verità: si o no.

ecco los cript ora funziona , ti ringrazio per i teuoi aiuti precedenti, sei stato molto d'aiuto  O0

se puo' servire alla comunità degli utenti.. La filosofia è che prevale democraticamente la maggioranza...

:)

require ('config.php');

$giorno = $_POST['giorno'];

$mese = $_POST['mese'];

$anno = $_POST['anno'];

$orario = $_POST['orario'];

$direzione = $_POST['direzione'];

$ritardo = $_POST ['ritardo'];

$annunciato = $_POST ['annunciato']; 

$var = $annunciato;

if ($var == 'si'){

$si = 1;

$no = 0;

}

else {

$si = 0;

$no = 1;

}

$sql11="SELECT * FROM treni_ritardo WHERE giorno = '$giorno' AND mese = '$mese' AND anno = '$anno' AND orario = '$orario' AND direzione = '$direzione'";

$risultato = mysql_query ($sql11);

$num_righe = mysql_num_rows($risultato);

if($num_righe == 0) {

$sql9 = "INSERT INTO treni_ritardo (giorno,mese,anno,orario,ritardo,direzione,annunciato,no,si) VALUES ('$giorno','$mese','$anno','$orario','$ritardo','$direzione','$annunciato','$no','$si')";

$result = mysql_query($sql9);

}

else{

$sql12 ="UPDATE treni_ritardo SET no=(no+'$no'), si=(si+'$si')  WHERE giorno = '$giorno' AND mese = '$mese' AND anno = '$anno' AND orario = '$orario' AND direzione = '$direzione' ";

$result2 = mysql_query($sql12);

$sicontr="SELECT * FROM treni_ritardo  WHERE giorno = '$giorno' AND mese = '$mese' AND anno = '$anno' AND orario = '$orario' AND direzione = '$direzione'";

$pippo = mysql_query ($sicontr);

$sql5 = mysql_fetch_row ($pippo);

if ($sql5[9]  >= $sql5[8]) {

$sql3 = "UPDATE treni_ritardo SET annunciato = 'si'  WHERE giorno = '$giorno' AND mese = '$mese' AND anno = '$anno' AND orario = '$orario' AND direzione = '$direzione' ";

$result3 = mysql_query($sql3);

  } 

  else {

$sql6 ="UPDATE treni_ritardo SET annunciato = 'no' WHERE giorno = '$giorno' AND mese = '$mese' AND anno = '$anno' AND orario = '$orario' AND direzione = '$direzione' ";

$result4 = mysql_query($sql6);

  }

}

echo "<p><span style='font-family: arial';>grazie per la segnalazione</span></br>";

echo "<span style='font-family: arial';><a href='http://digilander.libero.it/segratrain/'>torna alla pagina principale</a></span>";

?>

risposto 8 anni fa
RedLynch
X 0 X

Questo è per le soppressioni, scusaquello è dei ritardi e  devo ancora perfzionarlo.

grazie ancora ;)

<?

require ('config.php');

$giorno = $_POST['giorno'];

$mese = $_POST['mese'];

$anno = $_POST['anno'];

$orario = $_POST['orario'];

$direzione = $_POST['direzione'];

$annunciata = $_POST ['annunciata']; 

$var = $annunciata;

if ($var == 'si'){

$si = 1;

$no = 0;

}

else {

$si = 0;

$no = 1;

}

$sql1="SELECT * FROM treni_soppressione WHERE giorno = '$giorno' AND mese = '$mese' AND anno = '$anno' AND orario = '$orario' AND direzione = '$direzione'";

$risultato = mysql_query ($sql1);

$num_righe = mysql_num_rows($risultato);

if($num_righe == 0) {

$sql = "INSERT INTO treni_soppressione (giorno,mese,anno,orario,direzione,annunciata,no,si) VALUES ('$giorno','$mese','$anno','$orario','$direzione','$annunciata','$no','$si')";

$result = mysql_query($sql);

}

else{

$sql2 ="UPDATE treni_soppressione SET no=(no+'$no'), si=(si+'$si')  WHERE giorno = '$giorno' AND mese = '$mese' AND anno = '$anno' AND orario = '$orario' AND direzione = '$direzione' ";

$result2 = mysql_query($sql2);

$sicontr="SELECT * FROM treni_soppressione  WHERE giorno = '$giorno' AND mese = '$mese' AND anno = '$anno' AND orario = '$orario' AND direzione = '$direzione'";

$pippo = mysql_query ($sicontr);

$sql5 = mysql_fetch_row ($pippo);

if ($sql5[8]  >= $sql5[7]) {

$sql3 = "UPDATE treni_soppressione SET annunciata = 'si'  WHERE giorno = '$giorno' AND mese = '$mese' AND anno = '$anno' AND orario = '$orario' AND direzione = '$direzione' ";

$result3 = mysql_query($sql3);

  } 

  else {

$sql6 ="UPDATE treni_soppressione SET annunciata = 'no' WHERE giorno = '$giorno' AND mese = '$mese' AND anno = '$anno' AND orario = '$orario' AND direzione = '$direzione' ";

$result4 = mysql_query($sql6);

  }

}

echo "<p><span style='font-family: arial';>grazie per la segnalazione</span></br>";

echo "<span style='font-family: arial';><a href='http://digilander.libero.it/segratrain/'>torna alla pagina principale</a></span>";

?>

risposto 8 anni fa
RedLynch
X 0 X

Ciao a tutti :)

Ho messo a posto tutto questioni e affini tutti risolti.  Il sito è ok.

 O0

grazie gianni!

ho solo un ultimo dubbio.

Dai moduli di drop down se un utente mi inserisci 31 novembre (31/11) devo fare il controllo e dire che "Non esiste quel giorno") ho fatto cosi, ma da quando ho messo lo script  , anche per gli altri inserimenti corretti

per es. 20 novembre, ecc...mi da il msg d'errore.

Qua gli scripts:

$giorno = $_POST['giorno'];

$mese = $_POST['mese'];

$anno = $_POST['anno'];

if ($giorno = '31' and $mese = '11'){

echo "<p> Non esiste quel giorno. Per favore, controlla il tuo inserimento";

die();

}

else {

echo "";

}

e qui continua tutto lo script con levarie query di cui sopra (vedi altri post)

posso sapere secondo qualche idea, come mai blocca tutto lostesso? é sbagliata la logica dell'"And"?

grazie in anticipo

risolto questo, propongo di chiudere il 3d

paolo

 :bye:

risposto 8 anni fa
RedLynch
X 0 X

Ciao

Ho risolto anche questo problema avevo sbagliato la sintassi  :-[

ecco il giusto script

if ($giorno == '31' && $mese = '11'){

echo "<p> Non esiste quel giorno. Per favore, controlla il tuo inserimento";

die();

}

else {

echo "";

}

 :) :bye:

risposto 8 anni fa
RedLynch
X 0 X

ciao

come non detto.

Ora, va bene con tutti gli insreimenti tranne quelli che iniziano con "31" quindi anche ottobre e dicembre

che strano eppure sembra uno script giusto

se qualcuno sa qualcosa, please potrebbe darmi un indizio?

grazie mille

 :) :bye:

risposto 8 anni fa
RedLynch
X 0 X

azz

 scusate ho dimentica un =

lo script è corretto ora

ciao , solved

 ;)

risposto 8 anni fa
RedLynch
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda