passare una variabile in query per ORDER BY

RobertaC

Nuovo Utente
2 Lug 2013
26
0
0
Buongiorno,mi sono appena iscritta a qst forum e spero che qualcuno possa aiutarmi.
ho una leggerissima infarinatura di php e mysql, ma sto trovando problematico il passaggio di una variabile in una query SELECT che poi mi ordini i risultati in base a una variabile corrispondente a un parametro a scelta dell'utente,
riporto il codice(con i suoi probabili 1000 errori) e spero che qualcuno possa fare chiarezza
il problema principale è sulla variabile $orderx che dovrebbe essere settata con il value della select scelto dall'utente e passato alla query, ma dopo il submit ricarica la stessa pagina pari pari, senza ordinare niente....HELP!


PHP:
<div id="divdx">
        <div id="divdx1">
            <h2>INCIDENT</h2>
            
            <br>
            <form name="form_ordinax" action="user_interface.php" method="post" align="center">
            <h4 align="center">Ordina per:</h4>
            <select name="ordinax">
                <option value="id_incident">ID Incident</option>
                <option value="priorita_segn">Priorità</option>
                <option value="data_apt1">Data di apertura</option>
                <option value="matr_cliente">Matricola cliente</option>
                <option value="gruppo_assegn">Gruppo assegnatario</option>
                <option value="assegnatario">Assegnatario</option>
                <option value="competenza">Competenza</option>
                <option value="scadenza">Scadenza</option>
                <option value="stato_attuale">Stato attuale</option>
            </select>
            <input type="submit" value="ORDINA" align="center">
            </form>
            <br>
                  
        </div>
        
        <?php

$hostname = "localhost";                                                          //apri connessione con il server MySQL
$username = "root";
$password = "";
$dbname = "monitoraggio";

$conn = mysql_connect($hostname, $username, $password) or die ('Errore durante la connessione al server MySQL. aaaarrrrghhhh' . mysql_error());  //Chiusura della connessione in caso di errore
            
            /*echo ("Connessione al server MySQL effettuata con successo.     The Machine spirit is prepared ");*/

$order = $_POST["ordinax"];

mysql_select_db($dbname, $conn) or die ('Errore durante l\'accesso al DataBase, THE MACHINE SPIRIT IS SLEEPING' . mysql_error());
$strSQL = "SELECT incident.id, incident.data_ap1, incident.matr_cliente, incident.priorita_segn, modif_stato.data_mod, modif_stato.gruppo_assegn, modif_stato.assegnatario, modif_stato.stato_attuale FROM incident, modif_stato
WHERE id=id_incid ORDER BY '".$order."' ASC";
                $risultato = mysql_query($strSQL);
                ?>
        
               <div id="divdx2">
            
            <table>
                <td>Id Incident</td>
                <td>Data Apertura</td>
                <td>Matr. Cliente</td>
                <td>Priorità</td>
                <td>Data modifica</td>
                <td>Gruppo Asseg.</td>
                <td>Assegnatario</td>
                <td>Stato attuale</td>
                <?php
                while ($riga = mysql_fetch_array ($risultato))
                {
                echo "<tr> \n";
                echo "<td>" . $riga ["id"] . "</td> \n";
                echo "<td>" . $riga ["data_ap1"] . "</td> \n";
                echo "<td>" . $riga ["matr_cliente"] . "</td> \n";
                echo "<td>" . $riga ["priorita_segn"] . "</td> \n";
                echo "<td>" . $riga ["data_mod"] . "</td> \n";
                echo "<td>" . $riga ["gruppo_assegn"] . "</td> \n";
                echo "<td>" . $riga ["assegnatario"] . "</td> \n";
                echo "<td>" . $riga ["stato_attuale"] . "</td> \n";
                echo "</tr> \n";
                
                }
                ?>
                
            </table>
            
        </div>
    </div>
 
Ultima modifica di un moderatore:
Buongiorno,mi sono appena iscritta a qst forum e spero che qualcuno possa aiutarmi.
ho una leggerissima infarinatura di php e mysql, ma sto trovando problematico il passaggio di una variabile in una query SELECT che poi mi ordini i risultati in base a una variabile corrispondente a un parametro a scelta dell'utente,
riporto il codice(con i suoi probabili 1000 errori) e spero che qualcuno possa fare chiarezza
il problema principale è sulla variabile $orderx che dovrebbe essere settata con il value della select scelto dall'utente e passato alla query, ma dopo il submit ricarica la stessa pagina pari pari, senza ordinare niente....HELP!


PHP:
<div id="divdx">
        <div id="divdx1">
            <h2>INCIDENT</h2>
            
            <br>
            <form name="form_ordinax" action="user_interface.php" method="post" align="center">
            <h4 align="center">Ordina per:</h4>
            <select name="ordinax">
                <option value="id_incident">ID Incident</option>
                <option value="priorita_segn">Priorità</option>
                <option value="data_apt1">Data di apertura</option>
                <option value="matr_cliente">Matricola cliente</option>
                <option value="gruppo_assegn">Gruppo assegnatario</option>
                <option value="assegnatario">Assegnatario</option>
                <option value="competenza">Competenza</option>
                <option value="scadenza">Scadenza</option>
                <option value="stato_attuale">Stato attuale</option>
            </select>
            <input type="submit" value="ORDINA" align="center">
            </form>
            <br>
                  
        </div>
        
        <?php

$hostname = "localhost";                                                          //apri connessione con il server MySQL
$username = "root";
$password = "";
$dbname = "monitoraggio";

$conn = mysql_connect($hostname, $username, $password) or die ('Errore durante la connessione al server MySQL. aaaarrrrghhhh' . mysql_error());  //Chiusura della connessione in caso di errore
            
            /*echo ("Connessione al server MySQL effettuata con successo.     The Machine spirit is prepared ");*/

$order = $_POST["ordinax"];

mysql_select_db($dbname, $conn) or die ('Errore durante l\'accesso al DataBase, THE MACHINE SPIRIT IS SLEEPING' . mysql_error());
$strSQL = "SELECT incident.id, incident.data_ap1, incident.matr_cliente, incident.priorita_segn, modif_stato.data_mod, modif_stato.gruppo_assegn, modif_stato.assegnatario, modif_stato.stato_attuale FROM incident, modif_stato
WHERE id=id_incid ORDER BY '".$order."' ASC";
                $risultato = mysql_query($strSQL);
                ?>
        
               <div id="divdx2">
            
            <table>
                <td>Id Incident</td>
                <td>Data Apertura</td>
                <td>Matr. Cliente</td>
                <td>Priorità</td>
                <td>Data modifica</td>
                <td>Gruppo Asseg.</td>
                <td>Assegnatario</td>
                <td>Stato attuale</td>
                <?php
                while ($riga = mysql_fetch_array ($risultato))
                {
                echo "<tr> \n";
                echo "<td>" . $riga ["id"] . "</td> \n";
                echo "<td>" . $riga ["data_ap1"] . "</td> \n";
                echo "<td>" . $riga ["matr_cliente"] . "</td> \n";
                echo "<td>" . $riga ["priorita_segn"] . "</td> \n";
                echo "<td>" . $riga ["data_mod"] . "</td> \n";
                echo "<td>" . $riga ["gruppo_assegn"] . "</td> \n";
                echo "<td>" . $riga ["assegnatario"] . "</td> \n";
                echo "<td>" . $riga ["stato_attuale"] . "</td> \n";
                echo "</tr> \n";
                
                }
                ?>
                
            </table>
            
        </div>
    </div>

Ciao,
tralasciando che non mi piace molto che metti i nome dei campi in una select, non manca il nome della tab quando fai l'order by??
Se non erro non usi alias nella query, quindi se vuoi ordinare per priorita_segn dovrai scrivere ORDER BY incident.priorita_segn

P.S.
Attenzione, a breve mysql per php verrà deprecato, poi ci sarà o PDO o mysqli
 
ciao
prova così
PHP:
<div id="divdx">
	<div id="divdx1">
		<h2>INCIDENT</h2>
		<br>
		<!-- se è una pagina unica usa $_SERVER così non devi preuccuparti di come si chiama la pagina-->
		<form name="form_ordinax" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" align="center">
			<h4 align="center">Ordina per:</h4>
			<select name="ordinax">
				<option value="id_incident">ID Incident</option>
				<option value="priorita_segn">Priorità</option>
				<option value="data_apt1">Data di apertura</option>
				<option value="matr_cliente">Matricola cliente</option>
				<option value="gruppo_assegn">Gruppo assegnatario</option>
				<option value="assegnatario">Assegnatario</option>
				<option value="competenza">Competenza</option>
				<option value="scadenza">Scadenza</option>
				<option value="stato_attuale">Stato attuale</option>
			</select>
			<input type="submit" value="ORDINA" align="center" name="ordina"><!-- metti il name -->
		</form>
	<br> 
