Operazioni tra record

  • Creatore Discussione Creatore Discussione danilob
  • Data di inizio Data di inizio

danilob

Utente Attivo
3 Feb 2007
124
0
0
ciao vorrei calcolare la differenza tra due numeri inseriti in date diverse:

esempio:
data | PESO
__________________
15/11/2011 |peso: 70

15/12/2011 | peso: 65

vorrei calcolare la diffrenza tra il peso delle due date

Grazie per l'aiuto
 
ciao
se le date sono uniche, cioè se NON hai ad esempio

data | PESO
__________________
15/11/2011 |peso: 70
15/11/2011 | peso 150
15/12/2011 | peso: 65

fai la solita select
PHP:
<?php
//...
$ris=mysql_query("SELECT peso FROM tabella WHERE data ='$data_1' OR data='$data_2' ORDER BY data");
while($riga=mysql_fetch_assoc($ris)){
	$peso[]=$riga['peso'];
}
$dif=$peso[0]-$peso[1];
echo "differenza peso: $dif kg";
//...
?>

dimenticavo piccolo dubbio:
non è che nel campo peso ci "sia peso: 65" ?
 
re

grazie ma non mi è chiara una cosa: le variabili $data1 $data due io non le ho definite! Io vorrei in automatico la differenza tra gli ultimi due pesi inseriti..
 
ciao
vorrei calcolare la differenza tra due numeri inseriti in date diverse:

grazie ma non mi è chiara una cosa: le variabili $data1 $data due io non le ho definite! Io vorrei in automatico la differenza tra gli ultimi due pesi inseriti..
tra quello che hai chiesto nel primo post e quello nel secondo c'è un po' di differenza

se vuoi la differenza del peso tra due date devi valorizzare in qualche modo le due date
nel secondo fare la select order by data desc limit 2 e quindi prelevare i due valori, il primo è relativo alla data più recente il secondo alla precedente.

stai attento però a come hai inserito le date (formato) perche puo capitarti che 15/01/1900 risulti più vecchia di 10/01/2011, se hai inserito le date in formato timestamp o date non dovresti avere problemi
 
re

grazie moltissme funziona...

Ultima cosa se volessi specificare con il segno + o -.

Esempio +9 kg rispetto alla precedente o -9kg rispetto alla precedente..
 
ciao
il segno - lo ritorna sempre se vuoi anche il segno + , potresti farti questa funzione o simile

PHP:
<?php 
function segno($d){ 
    $segno="";//se == 0 ritorna senza segno
	if( $d > 0 ){$segno="+";}elseif( $d < 0 ){$segno="-";}
	return $segno.$d;
} 
//....
echo segno($dif)
?>
o se vuoi anche calcolarti la differenza
PHP:
<?php 
function segno($n_1, $n_2){ 
    $segno="";//se == 0 ritorna senza segno
	$d=$n_1-$n2;
	if( $d > 0 ){$segno="+";}elseif( $d < 0 ){$segno="-";}
	return $segno.$d;
} 
//....
echo segno($peso_1,$peso_2)
?>
 
grazie

grazie sei veramente un grande...

Vorri chiederti un'altra cosa..... Nelle relazioni molti a molti sono in difficolta nella scrittura del codice php di inserimento nella 3 tabella. Faccio un esempio concreto:

Ipotesi di databse in cui voglio registrare le preferenze sportive dei contatti:

TABELLA CONTATTI

ID| COGNOME| NOME | INDIRIZZO
1 | BALDI | ANDREA | PIAZZA CARDUCCI
2 | ROSSI | FULVIO | VIA MARCONI 7

TABELLA SPORT

SPORT| Nome esteso
1 | Calcio
2 | Tennis

TABBELA DI APPOGGIO

ID|SPORT
1 | 1
2 |2



$query ="INSERT INTO Tabella_CONTATTI Set

COGNOME='$cognome',
NOME = '$nome',
INDIRIZZO='$indirizzo'";

poi non riesco a andare avanti.........


grazie
 
ciao
non capisco molto bene quello che vuoi fare.
dimmi se sbaglio.
inserisci il "contatto" (es. 1 | BALDI | ...) che è interessato a uno sport (es. 2 | Tennis)
nella tabella "appoggio" voi inserire l'id del contatto e quello dello sport in modo da vedere che BALDI è interessato al Tennis? cioe (come ai detto) creare un collegamento tra contatto e sport?
se è così, secondo me, devi intanto modificare la tabella appoggio in
id | id_sport | id_contatto
poi immagino che i dati del contatto tu li inserisca tramite un form (giusto?), nel form, quando inserisci il contatto scegli anche a quale sport è interessato?
se è così, scelto lo sport (potresti mettere una <select> che preleva i dati dalla tabella sport) ne trasmetti l'id, poi
dopo l'insert del contatto metti
PHP:
//...
$id_sport_scelto="non so come lo prelevi";// tramite un $_POST ??

