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

    funzione di manipolazione stringhe

    ciao a tutti, spero possiate aiutarmi a risolvere questo problema, che a me sembra molto stupido ma non riesco a risolverlo.

    ho scritto una funzione per manipolare un certo numero di stringhe, che uinserisco nelle pagine del mio sito tramite un include, il file è
    functions.php

    Codice PHP:
    <?php  
    function strcorr($str) { 
    $str stripslashes($str); 
    $str mysql_real_escape_string($str); 
    $str str_replace("à""a'"$str); 
    $str str_replace("è""e'"$str); 
    $str str_replace("é""e'"$str); 
    $str str_replace("ì""i'"$str); 
    $str str_replace("ò""o'"$str); 
    $str str_replace("ù""u'"$str); 
    return 
    $str

    ?>
    dopodiche nelle pagine in cui mi serve manipolare le stringhe con questa funzione scrivo

    Codice PHP:
    <?php  
    include("functions.php");
    $new_indirizzo $_POST['indirizzo'];
    $new_indirizzo strcorr($new_indirizzo);
    ?>
    ma la stringa non viene assolutamente modificata. qualcuno sa dirmi come mai, per favore?
    grazie, ciao

  2. #2
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    prova così
    Codice PHP:
    <?php 
    function strcorr($str)
      {
      
    $find=array('à','è','ì','ò','ù',"\\");
      
    $reps=array('a','e','i','o','u',"");
      return 
    mysql_escape_string(str_replace($find,$reps,$str));
      }
    ?>


    attenzione!! il forum sballa l' ultimo element dell' array $find!! c'è un doppio slash dentro i doppi apici di $find ma non lo fa vedere!!
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  3. #3
    purtroppo non va. non credo proprio sia un problema della funzione in se. è invece come se non la applicasse proprio, come se ci fosse un passaggio di variabili sbagliato da qualche parte... heeeeelp vi prego

  4. #4
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    prova a postare il contesto in cui la utilizzi, magari l'errore è da un altra parte .... intendo come contesto tutto lo script php
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  5. #5
    ok... fondamentalmente ci sono molti files, ma quelli che ci interessano sono tre.

    il primo è functions.php dove inserisco le funzioni (per ora una sola)
    functions.php
    Codice PHP:
    function strcorr($str) {
    $str stripslashes($str);
    $str mysql_real_escape_string($str);
    $str str_replace("à""a'"$str);
    $str str_replace("è""e'"$str);
    $str str_replace("é""e'"$str);
    $str str_replace("ì""i'"$str);
    $str str_replace("ò""o'"$str);
    $str str_replace("ù""u'"$str);
    return 
    $str;

    poi abbiamo include.php dove inserisco tutti gli script da includere nelle pagine

    include.php
    Codice PHP:
    <?php include("db_info.php"); //dati e accesso al database ?> 
    <?php include("login_success.php"); //controllo di login amministratore ?>
    <?php 
    include("functions.php");  //elenco funzioni  ?>
    e poi c'è il file contacts.php che serve all'amministratore a modificare i contatti del suo sito

    contacts.php

    Codice PHP:
    include("include.php");

    if (isset(
    $_POST['edit_contacts'])) {

    $new_indirizzo $_POST['indirizzo'];
    $new_indirizzo strcorr($new_indirizzo);

    $new_telefono $_POST['telefono'];
    $new_cellulare $_POST['cellulare'];
    $new_fax $_POST['fax'];
    $new_email $_POST['email'];

    $edit_contacts_query mysql_query("UPDATE contatti SET indirizzo='$new_indirizzo', telefono='$new_telefono', cellulare='$new_cellulare', fax='$new_fax', email='$new_email'");
    echo 
    "Modifica avvenuta con successo
    "
    ;
    }

    echo 
    "<a href=\"index.php\">Indietro</a>
    "
    ;
    $select_contacts mysql_query("SELECT * FROM contatti");
    $contacts mysql_fetch_array($select_contacts);
    echo 
    "<table>
    <form name=\"edit_contacts\" method=\"post\" action=\"\">
    <tr><td>Indirizzo:</td><td><textarea rows=\"3\" cols=\"20\" name=\"indirizzo\">"
    .$contacts['indirizzo']."</textarea></td></tr>
    <tr><td>Telefono:</td><td><input name=\"telefono\" type=\"text\" value=\""
    .$contacts['telefono']."\"></td></tr>
    <tr><td>Cellulare:</td><td><input name=\"cellulare\" type=\"text\" value=\""
    .$contacts['cellulare']."\"></td></tr>
    <tr><td>Fax:</td><td><input name=\"fax\" type=\"text\" value=\""
    .$contacts['fax']."\"></td></tr>
    <tr><td>Email:</td><td><input name=\"email\" type=\"text\" value=\""
    .$contacts['email']."\"></td></tr>
    <tr><td><input type=\"submit\" name=\"edit_contacts\" value=\"Edit\"></td>
    </form>
    </tr>
    </table>"

    lo script funziona egregiamente, tranne che per il fatto che non esegue la funzione strcorr()

  6. #6
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    2 errori fondamentali che quasi sicuramente riguardano il tuo problema:

    nella query
    Codice PHP:
    $edit_contacts_query mysql_query("UPDATE contatti SET indirizzo='$new_indirizzo', telefono='$new_telefono', cellulare='$new_cellulare', fax='$new_fax', email='$new_email'"); 
    se la lasci così com'è farà questa modifica a TUTTE le righe della tabella.

    se vuoi che cambi invece una determinata riga dovrei modificare la query
    Codice PHP:
    $edit_contacts_query mysql_query("UPDATE contatti SET indirizzo='$new_indirizzo', telefono='$new_telefono', cellulare='$new_cellulare', fax='$new_fax', email='$new_email' where nome_campo_identificativo='valore:identificativo'"); 
    secondo:

    nell'action del form metti a dove deve puntare il form!!

    Codice PHP:
    echo "<table>
    <form name=\"edit_contacts\" method=\"post\" action=\"tuapagina.php\">
    <tr><td>Indirizzo:</td><td><textarea rows=\"3\" cols=\"20\" name=\"indirizzo\">"
    .$contacts['indirizzo']."</textarea></td></tr>
    <tr><td>Telefono:</td><td><input name=\"telefono\" type=\"text\" value=\""
    .$contacts['telefono']."\"></td></tr>
    <tr><td>Cellulare:</td><td><input name=\"cellulare\" type=\"text\" value=\""
    .$contacts['cellulare']."\"></td></tr>
    <tr><td>Fax:</td><td><input name=\"fax\" type=\"text\" value=\""
    .$contacts['fax']."\"></td></tr>
    <tr><td>Email:</td><td><input name=\"email\" type=\"text\" value=\""
    .$contacts['email']."\"></td></tr>
    <tr><td><input type=\"submit\" name=\"edit_contacts\" value=\"Edit\"></td>
    </form>
    </tr>
    </table>"

    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  7. #7
    Prova a mettere un echo di $str dentro la funzione di manipolazione

  8. #8
    @dottorwatson:
    come già detto il codice funziona egregiamente. la query non ha bisogno di nessun where perchà la tabella è composta da una sola riga.
    per quanto riguarda il form tu sai che non mettendo nessun link nell'action di default il form punta alla pagina stessa.
    come detto funziona tutto bene, tranne che la funzione non viene eseguita. è un vero mistero.
    @Samleo: avevo già provato infatti, la stringa è uguale prima e dopo la funzione...
    vi prego qualcuno mi salvi

  9. #9
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    sono convinto che quando non si conosce l' errore è sempre meglio meglio eseguire le cose in modalità 'scolastica'.

    ad ogni modo

    gli altri dati vengono cambiati? hai provato?
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  10. #10
    quali altri dati?

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.