Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 28
  1. #1

    MySQL test on success query

    Salve,

    mi serve determinare quando la query ha successo, ho letto sul manuale di mysqli che
    Codice PHP:
    $result $mydb->query($sqlquery); 
    ritorna FALSE se la query fallisce, TRUE se ha successo e un oggetto se è una select, show ecc...

    Adesso la prima cosa che avevo pensato di fare è ciclare fino a quando la query è falsa, in automatico dopo mi deve aver ritornato l'oggetto che sarà in $result e quindi posso andare a fetchare le row per lavorarci sopra, ma qualcosa non funziona.

    Questo è il codice che ho provato a tirare giù

    Codice PHP:
    $table="componenti";
    $text $_GET['name'];
    $table2$_GET['tab'];
    $temp explode(" ",$text);
    $nr count($temp);
    $i=0;
    $trovato=0;
    while((
    $i<$nr)&& ($trovato==0)){
    $sqlquery ="SELECT * FROM $table as o, $table2 as c WHERE o.ID=c.componenti_ID AND (nome = '$temp[i]' )";
    $result $mydb->query($sqlquery);
    if(
    $result === FALSE$trovato 0;
    else 
    $trovato 1;
     
    $i++;
    }

    while(
    $row $result->fetch_assoc())

    {
     echo 
    $row['clock'];

    La cosa bella è che provando a stampare $trovato è effettivamente a 1, come dovrebbe essere, quindi il controllo funziona, mi trova la query che viene eseguita correttamente, ma echo $row['clock']; che è un campo valido del database per la query che effettuo non viene mostrato .-.

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Non capisco cosa vuoi fare. Comunque se $i>=$nr e $trovato == 0 esci dal ciclo senza avere dati.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  3. #3
    Allora la cosa è contortissima, non avendo conoscenze di php e jquery cerco di cavarmela come posso. Magari puoi aiutarmi ti dico cosa voglio combinare xD

    Allora, ho un sito di annunci, materiale informatico, quando l'utente pubblica un annuncio seleziona una categoria, a questo punto entra in gioco un pezzo di codice jquery che prende l'id della categoria, ne determina a quale tabella del database appartiene, fa una query sul database su quella tabella e mostra tutti i componenti di quella tabella sottoforma di autocomplete(l'utente cliccando va inserire il valore cliccato in un input field).
    E fin qui funziona, fatto questo entra in gioco la seconda parte di codice jquery, viene preso dal campo di input il valore immesso dall'utente tramite l'autocomplete, inviato insieme alla tabella selezionata prima ad uno script php che fa un explode sugli spazi del testo prelevato, esegue una query per ogni valore dell'array generato dall'explode e se trova una corrispondenza nel campo nome allora dovrebbe ritornare alcuni valori.

    Questi valori saranno da stampare in altri input text che vengono resi readonly se l'utente ha cliccato sull'autocomplete.

    In parole pover ho un database mysql contenente componentistica hardware e coglio che in base a cosa l'utente vuole inserire vengano caricati in automatico sulla pagina e inseriti nell'annuncio i valori del determinato componente.

    Aiuto

    Se serve posto tutto il codice che ho messo giù finora ^^

  4. #4
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    In linea di massima con il tuo codice stampi i dati dell'ultima query.
    Non ho capito quello che vuoi fare in quanto non conosco jquery.

    Di più nel tuo codice manca il $ davanti la i in $temp[i]

    Codice PHP:

    while(($i<$nr)) { 
    $sqlquery ="SELECT * FROM $table as o, $table2 as c WHERE o.ID=c.componenti_ID AND (nome = '$temp[$i]' )"
    $result $mydb->query($sqlquery); 
    if(
    $result === FALSE$trovato 0
    else {
      
    $trovato 1;
      while(
    $row $result->fetch_assoc()) 
      { 
         echo 
    $row['clock']; 
      }
    }
      
    $i++; 

    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  5. #5
    Ma adesso visto che ho tanti componenti, devo fare un if per ogni componente e far ritornare valori diversi in base al componente.
    Non esiste un modo meno spartano per fare questa cosa vero?

    Cioè voglio creare una cosa del tipo :

    if CPU return clock, nome, wattaggio, cache...
    else if PSU return watt, nome, format ecc...

    Ovviamente è pseudo-codice

  6. #6
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Secondo me dovresti rividere il tuo database e come sono fatte le tabelle perché non ce la farai.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  7. #7
    Ma il database è molto semplice, è una generalizzazione di componenti.
    Praticamente componenti che ha 3 attributi(nome, anno, produttore) è il padre, poi ho un macello di tabelle che specificano i componenti quindi cpu(l2cache,l3cache, clock, architettura...) e così via.

    Cosa consiglieresti come organizzazione di database? la tabella unica con millemila campi?

  8. #8
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Una tabella che contiene la descrizione di un articolo non deve avere migliaia di campi. Secondo me avere una tabella per ogni tipo di materiale non è la strada giusta. Basti che tu abbia un nuovo tipo per dovere modificare tutto quanto. Non so se il tuo sito è personale o professionale ma se fossi il cliente rifiuterei tale cosa in quanto mi costerebbe quattrini e quattrini alla minima modifica.
    Guarda bene, tra tutti i componenti ci sono tante informazioni comuni.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  9. #9
    senza uno schema del tuo db è un pò contorta da capire la cosa, e considera che sono anche di fretta... cmq non capisco perchè hai un "macello di tabelle che specificano i componenti"

    cioè

    va bene avere un padre generico con pochi campi, come nel tuo caso

    il problema è che dovresti generalizzare i componenti (quindi un'unica tabella con campi del tipo id/label/sql_type), definire una tabella che ti dia il modello per ogni padre (del tipo tipologia_padre/id_componente) in maniera da sapere che un padre di un determinato tipo può avere quei componenti, poi una tabella per associare un padre ai componenti (id_padre/id_componente/value), una tabella per definire l'elenco dei componeni di jquery a disposizione (tipo id/type, esempio input/datetime/date/time/calendar/etc ) e quindi una tabella per associare un componente alla sua rappresentazione tramite jquery (id_componente/id_jquery). Detto questo dovresti poter fare un sistema dinamico per la creazione di tutti i tipi diversi di padri che ti pare, applicando ad ogni tipo una serie di componenti tra cui scegliere in fase di configurazione tipo, e avendo le informazioni necessarie per fare poi il rendering del componente in html (sia in fase di view che di edit).

    Mancano una serie di cose, c'è un analisi di 0 secondi sopra quanto ti ho detto, però potrebbe essere un'idea di partenza. Alla fine dipende molto da quello che stai facendo
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  10. #10
    @Santino, ammetto di averci capito poco, sono agli inizi con i DB mi serve un database che sia prima di tutto semplice da usare, e la generalizzazione sembrava soddisfare le mie esigenze

    Quello che faccio lo vedi qui, http://tecnomercatino.it/item/new
    Seleziona come categoria processori [cpu] e cerca qualcosa in componenti, magari amd che ce n'è xD

    Adesso ammetto che servirebbe aumentare le prestazioni del DB (che è lento di suo in quanto hostato a parte) ...

    Questa è la mia attuale struttura del database:
    Codice PHP:
    CREATE TABLE `componenti` (
        `
    IDVARCHAR(4NOT NULL COLLATE 'utf8_unicode_ci',
        `
    annoINT(4NOT NULL,
        `
    produttoreVARCHAR(30NOT NULL COLLATE 'utf8_unicode_ci',
        `
    nomeVARCHAR(40NOT NULL COLLATE 'utf8_unicode_ci',
        
    PRIMARY KEY (`ID`)
    )
    COLLATE='utf8_unicode_ci'
    ENGINE=InnoDB;

    CREATE TABLE `cpu_tab` (
        `
    componenti_IDVARCHAR(4NOT NULL COLLATE 'utf8_unicode_ci',
        `
    socketVARCHAR(5NOT NULL COLLATE 'utf8_unicode_ci',
        `
    codenameVARCHAR(20NOT NULL COLLATE 'utf8_unicode_ci',
        `
    architetturaVARCHAR(3NOT NULL COLLATE 'utf8_unicode_ci',
        `
    clockINT(4UNSIGNED NOT NULL,
        `
    benchVARCHAR(15000NULL DEFAULT NULL COLLATE 'utf8_unicode_ci',
        `
    corenumINT(2NOT NULL,
        `
    threadsnumINT(2NOT NULL,
        `
    l2cacheVARCHAR(50NULL DEFAULT NULL COLLATE 'utf8_unicode_ci',
        `
    l3cacheVARCHAR(50NULL DEFAULT NULL COLLATE 'utf8_unicode_ci',
        `
    tdpVARCHAR(10NOT NULL COLLATE 'utf8_unicode_ci',
        
    PRIMARY KEY (`componenti_ID`),
        
    CONSTRAINT `FKcpu_tabFOREIGN KEY (`componenti_ID`) REFERENCES `componenti` (`ID`) ON DELETE CASCADE
    )
    COLLATE='utf8_unicode_ci'
    ENGINE=InnoDB;


    CREATE TABLE `case_tab` (
        `
    componenti_IDVARCHAR(4NOT NULL COLLATE 'utf8_unicode_ci',
        `
    formatoVARCHAR(20NOT NULL DEFAULT 'ATX' COLLATE 'utf8_unicode_ci',
        `
    dimensioniVARCHAR(30NOT NULL COLLATE 'utf8_unicode_ci',
        `
    powersupplyVARCHAR(30NULL DEFAULT NULL COLLATE 'utf8_unicode_ci',
        `
    oddslotsINT(2NOT NULL,
        `
    hddslotsINT(3NOT NULL,
        `
    moboVARCHAR(30NOT NULL COLLATE 'utf8_unicode_ci',
        `
    ACfrontVARCHAR(50NULL DEFAULT NULL COLLATE 'utf8_unicode_ci',
        `
    ACleftVARCHAR(50NULL DEFAULT NULL COLLATE 'utf8_unicode_ci',
        `
    ACrightVARCHAR(50NULL DEFAULT NULL COLLATE 'utf8_unicode_ci',
        `
    ACtopVARCHAR(50NULL DEFAULT NULL COLLATE 'utf8_unicode_ci',
        `
    ACbottomVARCHAR(50NULL DEFAULT NULL COLLATE 'utf8_unicode_ci',
        `
    ACrearVARCHAR(50NULL DEFAULT NULL COLLATE 'utf8_unicode_ci',
        `
    ACinsideVARCHAR(50NULL DEFAULT NULL COLLATE 'utf8_unicode_ci',
        `
    maxvgalenghtVARCHAR(5NULL DEFAULT NULL COLLATE 'utf8_unicode_ci',
        `
    maxcpuheightVARCHAR(5NULL DEFAULT NULL COLLATE 'utf8_unicode_ci',
        
    PRIMARY KEY (`componenti_ID`),
        
    CONSTRAINT `FKcase_tabFOREIGN KEY (`componenti_ID`) REFERENCES `componenti` (`ID`) ON DELETE CASCADE
    )
    COLLATE='utf8_unicode_ci'
    ENGINE=InnoDB
    Ho messo solo un paio di tabelle, ma la base è quella componenti a cui si riferiscono le altre .-.

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.