Pagina 1 di 7 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 61
  1. #1

    Modificare e cancellare righe in un db tramite form e PHP

    ciao ragazzi, mi hanno consigliato di chiedere qui per il mio problema: studio al 5 anno di informatica e sto imparando a praticare con PHP e MySql: sto preparando la tesina di diploma, che è in pratica un sito dinamico con inserimento, modifica ed eliminazione dei vari articoli (che poi sarebbero parte della mia tesina ).

    Il punto è: con quello che ho imparato fino ad ora sono stato in grado di creare il sito, e di creare l'amministrazione che inserisce automaticamente nel database gli articoli, nel sito vengono visualizzati senza problemi (ho seguito la guida pratica php/mysql per capirci^^).

    Il punto è: nella guida non viene fatta menzione su come creare sempre via browser un interfaccia per modificare o cancellare automaticamente i vari articoli.

    Il mio script creato con la guida ora è perfettamente funzionante in locale, ma mi piacerebbe riuscire a integrare anche la modifica e l'eliminazione oltre che l'inserimento e la visualizzazione, senza dover ricorrere a PHPMyAdmin.

    Penso che il sistema sia molto simile, ma sono due giorni che mi scervello e su internet non trovo risposte in merito, ho anche guardato altri script prefatti per provare a capire ma nulla. Qualcuno di voi potrebbe darmi qualche accenno teorico? Giusto il minimo che serve, poi vorrei provare a implementare tutto da solo.

    Grazie a tutti, e spero che qualcuno mi risponda

  2. #2
    Dipende molto anche da come hai creato tu il tuo pannello di amministrazione... Potresti fare una cosa che visualizzi un elenco contenente tutti gli articoli e cliccando su uno crei un form e lo compili con Titolo, Testo, Descrizione o quello che sono e a quel punto sei libero di modificare tutto quello che vuoi e per modificare il DB usi la query UPDATE...


  3. #3
    guarda il mio script, incluso il pannello amministrazione è tutto fatto seguendo la guida pratica php/mysql di html.it

    quello che vorrei evitare è che andando a modificare un articolo ci si trovi di nuovo di fronte ai form vuoti, come se si stesse riscrivendo un nuovo articolo, non so se sono stato chiaro. vorrei che ci si trovasse davanti all'articolo con la possibilità di cambiare anche solo una lettera, un errore, quindi con i form "pieni" (come quando si imposta value="" nel codice del form per capirci).

    il problema non c'è ovviamente con l'eliminazione di un articolo, quello che non so è come estrapolarmi l'id dell'articolo da eliminare. credo che nonostante tutto mi sarebbe davvero molto di aiuto se qualcuno mi facesse qualche esempio di codice... sarei davvero grato visto che a scuola mia (sud italia) la classe è parecchio al di sotto di questo livello ed è frustrante sbattere la testa nel muro senza sapere neanche dove documentarsi... grazie a tutti per le risposte.

  4. #4
    quello che vorrei evitare è che andando a modificare un articolo ci si trovi di nuovo di fronte ai form vuoti, come se si stesse riscrivendo un nuovo articolo, non so se sono stato chiaro. vorrei che ci si trovasse davanti all'articolo con la possibilità di cambiare anche solo una lettera, un errore, quindi con i form "pieni" (come quando si imposta value="" nel codice del form per capirci).
    Questo è proprio quello che dicevo io... Dovresti fare una cosa che ti trovi il form già riempito...

    Una cosa del genere:

    Poniamo il caso che la tua tabella articoli sia composta da diversi campi quali id, title, desc, text
    Codice PHP:
    <?php

    $query 
    "SELECT * FROM articles";

    $results mysql_query($query) or die(mysql_error());
    $num mysql_num_rows($results);

    if (
    $num == 0) {
    echo 
    "Non sono presenti articoli nel Database";
    } else {
    while (
    $row=mysql_fecth_array($results)) {
    echo 
    "[url='nomequestapagina.php?edit=']" $row['title'] . "[/url]";
    }
    }
    ?>
    Questa sarebbe la parte del codice che ti crea l'elenco degli articoli presenti nel DB

    Per compilare il form invece dovresti fare una cosa del genere

    Codice PHP:
    <?php

    echo "<form method='post' action='nometuapagina.php'>";
    if (isset(
    $_REQUEST['edit'])) {
    $query "SELECT * FROM articles WHERE id='" $_REQUEST['edit'] . "'";

    $results mysql_query($query) or die(mysql_error());

    echo 
    "<input type='text' name='title' value='" $row['title'] . "' />";
    echo 
    "
    "
    ;
    echo 
    "<input type='text' name='desc' value='" $row['desc'] . "' />";
    echo 
    "
    "
    ;
    echo 
    "<textarea name='text'>";
    echo 
    $row['text'];
    echo 
    "</textarea>";
    }
    echo 
    "</form>";
    ?>

  5. #5
    grazie per l'aiuto che mi stai dando. allora, penso di esserci più o meno, sto provando ad integrare quel codice nel mio sito, per una questione di comodità ora ho messo sia il codice per visualizzare i titoli degli articoli che quello per la modifica nella stessa pagina.
    in pratica ho una pagina strutturata così:

    Nome_articolo1: Visualizza - Modifica - Elimina
    Nome_articolo2: Visualizza - Modifica - Elimina
    Nome_articolo3: Visualizza - Modifica - Elimina
    Nome_articolo4: Visualizza - Modifica - Elimina

    il link visualizza manda direttamente all articolo visualizzato nel sito, quindi no prob.
    all'eliminazione neanche ci ho pensato ancora
    ecco per "modifica" cosa ho provato a fare discostandomi il meno possibile dalle tue direttive:

    Codice PHP:
    <?php
    // mi connetto al db e faccio le varie operazioni standard
    include('db_connect.php');
    $query "SELECT * FROM articolo";
    $result mysql_query($query$db);

    // qui c'è il codice che genera la lista dei titoli con i link vari seguendo lo schema che ti ho mostrato sopra
    while ($row mysql_fetch_array($result)) {
    echo 
    "$row[titolo] - [url='../view.php?id=$row[id]']Visualizza[/url] - [url='edit.php?edit=']Modifica[/url] - [url='#']Elimina[/url]

    "
    ;}
    mysql_close($db); 
    ?>
    e questa parte sembra non dare problemi: il link visualizza funziona e cliccando su modifica viene richiamata la funzione edit e mi appaiono i form in basso alla pagina (come già detto sono nella stessa pagina (che si chiama edit.php) per comodità mia, poi se mi va faccio un altra pag

    poi arrivano i problemi ^^':

    Codice PHP:
    <?php
    // mi connetto nuvoamente
    include('db_connect.php');

    // reindirizzo i dati che riceverò ad una pagina savemod.php, dove poi dovrò fare quello che
    // ancora non so!
    echo "<form method='post' action='savemod.php'>";

    if (isset(
    $_REQUEST['edit'])) {
    $query "SELECT * FROM articolo WHERE id='" $_REQUEST['edit'] . "'";
    echo 
    "$row[titolo]";
    $result mysql_query($query) or die(mysql_error());


    // non fare caso ai vari campi in più a quelli che mi hai dato, il mio script è fatto così ed
    // ha anche il controllo password (confrontato con una variabile in db_connect quindi no prob)

    echo "<h2>Titolo</h2><input type='text' name='titolo' size='40' value='"$row['titolo'] ."' />";
    echo 
    "

    "
    ;
    echo 
    "<h2>Autore</h2><input type='text' name='autore' size='40' value='" $row['autore'] . "' />";
    echo 
    "

    "
    ;
    echo 
    "<h2>Testo</h2><textarea cols='60' rows='30'  name='testo'>";
    echo 
    $row['testo'];
    echo 
    "</textarea>";
    echo 
    "

    "
    ;
    echo 
    "<h2>Keywords</h2><input type='text' size='40' name='keywords' />";
    echo 
    "

    "
    ;
    echo 
    "<h2>Password</h2><input type='password' size='40' name='pass' />";
    echo 
    "

    "
    ;
    echo 
    "<input type='submit' value='Invia' />";
    }
    echo 
    "</form>";
    mysql_close($db); 
    ?>
    ora... forse avrò sbagliato qualcosa ma a me i form continuano a rimanere vuoti...
    in più una volta arrivati a savemod.php non so cosa metterci dentro. normalmente se si trattasse di creare un nuovo articolo basterebbe una cosa tipo:

    Pagina Insert.php
    Codice PHP:
    <form method="post" action="save.php">
    <
    h2>Titolo:</h2>
    <
    input type="text" size="40" name="titolo" />




    <
    h2>Autore:</h2>
    <
    input type="text" size="40" name="autore" />




    <
    h2>Testo:</h2>
    <
    textarea cols="60" rows="30" name="testo"></textarea>





    <
    h2>Keywords:</h2>
    <
    input type="text" size="40" name="keywords" />




    <
    h2>Password:</h2>
    <
    input type="password" size="40" name="pass" />



    <
    input type="submit" value="Invia" />
    </
    form

    Con corrispettiva pagina save.php
    Codice PHP:
    <?php
    include('db_connect.php');
    if (
    $pass != $password): echo "Password errata";
    $query "INSERT INTO articolo (titolo, testo, autore, keywords) VALUES ('$titolo', '$testo', '$autore', '$keywords')";
      if (
    mysql_query($query$db))
        echo 
    "L'articolo è stato inserito correttamente
    <a href='index.php'>Torna alla amministrazione</)"
    ;
      else
        echo 
    "Errore durante l'inserimento";  
      
    mysql_close($db);
      
    endif; 
    // chiude la verifica della presenza dei dati
    ?>
    fronzoli a parte (c'è dell altro in queste pagine ma l'ho tolto per non farti leggere cose inutili) l'inserimento di nuovi articoli mi funziona alla grande... grazie a dio ci sono riuscito

    se invece devo passare dei dati con il POST a savemod.php, e questi devono andare a sovrascrivere una riga con un preciso ID... come devo fare?

    grazie mille ancora per la mano che mi stai dando!

  6. #6
    Figurati!

    Comunque per quanto riguarda i form vuoti hai ragione ho saltato io un paio di righe...

    Mi ero scordato di ciclare i risultati della query...
    Codice PHP:
    // mi connetto nuvoamente
    include('db_connect.php');

    // reindirizzo i dati che riceverò ad una pagina savemod.php, dove poi dovrò fare quello che
    // ancora non so!
    echo "<form method='post' action='savemod.php'>";

    if (isset(
    $_REQUEST['edit'])) {
    $query "SELECT * FROM articolo WHERE id='" $_REQUEST['edit'] . "'";
    echo 
    "$row[titolo]";
    $result mysql_query($query) or die(mysql_error());


    // non fare caso ai vari campi in più a quelli che mi hai dato, il mio script è fatto così ed
    // ha anche il controllo password (confrontato con una variabile in db_connect quindi no prob)
    while ($row=mysql_fecth_array($query)) {
    echo 
    "<h2>Titolo</h2><input type='text' name='titolo' size='40' value='"$row['titolo'] ."' />";
    echo 
    "

    "
    ;
    echo 
    "<h2>Autore</h2><input type='text' name='autore' size='40' value='" $row['autore'] . "' />";
    echo 
    "

    "
    ;
    echo 
    "<h2>Testo</h2><textarea cols='60' rows='30'  name='testo'>";
    echo 
    $row['testo'];
    echo 
    "</textarea>";
    echo 
    "

    "
    ;
    echo 
    "<h2>Keywords</h2><input type='text' size='40' name='keywords' />";
    echo 
    "

    "
    ;
    echo 
    "<h2>Password</h2><input type='password' size='40' name='pass' />";
    echo 
    "

    "
    ;
    echo 
    "<input type='submit' value='Invia' />";
    }
    }
    echo 
    "</form>";
    mysql_close($db);
    ?> 
    Per quanto riguarda il modificare la query MySQL funziona così:

    UPDATE tabella SET campo=valore, campo2=valore2 WHERE campo3=valore3


  7. #7
    la query sql ancora non l'ho potuta provare per dirti se riesco a farlo funzionare... perché quando inserisco in edit.php il testo dei form che hai corretto mi restituisce questo errore :


    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\sitotesina\amministrazione\edit.php on line 62

    (avevi anche scritto male mysql_fetch_array() - era scritto mysql_fecth_array ma ho corretto! )

    ti posto il codice che mi da questo errore:

    Codice PHP:
    <?php
    include('db_connect.php');
    echo 
    "<form method='post' action='savemod.php'>";
    if (isset(
    $_REQUEST['edit'])) {
    $query "SELECT * FROM articolo WHERE id='" $_REQUEST['edit'] . "'";
    echo 
    "$row[titolo]";

    $result mysql_query($query) or die(mysql_error());

    // LA LINEA INCRIMINATA, OSSIA LA 62, E' QUESTA SUBITO SOTTO AL COMMENTO
    /* --> linea incriminata */ 
    while ($row=mysql_fetch_array($query)) {
    echo 
    "<h2>Titolo</h2><input type='text' name='titolo' size='40' value='"$row['titolo'] ."' />";
    echo 
    "

    "
    ;
    echo 
    "<h2>Autore</h2><input type='text' name='autore' size='40' value='" $row['autore'] . "' />";
    echo 
    "

    "
    ;
    echo 
    "<h2>Testo</h2><textarea cols='60' rows='30'  name='testo'>";
    echo 
    $row['testo'];
    echo 
    "</textarea>";
    echo 
    "

    "
    ;
    echo 
    "<h2>Keywords</h2><input type='text' size='40' name='keywords' />";
    echo 
    "

    "
    ;
    echo 
    "<h2>Password</h2><input type='password' size='40' name='pass' />";
    echo 
    "

    "
    ;
    echo 
    "<input type='submit' value='Invia' />";
    }
    }

    echo 
    "</form>";
    mysql_close($db);
    ?>
    che ho sbagliato ora? :master:

    ancora grazie per il supporto e soprattutto la pazienza!

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    591
    deve ciclare con
    Codice PHP:
    while ($row=mysql_fetch_array($result )) 
    non
    Codice PHP:
     while ($row=mysql_fetch_array($query)) 

  9. #9
    Ops!

    Aggiusto il Post... EDIT = Non posso modificare il post vabbò aggista quella riga e dovrebbe andare...


  10. #10
    nulla... ora mi da pagina bianca... nessun errore, solo non mi appaiono i form, come se non fosse verificata quella condizione

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.