Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    617

    Controllare esistenza di tabella!

    Salve raga, avrei bisogno anxora del vostro aiuto.

    In un form permetto all'utente di creare una tabella nel databse e quindi anche di nominarla.

    Può capitare però che qualcuno usi lo stesso nome e questo non va bene.

    Conosco il comando create table if not exists però o nn so usarlo o non fa al caso mio la query che faccio è questa:

    $creazione=mysql_query("CREATE TABLE IF NOT EXISTS $squadra (id INT(20) AUTO_INCREMENT PRIMARY KEY,nome_cognome CHAR(50),ruolo CHAR(20),club CHAR(15),costo MEDIUMINT(9) )");

    sebbene la tabella esista, non ne crea un altra ma riempie cmq i record di quella già esistente.

    Insomma mi servirebbe dire :se la tabella esiste fermati(e magari un bel echo) se la tabella non esiste allora continua tranquillamente la creazione e il riempimento.

    Però proprio non rienco,mi datre una manina? Grazie mille anticipatamente.

  2. #2
    non usare IF NOT EXISTS e gestisci l'errore che riceverai.

    la query non rende errore con il not exists perche' esegue regolarmente il comando: se non c'e' la crea se gia' esiste sopprassiede. Le vie son tre:

    1) fai una query preventiva per vedere se esiste la tabella
    2) non mettere il not exists e gestisci l'errore (ma non mi piace troppo)
    3) rivedi la struttura del tuo db, il creare tante tabelle identiche con nome diverso mi lascia perplesso dall'inizio dei miei secoli....

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    617
    Per prima cosa mi sembra doverosospiegare un po' cosa stò facendo.
    Neppure a me piace creare tante tabelle solo che dovendo creare le squadre di calcio che compongono il fantacalcio che faccio con gli amici, mi sembra l'unica via percorribile.

    Poi volevo chiedere,anche leggendo in giro vedo che tutti dicono che se la tabella già esiste, php mi riporta un errore.A me non riporta proprio nulla, per dirla tutta, se metto nella tabella un giocatore, e successivamente rifaccio la query di inserimento con lo stesso nome di tabella e lo stesso giocatore, non fa altro che mettere nella stessa tabella 2 volte lo stesso giocatore.Quindi non capisco di che mi stiate parlando, a me va cmq avanti e lo fa anche non IF NOT EXISTS perciò credo si debba partire da questo e poi vedere di capire il resto.

    In secondo luogo mi incuriosiva il fatto di fare una select per gestire l'errore.
    Mi si può fare un esempio non ho ben capito come gesire l'errore, tipo così?:

    if($query==false){echo"La tabella non esiste";}

    Grazie anticipatamente

  4. #4
    Postaci il tuo codice php per la richiesta

    Codice PHP:
    public function setquery($string){
            if (!(
    $this->results $this->query($string))){
                
    printf("<font color='red' size='1'>Error message: %s</font>\n"$this->error);
            }
        } 
    Questa e' la funzione che uso io per poter rilevare l'errore dopo che ho fatto un setquery
    www.youcity.it Il Sito dove poter pubblicizzare la tua azienda gratuitamente!

  5. #5
    vediamo di chiarire:

    Se tu in una istruzione create table metti la condizione IF NOT EXISTS dai a mysql due possibilita':

    1) creare la tabella
    2) non crearla perche' gia' esiste.

    in entrambi i casi non si verifica un errore per il semplice fatto che esegue con successo la tua istruzione.

    Per quanto riguarda la gestione degli errori prova il seguente script.... eseguilo piu' volte e/o cambia il nome della tabella per vedere che cosa succede

    Codice PHP:
    <?php
    mysql_connect
    ('localhost''tuo_user''tua_pwd');
    mysql_select_db('test');
    $nome_tab 'test1';

    $query "
              create table 
    $nome_tab (
              id int(4) unsigned not null auto_increment primary key,
              ciccio varchar(100) default ''
              ) "
    ;

    $res mysql_query($query);

    if(!
    $res) { 
               exit(
    "la tabella con nome $nome_tab è già presente." ); 
               } else { 
                       echo 
    "la tabella con nome $nome_tab è stata creata"; }

    ?>
    mi pare ovvio che se la tabella esiste e tu continui lo script l'insert inserira' "giustamente" i record nella tabella esistente. Non fa altro di meno di quanto gli chiedi. Se e' un errore la tabella gia' esistente devi fermare lo script.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    617
    if(!$res) {
    exit("la tabella con nome $nome_tab è già presente." );
    } else {
    echo "la tabella con nome $nome_tab è stata creata"; }

    Ora funziona, la parte postata sopra era quella che realmente mi serviva.

    Grazie mille dell'aiuto.

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.