problema mysql si php

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
Avatar utilizator
trif
Mesaje:500

problema mysql si php

salut, in primul rand vreau sa zic ca stiu ca este prea mult de citit dar am mare nevoie, asa ca va rog sa fa faceti un pic de timp si sa va uitati dar chiar nu stiu ce sa ii mai fac. scriptul merge intr-un fel dar are un dezavantaj major in alta parte. sa incep sa va explic ceea ce am si ceea ce am facut.
am baza de date urmatoarea:

Cod: Selectaţi tot

STUDETNI ---> cnp -- nume
REPARTIZARI ---> cnp -- id_specializare -- an_intrare
DISCIPLINE ---> id_disciplina --- id_specializare --- an_studiu --- semestru --- an_universitar 	
DISCIPLINE2 ---> id_dis --- denumire
NOTE ---> cnp --- id_disciplina --- valoare
SPECIALIZARI ---> id_specializare --- denumire

MAI SUNT SI ALTE TABELE DAR NU CONTEAZA ACELEA PENTRU CE VREAU EU
si codul care il folosesc si merge este urmatorul:

Cod: Selectaţi tot

$sql="SELECT * FROM studenti 
INNER JOIN note
ON note.cnp=studenti.cnp
INNER JOIN discipline
ON discipline.id_disciplina=note.id_disciplina
INNER JOIN discipline2
ON discipline.id_disciplina=discipline2.id_dis
WHERE studenti.cnp= '".$_GET['cnp']."' AND discipline.an_studiu='".$_GET['an_studiu']."' ORDER BY semestru ASC";
$rezultat = mysql_query($sql);
$num=mysql_num_rows($rezultat);
if (mysql_num_rows($rezultat) == 0) {
echo 'nu esti in acest an! ';
}
echo '<table width=100% align="center" border="1" <tr><center><td> <center>Cod disciplina</td><td><center>Discipline de învatamânt</td> <td><center>Forma verificare</td><td> <center>Note/Medii</td> <td><center> Semestre</td> <td><center> Credite</td>';
while ($note = mysql_fetch_assoc($rezultat)) {
    echo '<tr><td width=10%><center> '.$note['id_disciplina'].'</center></td>';  
    echo '<td width=40%> '.$note['denumire'].'</td>';
	echo '<td width=15%><center> '.$note['forma_verificare'].'</center></td>';
	echo '<td width=15%><center> '.$note['valoare'].' ('.$note['incercari'].')';
	echo '<a href="pagina_catalog.php?editeaza&cnp='.$_GET['cnp'].'&an_studiu='.$_GET['an_studiu'].'&id_disciplina='.$note['id_disciplina'].'&valoare='.$note['valoare'].'"> Editeaza nota </a></center></td>';
	echo '<td width=5%><center>'.$note['semestru'].'</center></td>';
	if ($note['valoare']>='5'){
	echo '<td width=5%><center> '.$note['nr_credite'].'</center></td>';
	 }
	elseif ($note['valoare']<='5' ){
	echo '<td width=5%><font color="red"><center> '.$note['nr_credite'].' *</center></font></td>';
	}
	echo '</tr>';  
 }
   echo ' 
   <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
	<td>&nbsp;</td>
	<td>&nbsp;</td>
    <td> <center>'.$total_credite3.'/'.$total_credite_anuale3.'</center></td>
  </tr> 
</table>';
echo '<br>*-inseamna ca nota este mai mica de 4 si creditul nu este luat!';
 }
mai sunt in acest script anumite valori care sunt apelate dar sa nu va fie o problema ca daca nu sunt in tabele care le-am pus mai sus ca nu este nici o problema pentru script.
Acum va zic ceea ce problema am eu.
Acest script preia din baza de date in functie de CNP si AN STUDIU urmatoarele:
de exemplu:

Cod: Selectaţi tot

Cod disciplina - Discipline de învatamânt - Forma verificare - Note - Semestre - Credite
si este foarte bine pana aici pentru ca asta vreau sa imi scoata dat tot o data cu asta intervine problema si acesta este urmatoarea:
acesta alegere o face in felul urmator:

Cod: Selectaţi tot

se uita --> STUDETNI preia --> cnp  sau in --> REPARTIZARI preia ---> cnp si face legatura cu NOTE ---> cnp iar aici face legatura cu ---> id_disciplina cu DISCIPLINE ---> id_disciplina si apoi afla numele disciplinei din DISCIPLINE2 prin ---> id_dis si pune --- denumire. 
(SPER CA ATI INTELES daca nu ati inteles va uitati mai bine la SELECT si veti intelege de acolo).
PROBLEMA ESTE URMATOAREA: atunci cand adaug o disciplina nu mi-o arata in acest SELECT deoarece disciplina se adauga doar in tabele DISCIPLINE SI DISCIPLINE2 nu si in tabela NOTE prin care se face legatura cu studentul. adica ceea ce vreau eu este ca sa nu mai fac legatura cu tabelul NOTE ci nu stiu cum sa fie. eu vreau ca sa imi faca SELECT-ul bine si sa imi arate cum imi arta cu tabelul note.
CE AR TREBUI SA SCHIMB LA TABELE SI CE TREBUIE SA ADAUG SAU SA SCHIMB. asta este marea problema. Astept raspuns. daca vreti sa ma ajutati personal sa ma anuntati. va multumesc anticipat. cu stima trif
M-am hotarat!
De ce sa fiu trist?
Oricum nu intereseaza pe nimeni...!
Mai bine sunt fericit si ii enervez pe toti cu fericirea mea!
http://www.cantaricrestine.ro
---> cu stima Trif

MarPlo Mesaje:4343
Salut
Dupa cum vad in structura tabelelor, DISCIPLINE e facut sa fie legat de NOTE prin coloana "id_disciplina", in cazul asta nu vad cum sa pastrezi rezultatul Selectului, dar sa si scoti DISCIPLINE ne legate la NOTE.
Daca nu are corespondent in NOTE, ce nota va apara la randul /rezultatu afisat cu acea disciplina?
Incearca vezi ce iese cu Select-ul asa:

Cod: Selectaţi tot

$sql="SELECT * FROM studenti, discipline
INNER JOIN note
ON note.cnp=studenti.cnp
INNER JOIN discipline2
ON discipline.id_disciplina=discipline2.id_dis
WHERE studenti.cnp= '".$_GET['cnp']."' AND discipline.an_studiu='".$_GET['an_studiu']."' ORDER BY semestru ASC";


Subiecte similare