</div>          
<?php
if(isset($_POST["ordina"])){//verifichi che sia stato premuto il submit se form e ricerca sulla stessa pagina
	$hostname = "localhost";//apri connessione con il server MySQL
	$username = "root";
	$password = "";
	$dbname = "monitoraggio";
	$conn = mysql_connect($hostname, $username, $password) or die ('Errore durante la connessione al server MySQL. aaaarrrrghhhh' . mysql_error());  //Chiusura della connessione in caso di errore
	mysql_select_db($dbname, $conn) or die ('Errore durante l\'accesso al DataBase, THE MACHINE SPIRIT IS SLEEPING' . mysql_error());           
    if (isset($_POST["ordinax"])){
		$order = $_POST["ordinax"];
	}else{
		$order = "id_incident";
	}
    $strSQL = "SELECT incident.id, incident.data_ap1, incident.matr_cliente, incident.priorita_segn, modif_stato.data_mod, modif_stato.gruppo_assegn, modif_stato.assegnatario, modif_stato.stato_attuale FROM incident, modif_stato
    WHERE id=id_incid ORDER BY ".$order." ASC";//su order by non ci vogliono gli apici
	$risultato = mysql_query($strSQL);
	//qui metterei un controllo
	/*
	if(mysql_num_rows($risultato) > 0){
	*/
?>
	<div id="divdx2">
	<table>
	<td>Id Incident</td>
	<td>Data Apertura</td>
	<td>Matr. Cliente</td>
	<td>Priorità</td>
	<td>Data modifica</td>
	<td>Gruppo Asseg.</td>
	<td>Assegnatario</td>
	<td>Stato attuale</td>
<?php
	while ($riga = mysql_fetch_array ($risultato)){
		echo "<tr> \n";
		echo "<td>" . $riga ["id"] . "</td> \n";
		echo "<td>" . $riga ["data_ap1"] . "</td> \n";
		echo "<td>" . $riga ["matr_cliente"] . "</td> \n";
		echo "<td>" . $riga ["priorita_segn"] . "</td> \n";
		echo "<td>" . $riga ["data_mod"] . "</td> \n";
		echo "<td>" . $riga ["gruppo_assegn"] . "</td> \n";
		echo "<td>" . $riga ["assegnatario"] . "</td> \n";
		echo "<td>" . $riga ["stato_attuale"] . "</td> \n";
		echo "</tr> \n"; 
	}
?>
	</table>  
	</div>
<?php
/*
	}else{
		echo "record non trovato";
	}
*/
}//fine dell'if submit
?>
</div>

poi appena puoi abbandona mysql e passa alla classe pdo o a mysqli

p.s.
quando posti del codice racchiudile tra gli appositi tag, seconda riga formattazione del post ultime tre iconcine, nell'ordine CODE HTML PHP
 
Funziona!!!!!!!!!

Grazie mille dell'aiuto
sapevo ci fossero tanti errori nel mio codice, purtroppo in vita mia nn mi sn mai accostata all'ambiente informatico, è solo da marzo ke sto seguendo un corso di formazione
gli strumenti che so utilizzare sono davvero pokini, ma è con questi ke devo affrontare lo stage in itinere(come ho già scritto in presentazione).
grazie ancora, sicuramente tornerò a kiedervi aiuto per le altre pagine della mia interfaccia
:elvis:
 
Altra piccola domanda

Sentitevi liberi di mandarmi a quel paese, ma ho un'altra breve domanda.
E' possibile rendere tutti i campi della colonna ID cliccabili, e associarli ad una query che mandi i dati di quel record ad un' altra pagina che ho già creato, per gestirne il contenuto????
 
grazie cmq

Sentitevi liberi di mandarmi a quel paese, ma ho un'altra breve domanda.
E' possibile rendere tutti i campi della colonna ID cliccabili, e associarli ad una query che mandi i dati di quel record ad un' altra pagina che ho già creato, per gestirne il contenuto????

grazie cmq ma ho già risolto
 

Discussioni simili