$query ="INSERT INTO Tabella_CONTATTI.........";
mysql_query($query);
$id_ultimo_contatto_inserito=mysql_insert_id();//preleva l'ultimo id inserito (autouncrement primary key)
//se fai la tabella come ho indicato sopra
$query_2="INSERT INTO appoggio(id_sport,id_contatto) VALUES('$id_sport_scelto', '$id_ultimo_contatto_inserito');
mysql_query($query_2);
//....
 
le tabelle sono realmente tre...

Io non riesco (ma nenche con le due tabelle) a capire come inserire la chiave esterna = a quella della tabella uno.


esempio

ANAGRAFICA
ID NOME
1 ROSSI

CAP
ID CAP CAP_ESTERNO
2 12100 1

COM FACCIO a inserire il CAP_ESTERNO uguale all'ID presente in ANAGRAFICA?
 
ciao
ti faccio un esempio
nella pag. form inserisci il nome e selezioni il cap
HTML:
<form name="form1" method="post" action="elabora.php">
  <p>nome <input name="nome" type="text" id="nome"></p>
  <p>CAP 
    <select name="cap"><!--questa select potrai renderla dinamica es. prelevando i cap da una tabella elenco_cap -->
      <option>--seleziona--</option>
	  <option value="12100">12100</option>
	  <option value="22100">22100</option>
      <option value="35020">35020</option>
      <option value="50100">50100</option>
    </select>
  </p>
  <p><input name="invia" type="submit" id="invia" value="Invia"></p>
</form>
nella pag elabora.php leggi i dati dal form e fai gli inserimenti nelle tabelle
PHP:
<?php
//dati di connessione
$nome=$_POST['nome'];
$cap=$_POST['cap'];
//vari controlli sui post
//inserisco il nome nella tabella anagrafica
$q_1="INSERT INTO anagrafica(nome) VALUES('$nome')";
$ris=mysql_query($q_1);
//il record inserito in tabella avrà il suo id e quindi lo leggo
$id_ultimo_inserito=mysql_insert_id();
//quindi inserisco nella tabella cap
$q_2="INSERT INTO cap(cap, cap_esterno) VALUES('$cap','$id_ultimo_inserito')";
$ris=mysql_query($q_2);
//.....
?>
almeno penso che sia questo quello che chiedevi
 
grazie

scusa il ritardo nella risposta.. Volevo ringraziarti moltissimo anche se non ho ancora provato..

Quindi in ogni database anche molti a molti io dvo ricavarmi l'ultimo id inserito e poi andre a inserirlo nella tabella collegata?

dico bene?

sai ho comprato una guida mysql php ma non è così dettagliata e nel web non ho trovato insert in php con relazioni 1 a molti.


Per questo ti ringrazio ancora moltissimo e se avessi dei link ti sarei grato me li inviassi o anche il titolo di una guida che tratta l'argomento...


Ah dimenticavo sperando di non disturbarti prima ti aguro un felice 2012

danilo
 
elenco a discesa

vorrei chiederti un'altra cosa :))

in tabellle correlate mi servirebbe nel mio form avere un'elenco a discesa tra cui sceliere ad esempio il tipo di sport.. Tale elenco dovrebbe essere reperito dal dbase... Ed è questo che non riesco a fare..
 
ciao
se hai una tabella in cui sono registrati i tipi di sport, potresti fare così
<?
PHP:
php
//.....
$q_str="SELECT * FROM tabella ORDER BY sport";
$q=mysql_query($q_str);
echo "<select name=\"sport\" id=\"sport\">";
echo "<option value=\"\">seleziona uno sport</option>";
while($riga=mysql_fetch_array($q)){
	$valore=$riga['sport'];//o per es. l'id $riga['id'] in funzione di cosa vuoi inviare con la select
	$testo=$riga['sport'];
	echo "<option value=\"$valore\">$testo</option>";
}
echo "</select>";
//....
?>
 
re

grazie scusa il ritrdo ma sono stato fuori x lavoro... Provo e ti faccio sapere..

grazie mille

Danilo
 
ti chiedo delucidazioni circa una relazione 1:2

Ho una tabella livelli : id_livello pagina tipo_livello


voglio che ogni livello appartenga a + administrators:

ho creato dentro la cartella administrators un ID_Livelli_Admin che deve essere=id_livello

quando vado a inserire $q3="INSERT ignore INTO Livelli (tipo_livello, pagina) VALUES ('$livello','$pagina')" or die (mysql_error())

mi reinserice gli stessi dati (pagina:admin_control.php e livello:base)..
 

Discussioni simili