• User Newbie

    Problemissimi con tabelle mysql!!!!

    buongiorno a tutti... sono nuovo del forum ma come ho potuto notare sieteuna grande squadra e quando ci capirò qualcosa in più spero di contribuire attivamente a questa grande famiglia!!!
    lasciando le premesse vengo al mio problema.

    Mio fratello ha un'agenzia immobiliare e mi ha chiesto di curare il sito con un po di presentazione dell'agenzia ma con il vero scopo di pubblicare gli annunci.

    per la parte "gestionale" ovvero l'inserimento in un database degli annunci si è affidato ad una agenzia esterna.

    il portale "gestionale" è organizzato in form e una volta inseriti tutti i dati questi vengono inviati al loro database e "copiati" in una tabella mysql per poter interagire col mio sito.

    il problema è proprio qui: i dati vengono inviati in una tabella chiamata "immobili" e in una chiamata "cantieri". i soli campi esistenti sono "id" e "fields", dove in fields ogni dato inserito sul gestionale viene inserito in un array rendendomi la vita mooolto difficile... per questo motivo, non potendo chiedere alla agenzia esterna alcuna modifica, visto che i geniacci vogliono soldi in più, allora ho deciso di creare un secondo database diviso in campi e molto più semplice per me e per il sito da consultare...

    ora il problema è un'altro... il database viene aggiornato molto di frequente e trascrivere manualmente i dati contenuti nell'array nel mio nuovo database spesso porterebbe ad una mole di lavoro difficile da gestire. la domanda è appunto questa:

    c'è una via semplice che mi esploda l'array del "database_1" e vada ad inserire solo cio che mi serve nel "database_2"???

    vi ringrazio anticipatamente,
    Roberto.


  • User Newbie

    alla fine sono riuscito più o meno ad ottenere ciò che volevo ma ancora manca qualcosa.
    per ovviare al problema del database ho fatto una select sul database_1 che mi scompone i campi dell'array che mi servono in un modulo. il mio problema sta nell'inviare la query in modo che per ogni modulo inserisca un nuovo record. fin'ora mi ha restituito solo l'ultimo... vi posto i codici delle pagine interessate:

    edit.php:

    <html>
    <body>
    <div align="left">
    <form method="post" action="add_data.php">
    <font size="3" face="verdana" color="#0033FF">
    <?php
    include 'inc/config_db1.txt';
    include 'inc/open_db.txt';
    mysql_select_db('Sql144944_1') or die('Impossibile selezionare il database');
    $query = "SELECT id, fields FROM immobili";
    $result = mysql_query($query);
    $data=array();
    $i=0;
    while ($row = mysql_fetch_array ($result))
    {
    $data=explode("|", $row['fields']);
    echo '<table width="400" border="0" cellspacing="1" cellpadding="2"><font size="7" face="Verdana, Arial, Helvetica, sans-serif" color="#000000"><tr> <td width="100">id</td><td><input name="id" type="text" id="id" value="'.$row[id].'"></td></tr><tr> <td width="100">Code</td><td><input name="code" type="text" id="code" value="'.$data[0].'"></td></tr><tr> <td width="100">Vendita/Affitto</td><td><input name="vendita_affitto" type="text" id="vendita_affitto" value="'.$data[3].'"></td></tr><tr> <td width="100">Dove</td><td><input name="dove" type="text" id="dove" value="'.$data[8].'"></td></tr><tr> <td width="100">Descrizione</td><td><input name="descrizione" type="text" id="descrizione" value="'.$data[132].'"></td></tr><tr> <td width="100">Images</td><td><input name="img" type="text" id="img" value="'.$data[121].'"></td></tr><tr> <td width="100"> </td></font>';
    }
    ?>
    <td><input name="add" type="submit" id="add" value="Aggiorna Database"></td></tr></table>
    </form>
    </div>
    </font>
    </body>
    </html>

    questo codice funziona perfettamente e mi restituisce tutti i dati che mi servono in un modulo. per ricevere le informazioni da questo modulo c'è un'altro file, add_data.php:

    <?php
    define("CDC_HOST","...");
    define("CDC_DB","Sql144944_2");
    define("CDC_USER","");
    define("CDC_PASSWORD","
    ");

    $dbconn = mysql_connect(CDC_HOST,CDC_USER,CDC_PASSWORD);
    mysql_select_db(CDC_DB);

    $id = $_POST['id'];
    $code = $_POST['code'];
    $vendita_affitto = $_POST['vendita_affitto'];
    $dove = $_POST['dove'];
    $descrizione = $_POST['descrizione'];
    $img = $_POST['img'];
    $i = $id;

    $query = "INSERT INTO immobili SET id = $id', code = '$code', vendita_affitto = '$vendita_affitto', dove = '$dove', descrizione = '$descrizione')";
    $result = mysql_query ($query);
    if($query==FALSE){
    echo mysql_errno() . ": " . mysql_error(). "\n";}
    ?>

    ovviamente l'errore sta nella parte finale VISTO CHE FIN'ORA NEL DATABASE MI è STATO STAMPATO SOLO L'ULTIMO RECORD ma non so dove cercare e cosa fare per dirgli che per ogni blocco di informazioni deve creare un nuovo record...
    AIUTOOOOOOOOO!!!


  • User Attivo

    a prima occhiata ho notato un errore qui:

    [PHP]
    $query = "INSERT INTO immobili SET id = $id', code = '$code', vendita_affitto = '$vendita_affitto', dove = '$dove', descrizione = '$descrizione')";
    $result = mysql_query ($query);
    if($query==FALSE){
    echo mysql_errno() . ": " . mysql_error(). "\n";}
    ?>
    [/PHP]

    cambia in:

    [PHP]
    $query = "INSERT INTO immobili SET id = $id', code = '$code', vendita_affitto = '$vendita_affitto', dove = '$dove', descrizione = '$descrizione'";
    $result = mysql_query ($query);
    if($query==FALSE){
    echo mysql_errno() . ": " . mysql_error(). "\n";}
    ?>
    [/PHP]


  • User Newbie

    ci ho provato ma il problema resta... la query viene correttamente eseguita, ma non so come scrivere un ciclo, più che altro nn so quale ciclo scegliere per dire che per ogni gruppo di informazioni deve creare un nuovo record... ora mi visualizza solo l'ultimo, mentre io voglio che invii i dati dal primo all'ultimo... se vi serve, questo è quello che visualizza la pagina edit.
    queste info devono essere raccolte in più records...


  • User Attivo

    er ogni gruppo di informazioni deve creare un nuovo record, questo nn mi è chiaro...

    cmq forse ho capito, tu vorresti avere un record per ogni pagina?


  • User Newbie

    se hai visto la pagina edit avrai capito come ogni record del primo database viene esploso in un modulo. a questo punto cliccando su aggiorna database l'insert dovrebbe inserire nel database 66 record, invece me ne ritrovo solo uno, ovvero l'ultimo...


  • User

    Ciao,
    Scusa la domanda sciocca, ma perche' non fai tutto in unico script php senza passare per il macchinoso post e moduli vari?

    Comunque il problema credo che sia negli identificativi dei campi di input, tu assegni ad ogni record gli stessi identificativi mentre questi dovrebbero essere unici per ogni campo.
    Potresti concatenare un indice ad ogni identificativo di campo, qualcosa come
    '<input name="id' . $Index . '" type="text" id="id' . $Index . '" value="'.$row[id].'">'
    stessa cosa per ogni campo e ad ogni ciclo $Index++.
    Nel "ricevente" devi poi looppare su $id = $_POST['id'. $Index] finche' non ti ritorna un not set.

    Ciao
    Bruno