Visualizzazione risultati 1 fino 24 di 24

Discussione: [PHP/MySQL] ereg_replace...si e str_replace no? while!

  1. #1
    Guest

    Post [PHP/MySQL] ereg_replace...si e str_replace no? while!

    Ciao a tutti, allora il mio problema è questo:
    Uso str_replace per sostituire i codici preinstallati nel mio template..ma quando voglio mostrare più dati ricavati dal mysql con str_replace la cosa non va..perchè? Invece se uso ereg_replace sempre dentro un while la pagina ci sta 30 min. per caricarsi (Infatti dopo mi mostra l'errore max_esecution_time con la linea di ereg_replace!), una volta ho visto cosa mi è spuntato ossia, tutto pieno di links! Io chiedo perchè? Mi sono fatto una teoria (potrebbe essere anche stupida o cretina) che str_replace sostituisce solo quel codice, quindi che come un mysql_fetch_array senza while...invece ereg_replace è tutto il contrario..ma io forse non lo uso in modo giusto e quindi mi trovo la pagina tutta bianca e piena d (index.php?catid=x)..
    Ecco il codice:
    Codice PHP:
    $menuq = mysql_query("SELECT * FROM categorie");
    while(
    $menu = mysql_fetch_array($menuq)) {
    $template = ereg_replace("[caturl]","index.php?catid=$menu[id]",$template);
    $template = ereg_replace("[catnome]","$menu[nome]",$template);
    }
    Per il file template uso la funzione file_get_contents()...e tutto funziona benissimo con str_replace..ma con ereg_replace no!!!
    Perchè?. Grazie 1000...ciao Davide! ^^
    Ultima modifica di sIM : 09-09-2008 alle ore 10.22.19

  2. #2
    Guest

    Predefinito

    [OT]

    In un altro tuo post ho visto il codice che utilizzi per il template...
    Ti consiglierei di utilizzare smarty...

    Ciao

  3. #3
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Citazione Originalmente inviato da sIM Visualizza messaggio
    Per il file template uso la funzione file_get_contents()...e tutto funziona benissimo con str_replace..ma con ereg_replace no!!!
    Perchè?. Grazie 1000...ciao Davide! ^^
    Ma hai letto le guida relativa a ereg_replace? Sai cosa sono le espressioni regolari? Anche se le due funzioni sono apparentemente simili sono in realtà molto differenti.


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  4. #4
    Guest

    Predefinito

    Si dall'esempio ho notato che sostituisce i caratteri speciali (àèìòù)!
    Ciao! ^^

  5. #5
    Guest

    Predefinito

    ma che dici?
    Non guardare l'esempio, leggi la spiegazione di quella funzione: http://it.php.net/ereg_replace


    ciao!

  6. #6
    Guest

    Predefinito

    Per cui devo mettere \ davanti alla variabile?
    Ciao! ^^

  7. #7
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Citazione Originalmente inviato da sIM Visualizza messaggio
    Per cui devo mettere \ davanti alla variabile?
    Ciao! ^^
    No, devi leggere e capire la guida e vedere se fa al caso tuo.


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  8. #8
    Guest

    Predefinito

    Ma a me serve solamente a sostituire i tag, niente di speciale!
    Non c'è un modo..xfavore!
    Ciao! ^^

  9. #9
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Citazione Originalmente inviato da sIM Visualizza messaggio
    Ma a me serve solamente a sostituire i tag, niente di speciale!
    Non c'è un modo..xfavore!
    Ciao! ^^
    Dovresti usare str_replace. Però il tuo ciclo mi sembra che abbia qualche problema perché così come è impostato al primo fetch sostituisci tutti i tag del template. Gli altri fetch sono a quel punto inutili.


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  10. #10
    Guest

    Predefinito

    E quindi? Ho fatto come hai detto:
    Codice PHP:
    $menuq = mysql_query("SELECT * FROM categorie");
    while(
    $menu = mysql_fetch_array($menuq)) {
    $template = ereg_replace("[caturl]","index.php?catid=".$menu['id']."",$template);
    $template = ereg_replace("[catnome]",$menu['nome'],$template);
    }
    Ma va sempre male! :( Ossi mi da errore di esecuzione...ci sta troppo a caricare! :(
    Ciao! ^^

  11. #11
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Controlla il mio ultimo post, quello precedente l'ho cancellato perché in effetti non risolveva.


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  12. #12
    Guest

    Predefinito

    Quel while mi ha sempre funzionato anche in altre cose!
    Quindi forse è il modo errato in cui uso str_replace!
    str_replace l'ho già usato, infatti mi mostra solo 1 fetch...forse dovrei fare mysql_fetch_assoc?
    Ciao! ^^

  13. #13
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Ma tu cosa vorresti fare esattamente?


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  14. #14
    Guest

    Predefinito

    Allora....rispiego in semplici parole! Io uso dei tag template creati da me...con file_get_content (o come si chiama), recupero il template modificato da me, e con un str_replace sostituisco i codici di template con quello che voglio..ex:
    [url] ([url] = Url del sito io lo sostituisco con):
    Codice PHP:
    $template = str_replace("[url]","$varie[url]",$template);
    Funzionano tutti (con str_replace), ma solo se il tag è 1 (Quindi a quel tag corrisponde 1 solo dato)..invece quando corrispondono più dati (sempre presi da mysql o scritti da me), non funzionano con str_replace...infatti il menù non mi funziona..mi mostra solo 1 dato come se il while non esistesse! ed ora io sono qui per chiedere perchè? Non c'è un modo per fargli mostrare tutti i dati presi dal db con il while? Per questo avevo pensato a ereg_replace! Qualcuno mi ha consigliato Smarty, ma non mi piace per ora..magari in futuro ;)
    Grazie 1000...ciao Davide! ^^

  15. #15
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Allora il problema è proprio questo:

    Citazione Originalmente inviato da saitfainder Visualizza messaggio
    Però il tuo ciclo mi sembra che abbia qualche problema perché così come è impostato al primo fetch sostituisci tutti i tag del template. Gli altri fetch sono a quel punto inutili.
    Perché str_replace sostituisce tutte le occorrenze della stringa cercata e non mi pare che esista una funzione sola che faccia quello che vorresti tu. Ma poi, non ho capito, nel template hai già predisposto il codice per ogni elemento che tiri fuori dal database? Di solito non si fa così, ma si fa generare più volte dal PHP un pezzo di HTML in cui si sostituiscono le variabili. Non a caso è una delle funzioni di base di un template-engine come Smarty, ma questo puoi facilmente farlo da te.


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  16. #16
    Guest

    Predefinito

    Io ho il template predisposto con i tag...ma dopo mettere {$nomevar} o [nomevar] non cambia niente! Anche perchè su x giù vanno sostituiti sempre con qualche funzione!..
    Ma dopo cosa sto sbagliando nel while?
    Ciao! ^^

  17. #17
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Citazione Originalmente inviato da sIM Visualizza messaggio
    Io ho il template predisposto con i tag...ma dopo mettere {$nomevar} o [nomevar] non cambia niente! Anche perchè su x giù vanno sostituiti sempre con qualche funzione!..
    Ma dopo cosa sto sbagliando nel while?
    Ciao! ^^
    Posta il codice


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  18. #18
    Guest

    Predefinito

    Codice PHP:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <
    html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
    <
    head>
    <
    title>[titolo]</title>
    <
    meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <
    meta name="author" content="[autore]" />
    <
    meta name="description" content="[descrizione]" />
    <
    link rel="stylesheet" href="[url]/style.css" type="text/css" />
    </
    head>

    <
    body>

    <
    div id="navcontainer">
    <
    ul id="navlist">
    <
    li><a href="[url]/[caturl]">[catnome]</a></li>
    </
    ul>
    </
    div>

    <
    div id="wrap">

    <
    div id="header"></div>

    <
    div id="title">[titolo]<br /><span class="autore">by [autore]</span></div>



    <
    div id="container">

    <
    div class="content">

    <
    h3>[titolop]</h3>
    <
    p>[testop]<br />
    <
    div id="postinfo">Scritto il [data] alle [ora] in <a href="[url]/[catpurl]">[catpnome]</a> | <a href="[url]/[urlp]">[commenti] Commenti</a></div>[comform][comall]</p>


    </
    div>

    <
    div id="footer">
    <
    a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/deed.it"><img alt="Creative Commons License" style="border: 0;" src="http://i.creativecommons.org/l/by-nc-sa/3.0/80x15.png" /></a><br />
    &
    copy; [anno] [titolo].
    </
    div>
    </
    div>

    </
    div>





    </
    body>
    </
    html>
    Ciao! ^^
    Ultima modifica di sIM : 10-09-2008 alle ore 13.36.55

  19. #19
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    In questo modo non può funzionare come dici tu!

    Al posto di questo:

    Codice HTML:
    <div id="navcontainer">
    <ul id="navlist">
    <li><a href="[url]/[caturl]">[catnome]</a></li>
    </ul>
    </div>
    Dovresti mettere una varibile sola, tipo [categorie] e lì dentro ci metti tutto l'HTML che viene generato dal PHP nel ciclo while. Più o meno così

    Codice PHP:
    $buffer = '';
    while (...) {
    $buffer .= ...
    }

    $template = str_replace('[categorie]', $buffer, $template);
    Diversamente al momento non puoi fare.


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  20. #20
    Guest

    Predefinito

    Ok, funziona!
    Ma invece per le news che è più difficile?
    Codice PHP:
    $postq = mysql_query("SELECT * FROM post ORDER BY id DESC LIMIT $varie[newshome]");
    while(
    $post = mysql_fetch_array($postq)) {
    $template = str_replace("[titolop]","$post[titolo]",$template);
    $template = str_replace("[testop]","$post[testo]",$template);
    $template = str_replace("[data]","$post[data]",$template);
    $template = str_replace("[ora]","$post[ora]",$template);
    $template = str_replace("[urlp]","index.php?postid=$post[id]",$template);
    $catq = mysql_query("SELECT * FROM categorie WHERE id = '$post[cat]'");
    $cat = mysql_fetch_array($catq);
    $template = str_replace("[catpnome]","$cat[nome]",$template);
    $template = str_replace("[catpurl]","index.php?catid=$cat[id]",$template);
    $numq = mysql_query("SELECT * FROM commenti WHERE post = '$post[id]'");
    $num = mysql_num_rows($numq);
    $template = str_replace("[commenti]","$num",$template);
    $template = str_replace("[comform]","",$template);
    $template = str_replace("[comall]","",$template);
    }
    Ciao! ^^

  21. #21
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Stessa cosa, no?


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  22. #22
    Guest

    Predefinito

    Si...funziona:
    Codice PHP:
    $tempnewsa = "";
    $tempnewsb = "";
    $tempnewsc = "";
    $tempnewsd = "";
    $tempnewse = "";
    $tempnewsf = "";
    $tempnewsg = "";
    while(
    $post = mysql_fetch_array($postq)) {
    $tempnewsa .= "$post[titolo]";
    $tempnewsb .= "$post[testo]";
    $tempnewsc .= "$post[data]";
    $tempnewsd .= "$post[ora]";
    $tempnewse .= "index.php?postid=$post[id]";

    $catq = mysql_query("SELECT * FROM categorie WHERE id = '$post[cat]'");
    $cat = mysql_fetch_array($catq);


    $numq = mysql_query("SELECT * FROM commenti WHERE post = '$post[id]'");
    $num = mysql_num_rows($numq);
    $tempnewsf .= "$cat[nome]";
    $tempnewsg .= "index.php?catid=$cat[id]";
    }
    $template = str_replace("[catpnome]",$tempnewsd,$template);
    $template = str_replace("[catpurl]",$tempnewsg,$template);
    $template = str_replace("[titolop]",$tempnewsa,$template);
    $template = str_replace("[testop]",$tempnewsb,$template);
    $template = str_replace("[data]",$tempnewsc,$template);
    $template = str_replace("[ora]",$tempnewsd,$template);
    $template = str_replace("[urlp]",$tempnewse,$template);
    $template = str_replace("[commenti]",$num,$template);
    $template = str_replace("[comform]","",$template);
    $template = str_replace("[comall]","",$template);
    Ma sono tutte cose attaccate!
    Tipo: titolopost1titolopost2
    testoasdassddtesto2dfdsf24324
    Scritto il 34/34/344445/47/1004
    Non rispetta i codice html..ossia fa tutto in un pezzo!
    Perchè? Grazie 1000...ciao Davide!
    PS. Non c'è un modo più semplice? Così si "sporca" il codice! :(

  23. #23
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Citazione Originalmente inviato da sIM Visualizza messaggio
    Si...funziona:
    Ma sono tutte cose attaccate!
    Non rispetta i codice html..ossia fa tutto in un pezzo!
    Se non metti l'HTML non se lo può inventare.

    PS. Non c'è un modo più semplice? Così si "sporca" il codice! :(
    Certo, con i template-engine, tipo Smarty per l'appunto.


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  24. #24
    Guest

    Predefinito

    Il codice è nel post #18!!
    Ciao!..e grazie! ;)

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •