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

    3 insert al prezzo di uno

    ciao a tutti,
    ho ripreso un codice scritto anni fa, che all'epoca funzionava bene...
    In pratica c'è una funzione che fa una insert in una tabella, ma realmente mi inserisce 3 record, di cui solo il primo è correttamente compilato, gli altri sono vuoti (eccetto l'id, che è auto increment).
    Com'è possibile?
    Credevo che fosse un qualche errore dovuto a php che ho in locale, ma l'ho provato altrove e da lo stesso difetto...
    Inoltre, la funzione mysql_affected_rows mi restituisce 1 ed ho messo degli echo prima, dopo e durante l'esecuzione della funzione ed essi compaiono una volta sola, poiché pensavo che la funzione venisse rikiamata + volte...
    cosa potrebbe essere?
    Qui c'è il codice
    Codice PHP:
    function inserimento($id=false)

      {

        global 
    $_DATABASE,$_MYNEWS;



        
    $conn=mysql_connect($_DATABASE['host'],$_DATABASE['username'],$_DATABASE['password']);

        
    mysql_select_db($_MYNEWS['dbname']);



        if (
    $id ==false)

        {

          
    $query=mysql_query("INSERT INTO `".$_MYNEWS['table_suffix']."news` (`data`,`titolo`,`sottotitolo`,`testo`) VALUES('".$_POST['data']."','".addslashes($_POST['titolo'])."','".addslashes($_POST['sottotitolo'])."','".addslashes($_POST['content'])."')");

          echo 
    "Affected: ".mysql_affected_rows();



          if (
    $query)

            echo 
    "MESSAGGIO INSERITO CORRETTAMENTE";

          else 

            echo 
    "ERRORE DURANTE L'INSERIMENTO DEL MESSAGGIO";

        }

        else

        {

          
    $query=mysql_query("UPDATE `".$_MYNEWS['table_suffix']."news` SET `titolo`='".addslashes($_POST['titolo'])."',`sottotitolo`='".addslashes($_POST['sottotitolo'])."',`testo`='".addslashes($_POST['content'])."' WHERE `id`=".$id);



          if (
    $query)

            echo 
    "MESSAGGIO AGGIORNATO CORRETTAMENTE";

          else 

            echo 
    "ERRORE DURANTE L'AGGIORNAMENTO DEL MESSAGGIO";

        }

        

        
    mysql_close($conn);

      } 
    Nell'anno 1968 è bastata la potenza di due Commodore 64 per lanciare con successo una navicella sulla Luna; nell'anno 2007 ci vogliono la potenza di un processore quad core 3.30 GHz e 3 Gb di RAM (requisiti minimi ufficiali) per utilizzare Windows Vista. Qualcosa deve essere andato storto!

  2. #2
    A parte il fatto che il codice messo cosi' e' illeggibile a causa di righe eccessivamente lunghe.... ma tre insert = a tre esecuzioni di insert di cui due senza passare i dati di inserimento. Probabilmente l'errore non e' nella funzione in se ma nel contesto generale dello script.

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

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    813
    Originariamente inviato da piero.mac
    A parte il fatto che il codice messo cosi' e' illeggibile a causa di righe eccessivamente lunghe.... ma tre insert = a tre esecuzioni di insert di cui due senza passare i dati di inserimento. Probabilmente l'errore non e' nella funzione in se ma nel contesto generale dello script.
    vedi, se io metto un die prima di mysql_query, ovviamente, non ho nulla...
    se io metto il die appena dopo mysql_query ecco che spuntano queste 3 insert....ripeto che mysql_affected_rows mi restituisce 1
    Nell'anno 1968 è bastata la potenza di due Commodore 64 per lanciare con successo una navicella sulla Luna; nell'anno 2007 ci vogliono la potenza di un processore quad core 3.30 GHz e 3 Gb di RAM (requisiti minimi ufficiali) per utilizzare Windows Vista. Qualcosa deve essere andato storto!

  4. #4
    Originariamente inviato da Hysoka
    vedi, se io metto un die prima di mysql_query, ovviamente, non ho nulla...
    se io metto il die appena dopo mysql_query ecco che spuntano queste 3 insert....ripeto che mysql_affected_rows mi restituisce 1
    mysql_affected_row restituisce il risultato dell'ultima query non delle ultime tre.

    fai una prova: dopo la query metti un return che ti conti il numero delle query.

    Codice PHP:
    echo "Affected: ".mysql_affected_rows();

    return 
    $ciccio[] = mysql_affected_rows(); 
    e poi fuori dalla funzione:

    print_r($ciccio);

    almeno ti rendi conto se il tutto avviene tramite la funzione oppure semplicemente non avvenga un refresh della pagina con lo script.

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

  5. #5
    Sicuro che non richiami quella funzione in 3 parti dell'intero script?

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    813

    trovato il "bug"

    il fatto che il codice prima andava e ora no e che ieri io ho modificato il codice, mettendo un template header e footer usando XTemplate

    Mettendo rparse, anziche parse come adesso, mi dava questo "bug"!
    Devo approfondire di più su questo rparse

    Codice PHP:
    $header = new XTemplate("./tpl/header.tpl");

    $header->assign("TITLE","Amministrazione");

    $header->parse("header");

    $header->out("header");



    if (isset(
    $_SESSION['ok']))

    {

      
    $index=isset($_GET['action'])?$_GET['action']:'none';



      switch (
    $index)

      {

        case 
    'admin':  include ($_ADMIN['module'][$_GET['module']]);

                       
    $admin_page=isset($_GET['adm_page'])?$_GET['adm_page']:0;

                       
    $a = new $_GET['module'];

                    
                                          

                       
    $a->admin($admin_page);

                       
    r();

                       break;

      }

    }




    $footer = new XTemplate("./tpl/footer.tpl");

    $footer->parse("footer");

    $footer->out("footer"); 
    Nell'anno 1968 è bastata la potenza di due Commodore 64 per lanciare con successo una navicella sulla Luna; nell'anno 2007 ci vogliono la potenza di un processore quad core 3.30 GHz e 3 Gb di RAM (requisiti minimi ufficiali) per utilizzare Windows Vista. Qualcosa deve essere andato storto!

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.