Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 39
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043

    problema con l'id del record inserito

    ciao,
    non riesco a mantenere l'id del record inserito, vorrei che dopo aver inserito un record, nella pagina successiva mi mantenesse quello stesso record invece di darmene uno a caso, ho fatto così ma non funziona.

    Codice PHP:
    <?
    if ($pagina==1){
    $sql "INSERT INTO b_centri (nome_centro)
    VALUES ('
    $nome_centro')";
    mysql_query($sql$conn) or die ($sql);
    $sql2 "SELECT id_centri FROM b_centri ORDER BY id_centri DESC";
    $result2 mysql_query($sql2,$conn);
    $row =mysql_num_rows($result2);
    header ("Location: inserimento2_serviziounghie_new.php?centro=id_centri&pagina=2");
    }
    ?>

    <form enctype="multipart/form-data" name="form" action="<?=$PHP_SELF?>" method="post">
    <span class="testo_grigio_bold">nome centro </span>
    <input type="text" name="nome_centro" size="18" maxlength="30"></td>
    <input type="hidden" name="pagina" value="1">
    <input name="submit" type="submit" class="pulsante" value="inserisci">
    </form>
    Codice PHP:
    <?
    if ($pagina==2){
    $sql "SELECT * FROM b_centri WHERE id_centri=$centro";
    $result mysql_query($sql,$conn);
    $row =mysql_fetch_array($result);

    ?>

    <span class="testo_grigio_bold">nome centro</span>
    <input name="nome_centro" type="text" size="18" maxlength="30" value="<?=$row['nome_centro']?>">

  2. #2
    Stai facendo un po di confusione.
    Procediamo con ordine, in MySQL le operazioni funzionano così:

    • Inserimento:
      codice:
      INSERT INTO table_name (attrib1, attrib2, ..., attribN) VALUES ('value1', 'value2', ..., 'valueN');
      e questo "comando" ritorna fondamentalmente una stringa che da informazioni sugli inserimenti effettuati nel caso di inserimenti multipli.
    • Selezione:
      codice:
      SELECT attrib1, attrib2, ..., attribN FROM table_name WHERE condition ORDER BY attribX ASC/DESC
      che invece ritorna una risorsa nel formato di un array associativo o "numerico"


    successivamente da un operazione di inserimento si può ottenere il numero di righe interessate nel caso di inserimenti multipli oppure l'ID dell'ultimo inserimento effettuato, mentre da un operazione di SELECT siccome si ottiene una risorsa bisogna scorrerla in qualche modo per leggerne i dati.

    Premesso questo il problema del tuo algoritmo è che:
    codice:
    <? 
    if ($pagina==1){ 
       $sql = "INSERT INTO b_centri (nome_centro) VALUES ('$nome_centro')"; 
       mysql_query($sql, $conn) or die ($sql); 
    
       $sql2 = "SELECT id_centri FROM b_centri ORDER BY id_centri DESC"; 
       $result2 = mysql_query($sql2,$conn); 
       $row = mysql_num_rows($result2); 
       header ("Location: inserimento2_serviziounghie_new.php?centro=id_centri&pagina=2"); 
    } 
    ?>
    oltre l'inserimento (errato dato che $nome_centro non è stata valorizzata da nessuna parte) non fa nient'altro.

    La tua select semplicemente ritorna N righe (tuple) che corrispondono a tutti ID_CENTRI nella tabella B_CENTRI ordinati in ordine decrescente ma non ne "estrai" nessuno per poi utilizzarlo nella tua header("location: ...").

    Un esempio corretto sarebbe:
    codice:
    <?PHP
       $conn = mysql_connect(...);
       mysql_db_select(...);
    
       if ( isset($_POST['pagina']) {
          $pagina = (int)$_POST['pagina'];
       } else {
          $pagina = 0;
       }
    
       if ( $pagina == 1 ) {
          $nome_centro = $_POST['nome_centro'];
          $query = "INSERT INTO b_centri(nome_centro)VALUES('$nome_centro');
          mysql_query($query, $conn) or die ("Errore query inserimento");
    
          $id_centro = mysql_insert_id(); // Ottiene l'ultimo ID inserito
          header ("Location: inserimento2_serviziounghie_new.php?centro=$id_centro&pagina=2"); 
       }
    ?>
    
    <form enctype="multipart/form-data" name="form" action="<?=$PHP_SELF?>" method="post"> 
       <span class="testo_grigio_bold">nome centro </span> 
       <input type="text" name="nome_centro" size="18" maxlength="30"></td> 
       <input type="hidden" name="pagina" value="1"> 
       <input name="submit" type="submit" class="pulsante" value="inserisci"> 
    </form>
    Quando scrivi codice ricorda di:
    1) Validare qualsiasi fonte di input esterno (GET, POST) perchè potrebbero essere modificati da utenti malevoli.
    2) Valorizzare (e inizializzare) le variabili che utilizzi
    3) Sarebbe bene anche usare sempre <?PHP invece di <?

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043
    senza questo:

    Codice PHP:
    if ( isset($_POST['pagina']) {
    $pagina = (int)$_POST['pagina'];
    } else {
    $pagina 0;

    rimane lo stesso problema di prima dell'id

    se lo inserisco invece mi da subito questo errore:

    Parse error: syntax error, unexpected '{' in ecc...

    ho controllato le parentesi, ma è tutto a posto

  4. #4
    Utente di HTML.it L'avatar di kodode
    Registrato dal
    Sep 2002
    Messaggi
    1,896
    l'inserimento è corretto? esattamente qual'è il codice che dici nn mantenere l'id?

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043
    quando c'è il redirect nella pagina 2 che contiene questo codice

    Codice PHP:
    <? 
    if ($pagina==2){ 
    $sql "SELECT * FROM b_centri WHERE id_centri=$centro"
    $result mysql_query($sql,$conn); 
    $row =mysql_fetch_array($result); 

    ?> 

    <span class="testo_grigio_bold">nome centro</span> 
    <input name="nome_centro" type="text" size="18" maxlength="30" value="<?=$row['nome_centro']?>">
    non mi viene stampato il nome_centro che ho inserito ma un'altro nome_centro a caso

  6. #6
    Utente di HTML.it L'avatar di kodode
    Registrato dal
    Sep 2002
    Messaggi
    1,896
    Codice PHP:
    <input name="nome_centro" type="text" size="18" maxlength="30" value="<? echo $_POST['nome_centro']?>">
    ,cosi hai provato?

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043
    ma non dovrei mettere GET invece di POST ?
    Nella pagina 2 devo ricevere il dato non inviarlo, l'ho già inviato dalla pagina 1, o sbaglio?

  8. #8
    Utente di HTML.it L'avatar di kodode
    Registrato dal
    Sep 2002
    Messaggi
    1,896
    Codice PHP:
    <form enctype="multipart/form-data" name="form" action="<?=$PHP_SELF?>" method="post"> 
       <span class="testo_grigio_bold">nome centro </span> 
       <input type="text" name="nome_centro" size="18" maxlength="30"></td> 
       <input type="hidden" name="pagina" value="1"> 
       <input name="submit" type="submit" class="pulsante" value="inserisci"> 
    </form>
    questo è il tuo codice? se si devi usare post perchè hai messo method="post"

  9. #9
    Utente di HTML.it L'avatar di kodode
    Registrato dal
    Sep 2002
    Messaggi
    1,896
    aspetta... riguardando tutto il post che hai fatto ora nn capisco più di quale codice stiamo parlando...
    posta l'ultima versione che stai usando (tutto)

  10. #10
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043
    pagina 1

    Codice PHP:
    <? 
    if ($pagina==1){ 
    $sql "INSERT INTO b_centri (nome_centro) VALUES ('$nome_centro')"
    mysql_query($sql$conn) or die ("Errore query inserimento"); 
    $id_centri mysql_insert_id();
    header ("Location: inserimento2_serviziounghie_new.php?centro=id_centri&pagina=2"); 

    ?> 

    <form enctype="multipart/form-data" name="form" action="<?=$PHP_SELF?>" method="post"> 
    <span class="testo_grigio_bold">nome centro </span> 
    <input type="text" name="nome_centro" size="18" maxlength="30"></td> 
    <input type="hidden" name="pagina" value="1"> 
    <input name="submit" type="submit" class="pulsante" value="inserisci"> 
    </form>
    pagina 2

    Codice PHP:
    <? 
    if ($pagina==2){ 
    $sql "SELECT * FROM b_centri WHERE id_centri=$centro"
    $result mysql_query($sql,$conn); 
    $row =mysql_fetch_array($result); 

    ?> 

    <span class="testo_grigio_bold">nome centro</span> 
    <input name="nome_centro" type="text" size="18" maxlength="30" value="<?=$row['nome_centro']?>"

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.