Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [Mysql] - Problema con query

    salve a tutti, ho questo problema: dopo aver fatto queste query

    codice:
       <?
    
         $ricerca = $_POST['ricerca'];
    
         $db = mysql_connect("localhost", "root", "") or die("Non riesco a collegarmi al db");
         mysql_select_db("negozio", $db) or die("non riesco a selezionare il db");
         $result = mysql_query("SELECT * FROM riparazioni WHERE `oggetto` LIKE '%$ricerca%'", $db);
    
         while ($row = mysql_fetch_array($result)) {
    
             $cliente = $row["cliente"];
             $oggetto = $row["oggetto"];
             $difetto = $row["difetto"];
             $data_ritiro = date('d/m/Y', "$row[data_ritiro]");
             $data_consegna = date('d/m/Y', "$row[data_consegna]");
             $costo = $row["costo"];
             $stato = $row["stato"];
             $note = $row["note"];
         }
    
    
    
         $db = mysql_connect("localhost", "root", "") or die("Non riesco a collegarmi al db");
         mysql_select_db("negozio", $db) or die("non riesco a selezionare il db");
         $result2 = mysql_query("SELECT * FROM cliente WHERE `cliente_id` = 'cliente'", $db);
    
         while ($row = mysql_fetch_array($result2)) {
    
             $nome_cliente = $row["nome"];
             $cognome_cliente = $row["cognome"];
    
         }
    
         ?>
    solo che quando poi faccio un echo $nome_cliente, mi da:

    Notice: Undefined variable: nome_cliente in ecc ecc

    come mai???

    grazie

  2. #2
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858
    se le tabelle riparazioni e cliente sono collegate tramite un campo (ho presunto cliente e cliente_id) puoi fare una cosa di questo tipo:
    codice:
    $ricerca = $_POST['ricerca'];
    
    $db = mysql_connect("localhost", "root", "") or die("Non riesco a collegarmi al db");
    mysql_select_db("negozio", $db) or die("non riesco a selezionare il db");
    $result = mysql_query("
    SELECT * FROM riparazioni
    INNER JOIN cliente ON cliente.cliente_id = riparazioni.cliente
    WHERE `riparazioni.oggetto` LIKE '%$ricerca%'
    ", $db);
    
    while ($row = mysql_fetch_array($result)) {
    	$cliente = $row["cliente"];
    	$oggetto = $row["oggetto"];
    	$difetto = $row["difetto"];
    	$data_ritiro = date('d/m/Y', "$row[data_ritiro]");
    	$data_consegna = date('d/m/Y', "$row[data_consegna]");
    	$costo = $row["costo"];
    	$stato = $row["stato"];
    	$note = $row["note"];
    	$nome_cliente = $row["nome"];
    	$cognome_cliente = $row["cognome"];
    }

    think simple think ringo

  3. #3
    ah ottimo.
    una cosa sola: le tabelle per collegarle tra di loro come devo fare? devo fare un'altra tabella con le loro due chiavi dentro no?
    ps. queste sono le due tabelle che ho:

    -- Struttura della tabella `cliente`

    CREATE TABLE `cliente` (

    `cliente_id` int(11) NOT NULL auto_increment,

    `nome` varchar(50) default NULL,

    `cognome` varchar(50) default NULL,

    `indirizzo` varchar(50) default NULL,

    `telefono` varchar(12) default NULL,

    `cellulare` varchar(12) default NULL,

    PRIMARY KEY (`cliente_id`)

    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;



    -- Struttura della tabella `riparazioni`

    CREATE TABLE `riparazioni` (

    `riparazioni_id` int(11) NOT NULL auto_increment,

    `cliente` varchar(50) default NULL,

    `oggetto` varchar(50) default NULL,

    `difetto` varchar(50) default NULL,

    `data_ritiro` varchar(11) default NULL,

    `data_consegna` varchar(11) default NULL,

    `stato` varchar(50) default NULL,

    `costo` float default NULL,

    `note` text,

    PRIMARY KEY (`riparazioni_id`)

    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=33 ;



    Grazie mille

  4. #4
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858
    nella tabella riparazioni devi inserire il riferimento all'id del cliente, quindi togli il campo "cliente" per inserire il campo "cliente_id". questo ti permette quindi di poter collegare, con una relazione 1a1 le due tabelle.



    think simple think ringo

  5. #5
    ah ok.
    ma in teoria la relazione tra le due tabelle non è M a N ?
    un cliente può avere più riparazioni come più riparazioni possono essere fatte da un cliente.

    sbaglio?

    ciao e grazie

  6. #6
    per le relazioni molti a molti devi utilizzare una tabella intermedia con id_prima_tab - id_seconda_tab

    ciau

  7. #7
    e appunto, secondo voi qual'è la scelta migliore in questo caso?

  8. #8
    edit:
    codice:
    $ricerca = $_POST['ricerca'];
    
               $db = mysql_connect("localhost", "root", "") or die("Non riesco a collegarmi al db");
               mysql_select_db("negozio", $db) or die("non riesco a selezionare il db");
               $result = mysql_query("SELECT * FROM riparazioni
                                      INNER JOIN cliente ON cliente_id = cliente
                                      WHERE `oggetto` LIKE '%$ricerca%' ", $db);
    
               while ($row = mysql_fetch_array($result)) {
    	          $cliente = $row["cliente"];
    	          $oggetto = $row["oggetto"];
              	  $difetto = $row["difetto"];
    	          $data_ritiro = date('d/m/Y', "$row[data_ritiro]");
    	          $data_consegna = date('d/m/Y', "$row[data_consegna]");
    	          $costo = $row["costo"];
    	          $stato = $row["stato"];
    	          $note = $row["note"];
    	          $nome_cliente = $row["nome"];
    	          $cognome_cliente = $row["cognome"];
               }
    ho risolto così, e ora funzica.

    è corretto lo stesso vero??

    grazzie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.