Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    form action e script in sottocartella

    Salve a tutti, ho incontrato questo problema recentemente:

    Per fare un pò più di chiarezza nella folder principale del mio progetto php, ho deciso di creare una sottocartella chiamata Scripts, che dovrebbe contenere gli scripts di ricezione ed elaborazione dei form di pagine che invece si trovano nella pagina principale del progetto.

    Folder principale: index.php, diciamo che dentro index c'è un form che rimanda a easy.php
    Folder Scripts: easy.php

    La pagina easy.php, riceve tramite metodo post dei dati provenienti dal form dell'ipotetica pagina index.php, e in fondo tramite codice header, mi rimanda alla index.php.

    Gli scripts sono corretti, se metto index.php e easy.php nella stessa cartella, funziona tutto.
    Se invece metto easy.php dentro la cartella Scripts, dopo aver lanciato il form da index.php mi appare pagina bianca, i dati non vengono memorizzati nel database, e non c'è reindirizzamento, in poche parole non funziona niente!

    Ovviamente cambio sempre l'action del form da:
    action = "easy.php" a action = "/scripts/easy.php"

    C'è un arcano motivo per cui questo procedimento non funziona?

    Se serve incollo il codice, ma come ripeto è tutto perfettamente funzionante se lascio i due file nella stessa cartella, solo se muovo lo script php succede questa cosa..

    Illuminatemi vi prego!

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    nell'action metti "scripts/easy.php" senza lo slash iniziale, se metti lo slash allora devi mettere anche il punto "./scripts/easy.php".
    Assicurati inoltre di rispettare le maiuscole, se la cartella si chiama Scripts devi scrivere Scripts nell'action, non scripts.

  3. #3
    Originariamente inviato da Alhazred
    nell'action metti "scripts/easy.php" senza lo slash iniziale, se metti lo slash allora devi mettere anche il punto "./scripts/easy.php".
    Assicurati inoltre di rispettare le maiuscole, se la cartella si chiama Scripts devi scrivere Scripts nell'action, non scripts.
    Grazie per la risposta, ho provato, e la pagina non va più in "crash" ( sistemando la questione dello slash, la maiuscola la rispettavo già, ho solo sbagliato nell'esempio ) in compenso, i dati non vengono inseriti, è come se il post non funzionasse, mentre ovviamente se riporto tutto alla stessa cartella funziona perfettamente..

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Nel file easy.php includi qualche file esterno? In tal caso devi modificare anche quel percorso.

  5. #5
    Uhm, nell'ipotetico easy.php includo file presenti in un'altra sottocartella chiamata include, e l'include dentro easy.php è del tipo:

    include_once ("include/config.php");
    include_once ("include/functions.php");

    Non è corretto?

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Dipende dalla struttura delle cartelle.
    La cartella include rispetto alla cartella script dove si trova?
    Se sono allo stesso livello devi scrivere
    include_once("../include/config.php");
    include_once("../include/functions.php");

  7. #7
    Si, si trovano allo stesso livello.. in pratica la cartella PROGETTO contiene due sottocartelle (include e scripts) e alcune pagine .php.

    Provo in serata e ti faccio sapere se il problema era quello,
    ma ../ prima di include, che utilizzo ha di preciso?
    Serve per far cercare all'interno del "livello" del progetto ( genericamente )? O è una particolare sintassi usata per utilizzare l'include tra folders diverse?

  8. #8
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    ../ esce dalla cartella che contiene il file in cui è scritto, quindi esce dalla cartella scripts per andare al livello superiore.

  9. #9
    Eccomi qua, niente da fare il codice funziona ma non funziona, i dati non vengono aggiornati come dovrebbero dagli script, anche se il "reindirizzamento" della pagina funziona correttamente, a questo punto credo che farò prima a postare direttamente il codice delle due pagine ( ho scelto quelle che presentano questo problema, e che sono più "corte" da incollare, alcune sono troppo lunghe )


    PAGINA character_abilities.php <-- contenuta nella folder principale.
    codice:
    <?php
    
    $thispage = 'character_abilities';
    
    ini_set('display_errors', false);
    error_reporting (E_ALL ^ E_NOTICE);
    error_reporting(0);
    include_once("include/config.php");
    include_once("include/auth.lib.php");
    include("include/functions.php");
    
    list($status, $user) = auth_get_status();
    
    if($status == AUTH_LOGGED & auth_get_option("TRANSICTION METHOD") == AUTH_USE_LINK){
    	$link = "?uid=".$_GET['uid'];
    }else	$link = '';
    
    $username=$user["username"];
    echo('Pagina di gestione delle abilita.
    
    ');
    
    $query = mysql_query("SELECT * FROM  `personaggi` , utenti WHERE char_user = username HAVING username =  '$username'");
    while($row=mysql_fetch_array($query)){
    	
    $abil_char = $row["char_name"]; // VARIABILE GLOBALE, NOME PERSONAGGIO
    
    echo($row["char_name"]." conosce le seguenti abilita:");
    echo("
    ");
    }
    // MOSTRA LE ABILITA' CONOSCIUTE E IL LORO LIVELLO; Permette di selezionare l'abilità scelta.
    ?>
    <form name= 'Selezione Abilita' action="scripts/send_abilities.php" method='post'>
    
    <?php 
    $query2 = mysql_query("SELECT * FROM  `ability` WHERE abil_user =  '$username'");
    while($row2=mysql_fetch_array($query2)){
    echo($row2["abil_name"]."__________________".transform($row2["abil_level"])."<input type='radio' name='abil_id' value=".$row2['abil_id'].">");
    echo("
    "); 
    }
    ?>
    <input type="submit" value="Conferma">
    </form>
    <?php 
    
    echo("
    
    ");
    $query3 = mysql_query("SELECT * FROM ability WHERE abil_select = '1' AND abil_user = '$username'");
    while($row3=mysql_fetch_array($query3)){
    echo($abil_char ." attualmente sta perfezionando l'abilita' ".$row3["abil_name"]);
    echo("
    
    ");
    }
    
    ?>
    ">Home Page

    PAGINA send_abilities.php <-- Contenuta in folder scripts

    codice:
    <?php
    ini_set('display_errors', false);
    error_reporting (E_ALL ^ E_NOTICE);
    error_reporting(0);
    include_once("../include/config.php");
    include_once("../include/auth.lib.php");
    
    
    list($status, $user) = auth_get_status();
    
    if($status == AUTH_LOGGED & auth_get_option("TRANSICTION METHOD") == AUTH_USE_LINK){
    	$link = "?uid=".$_GET['uid'];
    }else	$link = '';
    
    $username=$user["username"];
    
    $abil_id = $_POST["abil_id"];
    
    
    // QUERY CHE RIPORTA A 0 TUTTE LE SELECT PER LE ABILITA'
    mysql_query("UPDATE ability SET abil_select = 0 WHERE abil_user = '$username'");
    
    // QUERY CHE ASSEGNA A 1 L'ABILITA' SELEZIONATA, USANDO IL NOME ABILITA' E LO USERNAME
    mysql_query("UPDATE ability SET abil_select = 1 WHERE abil_id = '$abil_id' AND abil_user = '$username'");
    	
    
    	header("Location: /index.php?content=character_abilities&menu=character_menu");
    	echo "Registrazione abilita' avvenuta con successo, attendi il reindirizzamento automatico.
    ";
    
    ?>

  10. #10
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Su questa riga ci va && e non &
    Codice PHP:
    if($status == AUTH_LOGGED auth_get_option("TRANSICTION METHOD") == AUTH_USE_LINK){ 
    Nella query puoi usare direttamente $_POST["abil_id"] invece di istanziare una nuova variabile che spreca solo memoria.
    Stessa cosa per $username=$user["username"]; usa direttamente $user["username"].

    Nella pagina send_abilities.php usi sia $_GET che $_POST, puoi arrivarci in 2 modi diversi su tale pagina? In tal caso discrimina in partenza i due casi con
    Codice PHP:
    if(isset($_GET['uid'])) {
       
    //fa quello che devi fare in questo caso
    }
    elseif(isset(
    $_POST['abil_id'])) {
       
    //fa quello che devi fare in quest'altro caso

    Da come vedo il tuo codice non puoi avere sia variabili $_GET che $_POST attive contemporaneamente.

    Sei sicuro che $user e $status contengano i dati che ti aspetteresti? Non darlo per scontato, verificalo.

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.