Visualizzazione dei risultati da 1 a 8 su 8

Discussione: aggiornare DB

  1. #1

    [php][MySQL] modifiche alla riga

    Ciao a tutti, come faccio a modificare un campo di una riga estratta dal database?

    mi spiego meglio:
    fatto il SELECT ottengo tutti i campi in un array tipo $row[]...
    Codice PHP:
        $query "SELECT `...................................;";
        
    $result mysql_query($query$db);
        
    $row mysql_fetch_array($result); 
    un capo è composto da una serie di nomi (mica tanti, circa 20, tipo image1, image2, ecc.) che estraggo e trasformo a loro volta in un array da cui voglio cancellare un nome passato precedentemente da un form ($rem_image)
    Codice PHP:
        $images explode(", "$row[images]);
        foreach (
    $images as $i => $image) {
            if (
    in_array($rem_image$images)) {
                unset(
    $images[$i]);
            }
        } 
    ora vorrei ricompattare il tutto, riscrivere il campo del database, saluti e baci, chiudere la porta e arrivederci.
    Codice PHP:
        $row[images] = implode(", "$images);
        
    $query "UPDATE `stories` SET `images` = '$row[images], ' WHERE....... ;";
        
    mysql_query($query$db);
        
    //chiude la connessione al database----------------------------
        
    mysql_close($db);

    naturalmente non funziona e non da neppure errore?
    lo so che non è un tema interessante ma ora sono anche stanco e non tiro ne picche ne bastoni. qualcuno ha voglia di darmi una dritta?
    ciao!

  2. #2
    Ma scusa non fai prima ad aggiornare il campo nel database?
    Codice PHP:

        $query 
    "UPDATE `stories` SET `images` = `$row[images]` WHERE `images`= `$rem_image`";
        
    mysql_query($query$db);
        
    //chiude la connessione al database----------------------------
        
    mysql_close($db);

    Non ho capito bene cosa intendi per cancellare:
    Eliminare il record dal database o sostituire images con un altro valore?

  3. #3

    Grazie LoHaker....

    Prima di tutto grazie di avermi risposto e scusa se riapro il forum solo ora ma ho avuto due giorni di inferno...... comunque tornando a noi rispondi subito alla tua domanda e mi spiego meglio....

    il database in questione gestisce i lavori fotografici sul mio sito. ogni lavoro è composto da una 20na di foto circa. Quando accedo al sito come amministratore vorrei poter modificare ad esempio il lavoro chiamato "piedi" che è un bellissimo reportage sulle estremità inferiori, ricco di ben 20 ritratti di piedi. questi 20 ritratti sono definiti in un campo della riga che corrisponde al reportage in questione. nel campo "images" ho: image1, image2, image3, ecc.

    se voglio levare la foto image2, nella mia ignoranza ho pensato di dover estrarre tutto e metterlo in un array, levare la foto incriminata dall'array, ricompattare e riscrivere col comando update.

    di seguito il codice che ho partorito e che funziona ma mi cancella tutte le foto che precedono quella selezionata.....Perchè? Boh? Francamente credo di essere in un vicolo cieco.

    Codice PHP:
    if ($HTTP_POST_VARS['remove']) {
    //apre una connessione al database----------------------------------------------
    $db mysql_connect($db_host$db_user$db_password);
        if (
    $db == FALSE) die ("Errore nella connessione. Verificare i parametri nel file config.inc.php\n");
        
    mysql_select_db($db_name$db) or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php\n");
        
    //estrae le foto caricate dalla riga story-----------------------------------------
        
    $query "SELECT `images` FROM `stories` WHERE `stories`.`main_photo` = '$main_photo' LIMIT 1 ;";
        
    $result mysql_query($query$db);
        
    $row mysql_fetch_array($result);
        
    $images explode(", "$row[images]);
        foreach (
    $images as $i => $image) {
            if (
    in_array($rem_image$imagestrue)) {
                unset(
    $images[$i]);
                
            }
        }
        
    $images array_values($images);
        
    $images implode(", "$images);
        
    $query "UPDATE `stories` SET `images` = '$images' WHERE `stories`.`main_photo` = '$main_photo' LIMIT 1 ;";
        
    mysql_query($query$db);
        
    //chiude la connessione al database----------------------------
        
    mysql_close($db);


  4. #4
    Prova a sostituire il foreach con quest'altro:
    Codice PHP:
    foreach ($images as $i => $image) {
        if (
    $rem_image!=$image//Se non è da eliminare la memorizza nel nuovo array
        
    {
            
    $tempImg[$i]=$image;
        }
    }
    $images $tempImg
    Non ricordo se è possibile modificare la variabile $images direttamente nel foreach e per sicurezza ho usato la variabile $tempImg

  5. #5
    Ma le immagini sono salvate nel database? In questo caso come fai a confrontarle con la variabile $rem_image?

  6. #6
    no no le immagini sono in una cartella nel database ho messo solo la lista dei nomi dei file vorrei solo cancellarne uno dalla lista....grazie ora provo la tua correzione.

  7. #7
    GRAZIE FESS!!!!! (che vuol dire molto)

    problema risolto tuttavia ho modificato il tuo suggerimento come segue per non trovarmi scritto "Array" al posto della lista di nomi. Pare sia necessario implodare l'array prima di scriverlo....

    Codice PHP:
    foreach ($images as $i => $image) {
            if (
    $rem_image != $image//Se non è da eliminare la memorizza nel nuovo array
            
    {
                
    $tmp_images[$i] = $image;
            }
        }
        
    $images implode(", "$tmp_images); 
    grazie ancora e buona serata!!!

  8. #8
    Di nulla, l'implode me l'ero vergessen(che vuol dire dimenticato) :rollo:

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.