• User Attivo

    id categ = '$id'

    Ma quella query sleeziona gli articoli... è l'altra query che cancella le notizie...

    keiske


  • User Attivo

    privacy non riesco a starti dietro
    scusatemi
    io faccio una query di selezione x tirare fuori dei risultati
    e cosi facendo visualizzo a video cio che ho nella tabella
    poi ho un tasto che dovrebbe eliminare e href=delete_articolo.php
    dove è il problema?

    Quando risolverò sto problema
    comprerò delle paste
    ciao da danny


  • User Attivo

    Allora, ragioniamo con ordine... tu hai due pagine... in una selezioni un record dalla tabella a seconda di cosa viene passato all'url del browser come $id, ok?

    Una cosa del tipo: pagina.php?id=22

    Selezioni tutti i campi del record dove id = '22'

    Ora, il tuo primo errore è che ad inizio pagina NON controlli se è stato effettivamente passato all'url un link con ?id=xx

    Se non lo controlli quando parte la query ad id_categ viene assegnato il nulla e ti dice che la variabile è indefinita...

    Il secondo errore è che cerchi di passare alla query direttamente la variabile $_GET['id'] invece di "filtrare" il valore e passarlo alla variabile $id

    Entrambe queste cose le fai in cima con questa funzione:

    if(isset($_GET['id'])) {
    $id = mysql_real_escape_string($_GET['id']);
    else
    $id = "";

    Questa funzione dice: "Se esiste un valore in $_GET['id'], associa a $id il valore di $_GET['id'], ma prima aggiungi un carattere \ prima di ogni carattere potenzialmente pericoloso"

    Adesso ti trovi che hai una variabile $id che esiste e che ha un valore se è stato passato un valore nell'url del browser, mentre è uguale a "" se non è stato passato nulla...

    Adesso possiamo fare la query al database per agire sul record che è associato al tuo $id

    $query="SELECT * FROM Articoli WHERE id_categ = '$id'";

    Seleziona tutti i campi dalla tabella articoli per il record dove id_categ è uguale a $id... $id va messo tra apici singoli... tutta la query tra apici doppi.

    Adesso lanci la query
    $risultato=mysql_query($query);

    Adesso analizzi il risultato della query e decidi che fare...

    Allora, nel tuo codice succede che dopo aver lanciato la query scrivi che se non c'è un $risultato lanci un die();

    Scusa ma se non c'è un risultato significa solo che non esiste nessun id_categ con l'id passato al browser, mica che c'è un errore di mysql.

    Poi basta. Col risultato della query non fai nulla per ora, salvo poi verso la fine ciclare intorno con un while e stampare tutti i dettagli dell'articolo... e va bene

    Quindi per chiudere questa pagina bisogna sapere cosa vuoi fare se il $risultato non c'è... ovviamente non lanciare un die() ma magari ricarichi la pagina senza valori e memorizzi dentro una varabile un messaggio di avvertimento...

    if(!$risultato) {
    {
    header("Location: altra_pagina.php");
    exit();
    }

    In questo modo se uno prova a caricare la pagina che dovrebbe mostrare un articolo senza però passare all'url l'id valida di un articolo, torni in automatico alla pagina prima

    E con questa pagina i conti dovrebbero essere saldati...



  • User Attivo

    La pagina del delete, la copi pari pari così intanto, senza quel doppio richiamo di funzioni che non ha molto senso:

    <?php
    //controllo se è statpo passato un id al browser e se no setto $id=""
    if(isset($_GET['id']))
    $id=mysql_real_escape_string($_GET['id']);
    else
    $id = "";

    //richiamo il file di configurazione
    require 'Config.php';
    //richiamo il file di connessione
    require 'Connect.php';

    //preparo la query di eliminazione
    $query="DELETE FROM Articoli WHERE id_articolo='$id'";
    //invio query
    $result = mysql_query($query)
    or die(mysql_error());
    //controllo se ci sono risultati. Se non ce ne sono torno alla pagina prima
    if(mysql_num_rows($result) == 0)
    {
    header("Location: altra_pagina.php");
    exit();
    }
    else
    {
    $messaggio=urlencode("Articolo eliminato");
    header('location:'.'../app_eye_articolo.php'.'?msg='.$messaggio);
    exit;
    //chiudo la connessione
    mysql_close();
    }
    ?>


  • User Attivo

    non so come ringraziarvi
    non lo facevo apposta
    solo che in altri script avevo usati
    quel tipo di codi e andava bene
    comunque ho imparato, prima effettuare il controllo
    comunque il codice, va bene, se foste i caserta vi offrirei un caffè

    ah, volevo chiedervi
    a questa parte di codice

    header('location:'.'../app_eye_articolo.php');
    

    come faccio a passargli l'id_categ

    perchè quando faccio elimina gli articolo scompaiono, perche
    perdono l'id_categ

    ciao e grazie di nuovo da danny1975 :ciauz::vai::arrabbiato:


  • User Attivo

    Cosa vuoi fare lì? Passare alla pagina app_eye_articolo.php la variabile $messaggio per poi visualizzarlo in quell pagina e avvertire dell'avvenuta cancellazione?

    keiske


  • User Attivo

    no! no! :rollo:

    allora tutto comincia cosi
    ho una pagina dove ci sono delle categorie
    clicco sulla categ e si apre la pagine eye_articoli.php, in base all'id_categ
    che gli ho passato

    localhost/studio/sito_gennaro/gestione/app_eye_articolo.php?id=78
    

    poi quando elimino un articolo
    nella pagina delete_articoli.php, ho la location che richiama la pagina
    la pagina eye_articoli.php
    ma non visualizza + gli articoli xrchè perde l'id_categ
    infatti la pagina si presenta cosi

    localhost/studio/sito_gennaro/gestione/app_eye_articolo.php?
    

    ciao e grazie


  • User Attivo

    Scusa, perchè devi per forza tornare a quella pagina? Dopo il delete di un articolo, torna alla prima dove puoi scegliere le categorie...

    keiske


  • User Attivo

    @Privacy-Impresa said:

    Scusa, perchè devi per forza tornare a quella pagina? Dopo il delete di un articolo, torna alla prima dove puoi scegliere le categorie...

    keiske

    come idea non è male
    ma fare cio che ho appena detto è tropppo difficile

    cmq prendo in considerazione la tua idea

    ciao


  • User Attivo

    Non è che sia difficile... basta che ripassi la variabile in modalita url al redirect... quel valore ce l'hai ancora disponibile dentro $id...

    header('location:'.'../app_eye_articolo.php'.'?msg='.$messaggio.'&id='.$id);

    keiske


  • User Attivo

    si ho fatto

    header('location:'.'../app_eye_articolo.php?id='.$id);

    ho eliminato il mess, tanto lo vede in tempo reale che l'articolo è stato eliminato

    cmq facendo cosi mi da l'id_articolo e non l'id_categ

    infatti la pag è sempre vuota

    come mai?


  • User Attivo

    E c'hai ragione... nella pagina del delete $id è dell'articolo, non della categoria...

    Sai quale è il problema? E' che non sapendo bene la successione logica delle pagine... da dove uno viene, dove va, è anche difficile capire che dati estrarre... perchè tecnicamente potresti anche preparare una query al database da mettere in un'heade da includere in tutte le pagine, magari nel connect... così in ogni pagina certi valori ce li hai sempre... ovviamente la query che metti nell'header deve prendere di volta in volta i valori passati all'url...

    keiske


  • User Attivo

    come faccio a prendere l'id della categ
    comunque lo prendo i eye_articoli.php


  • User Attivo

    quando sei nella pagina per cancellare articoli non hai l'id della categoria... o meglio... come arrivi alla pagine del delete? Per forza dalla pagina dove hai visualizzato tutti gli articoli di una categoria? Se sì devi passare da quella pagina a quella del delete l'id della categoria... però a questo punto devi differenziare le variabili

    $id = id_categ
    $art = id_articolo

    I link cliccabili per andare alla pagina del delete saranno:

    delete.php?id=10&art=20

    poi cambi questo

    if(isset($_GET['id']))
    $id=mysql_real_escape_string($_GET['id']);
    else
    $id = "";

    in:

    if(isset($_GET['id'] && $_GET['art')) {
    $art=mysql_real_escape_string($_GET['art']);
    $id=mysql_real_escape_string($_GET['id']);
    } else {
    $id = "";
    $art="";
    }

    E nella query sotto cambi $id in $art per cancellare l'articolo

    In fondo a questo punto hai l'id della categoria stavolta salvato in $id e lo passi nel link del redirect

    keiske


  • User Attivo

    io lo sapevo che non portevo usare sempre $id
    e dovevo differenziarlo
    mannaggia la testa dura che ho
    adesso mi tocca rivedere il codice
    grazie tante privacy
    contento di aver fatto amicizia
    sei un fenomeno/a (booh)

    ti saluto
    sto cacchio di $id mi ha fatto venire il mal di testa

    poi ti faccio sapere come è andata

    ciao e notte da danny1975 :ciauz:


  • User Attivo

    Chiamami pure keiske 😄

    keiske