Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Cum sterg mails din Promotions

Vanzare cumparare fara transfer b...

Receptie ciudata, in functie de t...

Donez medicamente renale ptr pisica
 Ce componenta e asta si ce ziceti...

Dupa 20 ani de facultate, am uita...

Mobile.de ofera imprumut de bani ...

problema test grila
 Digi24 a disparut de pe TV Lg

Drept de proprietate intelectuala...

Jante noi shitbox

Trinitas TV 4K
 Dacia 1316 cu 6 usi ...

Frecventa modificata radio

Un nou pericol pt batrani

Ar trebui sa vindem imobiliarele ...
 

valori dinamice in sql

- - - - -
  • Please log in to reply
24 replies to this topic

#1
guttuso

guttuso

    Member

  • Grup: Members
  • Posts: 262
  • Înscris: 31.03.2010
Salutare,

Am un dropdown care returneaza valorile 2014 si 2015
<select><option value="2014">2014</option>
		<option value="2015">2015</option>
</select>

si un cod sql ce imi selecteaza valorile care contin anul 2015
$sql = "SELECT name, value
FROM sales
WHERE year IN ('2015') ";


Cum pot lega valoarea returnata din dropdown de codul sql?

Multumesc!

#2
MooF2010

MooF2010

    Senior Member

  • Grup: Senior Members
  • Posts: 5,337
  • Înscris: 24.05.2010
ca orice input

daca ai si oferi ceva mai exact... ori eu mi-am pierdut indemanarea si nu mai gandesc intuitiv in domeniul asta

Edited by MooF2010, 13 August 2016 - 23:27.


#3
sergiu_psc

sergiu_psc

    Member

  • Grup: Members
  • Posts: 880
  • Înscris: 08.01.2008
Poti incerca sa transmiti valoarea selectata ca parametru si apoi sa folosesti acel parametru in sql.

#4
guttuso

guttuso

    Member

  • Grup: Members
  • Posts: 262
  • Înscris: 31.03.2010
Sunt la inceput si nu ma pricep atat de bine. Am uitat sa precizez, mediul de dezvoltare este in PHP si mysqli

#5
mberila

mberila

    Active Member

  • Grup: Members
  • Posts: 1,665
  • Înscris: 20.11.2005
În primul rând, acelui select trebuie să-i dai un atribut name.
Pe urmă, vei găsi valoarea selectată în superglobala $_POST la indexul numelui ce i l-ai dat la select.

#6
guttuso

guttuso

    Member

  • Grup: Members
  • Posts: 262
  • Înscris: 31.03.2010
<select name="sch_an" method="POST"><option value="2014">2014</option>
				<option value="2015">2015</option>
</select>

De aici trebuie sa "plimb" valorile printr-o functie?
Caut de ceva vreme pe google, pe youtube, dar nici sa caut nu ma duc in directia gresit.
Macar sa ma ajutati sa caut in anumite directii, m-ar ajuta foarte mult.

Multumesc!

#7
don_dannielo

don_dannielo

    Bah! Are we more than dumb sheep?

  • Grup: Senior Members
  • Posts: 35,456
  • Înscris: 27.06.2004
$sql = "SELECT name, value
FROM sales
WHERE year IN ('".$_POST['sch_an']."') ";

Edited by don_dannielo, 14 August 2016 - 09:01.


#8
guttuso

guttuso

    Member

  • Grup: Members
  • Posts: 262
  • Înscris: 31.03.2010
ma invart cu diferite incercari, insa fara rezultat, primesc eroare pe linia WHERE year IN ('".$_POST['sch_an']."') "; Notice: Undefined index: sch_an in.....
Daca stiti un tutorial asemanator m-ar ajuta foarte mult.
Multumesc!

#9
don_dannielo

don_dannielo

    Bah! Are we more than dumb sheep?

  • Grup: Senior Members
  • Posts: 35,456
  • Înscris: 27.06.2004
Selectul trebuie pus intr-un <form> cu method post si action fisierul .php care contine sql-ul.

Te-am bagat in ceata?

Edited by don_dannielo, 14 August 2016 - 10:22.


#10
guttuso

guttuso

    Member

  • Grup: Members
  • Posts: 262
  • Înscris: 31.03.2010
am fisierle facute, conexiunile la BD las mai jos codul pe care il am pana acum:
query_chart_pie.php
<?php
//include conexiunea la baza de date
include "bd_cnx.php";
// Interogare SQL
$sql = "SELECT name, value
FROM sales
WHERE year IN ('2015') ";
// Executa interogarea si retine datele returnate
$result = $conn->query($sql);
// daca $result contine cel putin un rand
if ($result->num_rows > 0) {

// afiseaza datele din fiecare rand din $result
	while($row = $result->fetch_assoc()) {
		echo "['".$row['nume']."',".$row['valoare']."],";
	}
} else {
	echo "0 results";
}
// Se inchide conexiunea
$conn->close();
?>


index.php
<!doctype html>
<html>
  <head>
   <meta charset="utf-8">
	<link rel="stylesheet" type="text/css" href="CSS/style.css">
	<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
   
	<script type="text/javascript">
	  google.charts.load("current", {packages:["corechart"]});
	  google.charts.setonloadCallback(drawChart);
	  function drawChart() {
		var data = google.visualization.arrayToDataTable([
		  ['Language', 'Speakers (in millions)'],
		  <?php
	include "query_chart_pie.php";
	?>
		]);
	  var options = {
		legend: 'yes',
		pieSliceText: 'label',
		title: 'Swiss Language Use (100 degree rotation)',
		pieStartAngle: 100,
	  };
		var chart = new google.visualization.PieChart(document.getElementById('piechart'));
		chart.draw(data, options);
	  }
	</script>
  </head>
  <body>
   <div id="navigator">
	  <?php
	   $last_year = date ("Y");
	   echo '<select  name="sch_an" method="POST" autocomplete="off" >';
	   for( $i = 2004; $i <= $last_year; $i++ ) {
		   $selected = ($last_year == $i) ? 'selected="selected"' : '';
		   echo "<option $selected value='$i'>$i</option>\n";
	   }
	   print "</select>";
	  ?>
	</div>
	<div id="piechart" style="width: 1200px; height: 900px;"></div>
  </body>
