Visualizzazione risultati 1 fino 12 di 12

Discussione: [PHP/SQL] Importazione query da file .sql

  1. #1
    Guest

    Predefinito [PHP/SQL] Importazione query da file .sql

    Ciao a tutti, ho un file .sql e vorrei importarlo con php...ma non ci riesco! Non si fa la query:
    Codice PHP:
    $fp = fopen("../altro/db.sql","r");
    $query = "";
    $line = fread($fp, filesize("../altro/db.sql"));
    $line = nl2br($line);
    $query = mysql_query($line);
    fclose($fp);
    Andando sul DB non spuntano le tabelle! XD
    Come faccio? xD Grazie mille...ciau Davide! ^^

  2. #2
    programmazioned non è connesso Utente attivo
    Data registrazione
    25-03-2008
    Messaggi
    440

    Predefinito

    Devi fare una chiamata a mysql_query() per ogni singola query da eseguire, splittando il contenuto del file di testo secondo il separatore ; (punto e virgola).

    Altrimenti c'è mysqli::multi_query(), ma non ricordo se qui su AlterVista sia attiva l'estensione mysqli.

    Ciao!

    P.S: Perchè questo?
    Codice PHP:
    $line = nl2br($line);
    Ultima modifica di programmazioned : 25-05-2009 alle ore 23.01.06

  3. #3
    Guest

    Predefinito

    Ok...ora ho un altro problema dice:
    Parse error: parse error in index.php on line 94
    file index.php
    Codice PHP:
    <?php
    error_reporting
    (E_ALL);
    // operazioni iniziali
    if(!file_exists("altro/config.php")) { header("Location: installazione/index.php"); exit(); }
    else {
    unlink("installazione/db.sql"); unlink("installazione/index.php"); rmdir("installazione"); }

    // file di configurazione
    include("altro/config.php");
    include(
    "altro/funzioni.php");

    // query iniziali
    $opz = sql("SELECT * FROM opzioni LIMIT 0,1");
    $tem = sql("SELECT * FROM tema LIMIT 0,1");

    // creazione del menu
    function menu() {
    $menuq = mysql_query("SELECT * FROM pagine");
    echo
    "<a class=\"menu_item\" href=\"index.php\">Home</a> $opz[sepmenu] ";
    while(
    $menu = mysql_fetch_array($menuq)) {
    echo
    "<a class=\"menu_item\" href=\"index.php?p=$menu[id]\">$menu[titolo]</a> $opz[sepmenu]\n";
    }
    }

    // creazione della pagina
    if(empty($_GET)) {
    $titolp = "Home";
    $testop = $tem["homepage"];
    }
    else if(
    $_GET["p"]) {
    $idp = trim(htmlspecialchars($_GET["p"]));
    if(empty(
    $_GET["p"])) { header("Location: index.php"); exit(); }
    $pag = sql("SELECT * FROM pagine WHERE id = '$idp'");
    if(
    $idp == $pag["id"]) {
    $titolp = $pag["nome"];
    $testop = $pag["testo"];
    } else {
    $titolp = "Errore";
    $testop = "<p><b>Errore, la pagina non esiste!</b></p>";
    }
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <meta name="keywords" content="<?php echo $opz["ricerca"]; ?>" />
    <title><?php echo $opz["nomesito"]; ?></title>
    <style type="text/css">
    body { margin: 0; padding: 0; }
    <?php echo $tem["css"]; ?>
    body { background-attachment: fixed; }
    </style>
    </head>

    <body>
    <div align="center">
    <?php echo $tem["sopra"]; ?>
    <!-- top forum -->
    <table class="header_width" border="0" cellspacing="0" cellpadding="0">
    <tr><td><table class="header" width="100%" border="0" cellspacing="0" cellpadding="0">
    <tr><td><img src="<?php echo $tem["logo"]; ?>" border="0" alt="logo del sito" /></td></tr><!-- logo -->
    </table></td></tr>



    <tr><td><table class="menu" width="100%" border="0" cellspacing="0" cellpadding="0"><tr><td align="center">
    <?php echo menu(); ?>
    </td></tr></table></td></tr></table>
    <br /><?php echo $tem["sotto"]; ?><br />



    <!-- inizio pagina -->
    <table class="skin_tbl" align="center" cellpadding="0" cellspacing="0"><tr><td class="mleft_top"></td><td><table class="mback" width="100%" cellpadding="0" cellspacing="0"><tr><td class="mback_left"></td><td class="mback_center"><div class="mtitle">
    <!-- titolo --><?php echo $titolp; ?><!-- titolo -->
    </div></td><td class="mback_right"></td></tr></table></td><td class="mright_top"></td></tr><tr><td class="mleft"></td><td><table class="mainbg" cellpadding="4" cellspacing="1" style="width:100%"><tr><td class="msg_main">
    <!-- contenuto -->
    <?php echo $testop; ?>
    <!-- contenuto -->
    </td></tr></table></td><td class="mright"></td></tr><tr><td class="mleft_bottom"></td><td><table class="msub" width="100%" cellpadding="0" cellspacing="0"><tr><td class="msub_left"></td><td class="msub_center">&nbsp;</td><td class="msub_right"></td></tr></table></td><td class="mright_bottom"></td></tr></table>
    <!-- fine pagina -->



    <br /><br />
    <!-- SI PREGA DI NON RIMUVERE IL COPYRIGHT. GRAZIE!!!! -->
    <div class="navsub" style="padding: 3px; width: 95%;"><b>[</b> <a href="http://www.davide.ilbello.com">Powered by FFS (ForumFreeSite)</a> &bull; <a href="#">Amministra</a> &bull; <a href="#">Accedi</a> <b>]</b></div><!-- navsub -->
    <!-- fondo forum -->
    <?php echo $tem["sotto"]; ?>
    </div><!-- centrale -->
    </body>
    </html>
    <?php
    mysql_close
    ($cons); // chiudo la $cons
    ?> // linea 94
    Perchè? Dove sbaglio? Grazie mille...ciao Davide! ^^

    PS. Ci sono riuscito per l'importazione! ^^ Se vi serve il codice (a qualcuno in futuro):
    Codice PHP:
    $filedb = "db.sql";
    $apro = fopen($filedb,"r");
    $leggo = fread($apro, filesize($filedb));
    $espl = explode(";",$leggo);
    $conto = count($espl) - 1; $query = "";
    for(
    $i = 0; $i < $conto; $i++) { $query .= mysql_query($espl[$i]); }

    if(
    $query) { echo "<h1>Importazione completata!</h1>"; } else { echo "<b>Importazione NON effettuata!</b>"; }
    Ultima modifica di sIM : 26-05-2009 alle ore 19.38.47

  4. #4
    Guest

    Predefinito

    Nel codice del file index.php ti sei dimenticato di chiudere una parentesi graffa.

  5. #5
    Guest

    Predefinito

    Ok...funziona! ^^ Ora ho un altro problema! Come posso determinare la fine di una variabile? Mi spiego: ho un campo con un simbolo che separa i links (in questo caso //) e questo viene ripetuto alla fine. Ma io vorrei che fosse ripetuto per ultimo. Esempio:
    come si vede: home // pagina 1 // pagina 2 // pagina 3 //
    come vorrei io: home // pagina 1 // pagina 2 // pagina 3
    Come posso fare a levare l'ultimo // per spiegarci? Questo è il codice:
    Codice PHP:
    // creazione del menu
    function menu() {
    global
    $tem;
    $menuq = mysql_query("SELECT * FROM pagine");
    echo
    "<a class=\"menu_item\" href=\"index.php\">Home</a> $tem[sepmenu] ";
    while(
    $menu = mysql_fetch_array($menuq)) {
    echo
    "<a class=\"menu_item\" href=\"index.php?p=$menu[id]\">$menu[nome]</a> $tem[sepmenu]\n";
    }
    }
    Grazie mille...ciau Davide! ^^

  6. #6
    Guest

    Predefinito

    Non ce l'ho fatta a fare qualcosa di più semplice
    Codice PHP:
    <?php
    $m
    = "home // pagina 1 // pagina 2 // pagina 3 //";
    $me = explode("//", $m);
    for(
    $i = 0; $i <= count($me) - 2; $i++) {
    if(
    $i == count($me) - 2) {
    $menu .= $me[$i];
    } else {
    $menu .= $me[$i] . "//";
    }
    }
    echo
    $menu; // in $menu hai il tuo risultato :D
    ?>

  7. #7
    programmazioned non è connesso Utente attivo
    Data registrazione
    25-03-2008
    Messaggi
    440

    Predefinito



    Codice PHP:
    substr($m, 0, strlen($m) - 3);
    Ciao!

  8. #8
    Guest

    Predefinito

    Niente da fare, non funziona! Nokiagames il tuo funziona ma vorrei usare quello di probid non ti seccare! :P
    E' più corto!
    Codice PHP:
    // creazione del menu
    function menu() {
    global
    $tem; $mn = "";
    $menuq = mysql_query("SELECT * FROM pagine");
    $mn .= "<a class=\"menu_item\" href=\"index.php\">Home</a> $tem[sepmenu] ";
    while(
    $menu = mysql_fetch_array($menuq)) {
    $mn .= "<a class=\"menu_item\" href=\"index.php?p=$menu[id]\">$menu[nome]</a> $tem[sepmenu]\n";
    }
    return
    substr($mn, 0, strlen($mn) - 3);
    }

  9. #9
    programmazioned non è connesso Utente attivo
    Data registrazione
    25-03-2008
    Messaggi
    440

    Predefinito

    In che senso non funziona?
    Quell'istruzione fa sì che vengano tolti dalla stringa gli ultimi due caratteri, se c'è qualche problema è probabile che l'errore sia altrove.
    Ciao!

    EDIT: Vedendo i post precedenti, noto come stampassi direttamente il menu, internamente alla procedura.
    Sei sicuro che ora il programma chiamante sia pronto a ricevere e stampare il valore restituito da menu() al di fuori?
    Ultima modifica di programmazioned : 28-05-2009 alle ore 17.51.12

  10. #10
    Guest

    Predefinito

    Quello postato da te non va! Rimane sempre alla fine dell'ultimo collegamento il $tem[sepmenu]...vorrei usare il tuo perchè quello di nokiagames è troppo lungo! O.o
    Edit: se provo così: (senza echo ma return)
    Codice PHP:
    // creazione del menu
    function menu() {
    global
    $tem; $m = "";
    $menuq = mysql_query("SELECT * FROM pagine");
    $m .= "<a class=\"menu_item\" href=\"index.php\">Home</a> $tem[sepmenu] ";
    while(
    $menu = mysql_fetch_array($menuq)) {
    $m .= "<a class=\"menu_item\" href=\"index.php?p=$menu[id]\">$menu[nome]</a> $tem[sepmenu]\n";
    }
    return
    substr($m, 0, strlen($m) - 3);
    }
    Non me lo, da invece se sostituisco return con echo! MA MI LASCIA SEMPRE IL $tem[sepmenu] ALLA FINE! XD
    Ultima modifica di sIM : 28-05-2009 alle ore 18.46.45

  11. #11
    programmazioned non è connesso Utente attivo
    Data registrazione
    25-03-2008
    Messaggi
    440

    Predefinito

    Ripeto: il mio codice, da solo, funziona sicuramente, elimina gli ultimi due caratteri dalla stringa.
    Il problema è l'integrazione con il tuo script.
    Ho visto che alla fine includi un carattere di newline (\n); prova a portare quel 3 a 4 o valori superiori, fai delle prove...un'pò di debug, suvvia :)
    Ciao!

    EDIT:
    se provo così: (senza echo ma return)
    Anche prima usavi return al posto di echo, ti ho anche chiesto se fossi sicuro che funzionasse.
    Non me lo, da invece se sostituisco return con echo! MA MI LASCIA SEMPRE IL $tem[sepmenu] ALLA FINE! XD
    Eh?
    Ma $tem[sepmenu] corrisponde a '//', vero?
    Ultima modifica di programmazioned : 28-05-2009 alle ore 18.54.50

  12. #12
    Guest

    Predefinito

    Allora il problema che non ho detto! XD
    $tem[sepmenu] può diventare anche un codice HTML adesso è un <img src="..." alt=" .... " /> ma può diventare anche un & laquo; (senza spazio) o altro! XD
    Come lo tolgo? é__é
    (Con echo funziona...ma io vorrei farlo funzionare con return! XD)
    Edit: Sono riuscito a farlo funzionare! hihi
    Codice PHP:
    // creazione del menu
    function menu() {
    global
    $tem; $m = "";
    $menuq = mysql_query("SELECT * FROM pagine");
    $m .= "<a class=\"menu_item\" href=\"index.php\">Home</a> $tem[sepmenu] ";
    while(
    $menu = mysql_fetch_array($menuq)) {
    $m .= "<a class=\"menu_item\" href=\"index.php?p=$menu[id]\">$menu[nome]</a> $tem[sepmenu]\n";
    }
    $m = substr($m, 0, strlen($m) - strlen($tem["sepmenu"]) - 1);
    echo
    $m;
    }
    Solo che io al posto di echo vorrei return! Ma non mi funziona se metto return! XD Perchè? O.o
    Ultima modifica di sIM : 28-05-2009 alle ore 22.28.00

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •