rendere il codice più funzionale

  • Creatore Discussione Creatore Discussione emanuelb
  • Data di inizio Data di inizio

emanuelb

Nuovo Utente
25 Mar 2007
21
0
0
Ciao ragazzi!
come da titolo, un niubbo vi chiede un parere, come posso ottimizzare questo script? A parte il fatto che mancherebbe la parte di validazione dell'array $array che pensavo di ottenere con un if ($array[]=0) echo "nessun valore" else {prosegui con lo script} (ditemi se ho pensato bene).
PHP:
<?php
 
 //recupero codice
 $id = $_POST['codcliente'];
 $id2= $_POST['prodotto'];
 $id3= $_POST['industry'];
 if(!empty($id)){
  $query= "SELECT * FROM ch WHERE id  LIKE ".$id; 
 }
 else{
  $query= "SELECT * FROM ch WHERE prodotto LIKE '$id2%' "; 
 }
 if(empty($id) && empty($id2)){
 
 $query= "SELECT * FROM ch WHERE Industry LIKE '%$id3%' ";
 
 }
 if (empty($id) && empty ($id2) && empty($id3)){
 

     die("Selezionare un criterio di ricerca") ;
 }
 //connessione al DB
 $dbc = mysql_connect('localhost', 'root','root','CH_db')
 or die('Errore di connessione al db');
 $db = mysql_select_db('CH_db');  
 
 
 //query al db
 $result=mysql_query($query); 

    if(!empty($result)){
 
             $array= mysql_fetch_row ($result);
			 
			 $numfield=mysql_num_fields($result);
			  
			  echo "<table border=1><tr>";
			  echo "<th><b>Azienda</b></th>";    
			  echo "<th><b>codice cliente</b></th>";
			  echo "<th><b>prodotto</b></th>";
			  echo "<th><b>scad contratto</b></th>";
			  echo "<th><b>referente</b></th>";
			  echo "<th><b>num referente</b></th>";
			  echo "<th><b>commerciale</b></th>";
			  echo "<th><b>limitazioni lib</b></th>";
			  echo "<th><b>note limitazionib></th>";
			  echo "<th><b>scad. liberatoria</b></th>";
			  echo "<th><b>area</b></th>";
			  echo "<th><b>provincia</b></th>";
			  echo "<th><b>industry</b></th>";
			  echo  "</tr>";
			 
			 
			 foreach ($array as $campo) {
			 
			 echo  "<td>$campo</td>";       
			 }
			 echo "</tr></table>"; 
             
			




   }else{
   
              echo "Issues trying to fetch results. Check the error-->" . mysql_error();
   
            }
 
 
 
?>
 
Ciao,
io la prima parte la farei piu o meno cosi:
PHP:
<?php

//recupero codice
// mettiamo un minimo di controllo
$id = (int) $_POST['codcliente'];
$id2 = mysql_real_escape_string($_POST['prodotto']);
$id3 = mysql_real_escape_string($_POST['industry']);

if (empty($id) && empty($id2) && empty($id3)) {
    die("Selezionare un criterio di ricerca");
}
// creiamo la query su misura
$query = "SELECT * FROM ch WHERE 1";
if (isset($id) && $id > 0) {
    $query.= " && id = $id";
}
if (isset($id2) && !empty($id2)) {
    $query.= " && prodotto LIKE '$id2%'";
}
if (isset($id3) && !empty($id3)) {
    $query.= " && Industry LIKE '%$id3%'";
}

//connessione al DB .........

che ne pensi?
 
Un suggerimento: usa il php solo quando è realmente necessario.
Quindi nella parte centrale, dove crei la tabella ti consiglio di chiudere il php e scrivere direttamente in HTML.
 
Ciao,
io la prima parte la farei piu o meno cosi:
PHP:
<?php

//recupero codice
// mettiamo un minimo di controllo
$id = (int) $_POST['codcliente'];
$id2 = mysql_real_escape_string($_POST['prodotto']);
$id3 = mysql_real_escape_string($_POST['industry']);

if (empty($id) && empty($id2) && empty($id3)) {
    die("Selezionare un criterio di ricerca");
}
// creiamo la query su misura
$query = "SELECT * FROM ch WHERE 1";
if (isset($id) && $id > 0) {
    $query.= " && id = $id";
}
if (isset($id2) && !empty($id2)) {
    $query.= " && prodotto LIKE '$id2%'";
}
if (isset($id3) && !empty($id3)) {
    $query.= " && Industry LIKE '%$id3%'";
}

//connessione al DB .........

che ne pensi?




Penso che hai perfettamente ragione, grazie Criric! Non capisco solo l'utilizzo della riga
PHP:
$query = "SELECT * FROM ch WHERE 1
sulla parte di documentazione che ho io non la trovo...
 
Quella query, essendo WHERE 1 sempre vero, seleziona tutte le tuple della tabella ch.
Ma se controlli successivamente lui aggiunge a $query altri controlli al WHERE con && (visto che la
Condizione WHERE 1 è una tautologia allora ne aggiunge un'altra con 'and' per far si che sia vera solo quando anche l'altra è vera).
Aggiunge anche l'operatore like che spero tu sappia cosa sia ;)
 

Discussioni simili