</html>



Codurile de mai sus, scoate date dintr-o tabela ce are 4 coloane: ID, name, value, year. Momentan scoate valorile din 2015, ca sa scoata valorile din 2014 trebuie sa intru in fisier si sa schimb in sql 2015 cu 2014 si nu vreau sa fac asa :)
Sunt la nivelul zero, de aceea am zis sa postez la incepatori.

#11
don_dannielo

don_dannielo

    Bah! Are we more than dumb sheep?

  • Grup: Senior Members
  • Posts: 35,456
  • Înscris: 27.06.2004
Nu ai <form></form>!
Nu ai buton de submit!
Nu trebuia method in select, ci in form.
Tot la form, action="query_chart_pie.php".

Edited by don_dannielo, 14 August 2016 - 10:29.


#12
guttuso

guttuso

    Member

  • Grup: Members
  • Posts: 262
  • Înscris: 31.03.2010
nu am nevoie de buton de submit. Chart-ul meu are acelasi rezultat ca cel de aici http://sophiedogg.com/graphs/ numai ca, atunci cand selectez un alt an valorile raman aceleasi

#13
don_dannielo

don_dannielo

    Bah! Are we more than dumb sheep?

  • Grup: Senior Members
  • Posts: 35,456
  • Înscris: 27.06.2004
Inteleg.
In primul fisier .php poti sa pui la inceput un var_dump($_REQUEST) si sa postezi aici ce afiseaza cand schimbi anul?

#14
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,239
  • Înscris: 24.02.2007

View Postguttuso, on 14 august 2016 - 10:00, said:

Daca stiti un tutorial asemanator m-ar ajuta foarte mult.

Ce vrei tu tine de abecedarul php-ului. Orice carte decenta iti va arata cum se face.

#15
guttuso

guttuso

    Member

  • Grup: Members
  • Posts: 262
  • Înscris: 31.03.2010
Am mai sintetizat codul pentru a fi mai usor de urmarit.
In situatia de fata codul imi returneaza eroare pe linia cu WHERE year IN ('$_POST[sch_year]') "; iar eroare este: Notice: Undefined index: sch_year in C:\xampp\htdocs\....
<html>
<form method="post">
<select name="sch_year"><option value="2014">2014</option>
			 <option value="2015">2015</option>
</select>
</form>
<br><br>

<?php
//connect BD
include "bd_cnx.php";
// Interogare SQL
$sql = "SELECT name, value
FROM sales
WHERE year IN ('$_POST[sch_year]') ";
// Executa interogarea si retine datele returnate
$result = $conn->query($sql);
// daca $result contine cel putin un rand
if ($result->num_rows > 0) {

// afiseaza datele din fiecare rand din $result
while($row = $result->fetch_assoc()) {
	 echo "['".$row['name']."',".$row['value']."],";
}
} else {
echo "0 results";
}
// Se inchide conexiunea
$conn->close();
?>

</html>


Edited by guttuso, 14 August 2016 - 12:30.


#16
mberila

mberila

    Active Member

  • Grup: Members
  • Posts: 1,665
  • Înscris: 20.11.2005

View Postguttuso, on 14 august 2016 - 10:36, said:

nu am nevoie de buton de submit. Chart-ul meu are acelasi rezultat ca cel de aici http://sophiedogg.com/graphs/ numai ca, atunci cand selectez un alt an valorile raman aceleasi

pagina asta nu are nevoie de buton de submit pt că are un javascript care face un ajax call pt a trimite valoarea selectată și pentru a primii înapoi datele de la server. dacă nu știi să faci așa ceva, îți recomand să pui un buton de submit și să incluzi tot codul tău php într-un if
if (isset($_POST['sch_year']) && !empty($_POST['sch_year'])) {
   // tot codul tău php aici
}


sql-ul l-aș scrie așa

$sql = "SELECT name, value
FROM sales
WHERE year = '{$_POST['sch_year']}' ";



#17
maxtron_69

maxtron_69

    Senior Member

  • Grup: Senior Members
  • Posts: 2,534
  • Înscris: 18.08.2010
Cum zice si dani.user, ce vrei tu este banal si orice tutorial iti arata.

Intelegi conceptul de variabila? Mesajul de eroare primit e destul de clar, dar pare ca nu intelegi conceptul.

Plus ca te complici un pic folosind ajax in loc de un form clasic.

Esti familiarizat cu var_dump? Daca nu, familiarizeaza-te

#18
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,239
  • Înscris: 24.02.2007

View Postmberila, on 14 august 2016 - 15:00, said:

sql-ul l-aș scrie așa

Si ai fi vulnerabil la injection (adica userul rau intentionat isi poate face de cap prin baza ta de date).

Edited by dani.user, 15 August 2016 - 12:16.


Anunturi

Second Opinion Second Opinion

Folosind serviciul second opinion ne puteți trimite RMN-uri, CT -uri, angiografii, fișiere .pdf, documente medicale.

Astfel vă vom putea da o opinie neurochirurgicală, fără ca aceasta să poată înlocui un consult de specialitate. Răspunsurile vor fi date prin e-mail în cel mai scurt timp posibil (de obicei în mai putin de 24 de ore, dar nu mai mult de 48 de ore). Second opinion – Neurohope este un serviciu gratuit.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate