• User

    Rieccomi con un altro problema :PP

    Sto cercando di dividere i risultati su più record, ecco il codice:

    [php]<?php
    error_reporting(E_ALL);
    // Includo la connessione al database
    require('include/config.php');

    // Pagina
    $page = (isset($_GET['subpage'])) ? $_GET['subpage'] : 1;

    // Numero record di partenza per la selezione
    $limit = ($page-1)*10;

    $query ="select id, user, data_registrazione from utenti WHERE attivazione = '' ORDER BY id LIMIT $limit,10";
    $result= mysql_query($query);
    // Numero utenti = mysql_num_rows($result)
    // Dividiamo per 10 che è il numero di utenti per pagina
    // ceil arrotonda per eccesso
    $pagine = ceil(mysql_num_rows($result)/10);

    ?>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <TITLE>Membri</TITLE>
    <link rel="stylesheet" href="/theme/style.css" type="text/css">
    </HEAD>
    <BODY>
    <?php

    echo '<table class="rcayla"><tr><td>';
    require('include/menu.php');
    echo'</td><td>';
    echo '<table><tr><td>Cerca tra i Membri</td></tr><td><br /><form action="" method="post"><div align="center"><input name="cerca" type="text" id="cerca" value="Cerca tra i Membri" onfocus="if(this.value=='Cerca tra i Membri') this.value='';" /></div><br /><div align="center"><input name="cerca1" type="submit" id="cerca1" /></div><br /></td></tr></table>';
    // Pagine
    for($i=1; $i<=$pagine; $i++)
    {
    echo '<a href="profile.php?page=member&subpage='.$i.'">'.$i.'</a> ';
    }
    echo '<table border="0"><tr><td colspan="3">Membri</td></tr><tr><td ><div align="center"><strong>#</strong></div></td><td><div align="center"><strong>Nome</strong></div></td><td><div align="center"><strong>Registrazione</strong></div></td></tr>';
    $b=($limit*1)+1;
    while($row = mysql_fetch_array($result))
    {
    echo '<tr><td width="25"><div align="center">'.$b.'</div></td><td><a href="profile.php?id='.$row['id'].'">'.$row['user'].'</a></td><td width="50%"><div align="center">'.date('d M Y - G:i:s', $row['data_registrazione']).'</div></td></tr>';
    $b++;
    }
    echo '</table>';
    echo '</td></tr></table>';

    require('include/footer.php');
    ?>

    </BODY>
    </HTML>
    [/php]

    I Record sono 24, quindi mi dovrebbe stampare tre numeri 1, 2 e 3 ma invece mi stampa solo l'1..
    Come mai?


  • ModSenior

    [php]
    <?php
    error_reporting(E_ALL);
    // Includo la connessione al database
    require('include/config.php');

    // Pagina
    $page = (isset($_GET['subpage'])) ? $_GET['subpage'] : 1;

    // Numero record di partenza per la selezione
    $limit = ($page-1)*10;

    $query ="select id, user, data_registrazione from utenti WHERE attivazione = '' ORDER BY id LIMIT $limit,10";
    $result= mysql_query($query);
    // Numero utenti = mysql_num_rows($result)
    // Dividiamo per 10 che è il numero di utenti per pagina
    // ceil arrotonda per eccesso
    $pagine = ceil(mysql_num_rows(mysql_query("select id, user, data_registrazione from utenti WHERE attivazione = ''"))/10);

    ?>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <TITLE>Membri</TITLE>
    <link rel="stylesheet" href="/theme/style.css" type="text/css">
    </HEAD>
    <BODY>
    <?php

    echo '<table class="rcayla"><tr><td>';
    require('include/menu.php');
    echo'</td><td>';
    echo '<table><tr><td>Cerca tra i Membri</td></tr><td><br /><form action="" method="post"><div align="center"><input name="cerca" type="text" id="cerca" value="Cerca tra i Membri" onfocus="if(this.value=='Cerca tra i Membri') this.value='';" /></div><br /><div align="center"><input name="cerca1" type="submit" id="cerca1" /></div><br /></td></tr></table>';
    // Pagine
    for($i=1; $i<=$pagine; $i++)
    {
    echo '<a href="profile.php?page=member&subpage='.$i.'">'.$i.'</a> ';
    }
    echo '<table border="0"><tr><td colspan="3">Membri</td></tr><tr><td ><div align="center"><strong>#</strong></div></td><td><div align="center"><strong>Nome</strong></div></td><td><div align="center"><strong>Registrazione</strong></div></td></tr>';
    $b=($limit*1)+1;
    while($row = mysql_fetch_array($result))
    {
    echo '<tr><td width="25"><div align="center">'.$b.'</div></td><td><a href="profile.php?id='.$row['id'].'">'.$row['user'].'</a></td><td width="50%"><div align="center">'.date('d M Y - G:i:s', $row['data_registrazione']).'</div></td></tr>';
    $b++;
    }
    echo '</table>';
    echo '</td></tr></table>';

    require('include/footer.php');
    ?>

    </BODY>
    </HTML>
    [/php]


  • User Newbie

    Buongiorno a tutti.
    Partendo dal tutorial di Thedarkita, volevo incrementare le funzioni dell'area privata con una mailinglist, ossia mandare una mail ai vari utenti iscritti.
    Girando per il web ne ho messa insieme una che funziona, l'unico problema è che nel destinatario mi compaiono tutti gli indirizzi mail presenti nella tabella utenti.
    Questo è il codice della richiesta:

    function DbGetAll($conn)
    {
        $result = mysql_query("SELECT * FROM utente",$conn);
        while($row = mysql_fetch_array($result, MYSQL_ASSOC))
        {
            $ret[]=$row;
        }
        return $ret;
    }
    

    Ho provato a modificarlo, ma nulla da fare, o non funziona o mi mette tutti gli indirizzi; c'è un modo per far vedere solo l'indirizzo del destinatario?

    Grazie e scusate se ho sbagliato sezione.

    Brinchetto


  • ModSenior

    Ciao brinchetto non ho ben capito quale sia il problema, comunque direi sia meglio trattare la cosa su un thread separato da questo.
    Aprine un altro un pò più dettagliato sul problema.


  • User

    Ciao ragazzi, non so più cosa fare.
    Ho scaricato lo script login e quando tento di la registrazione mi da i seguenti errori.

    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/web/../www/admin/registrati.php* on line 33

    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/web/../www/admin/registrati.php* on line 36
    Errore 003, contattare l'amministratore No database selected


  • ModSenior

    Ciao sulweb, controlla il config, perchè non hai specificato il nome del database.


  • User

    Ho già controllato diverse volte, proprio per questo mi sto rivolgendo qui.

    [PHP]<?php
    session_start();
    $db_host = 'localhost';
    $db_utente = 'user accesso db';
    $db_password = 'lpassword accesso db';
    $db_nomedb = 'nome db';
    $dbh=mysql_connect ($db_host, $db_utente, $db_password) or die ('Errore nella stringa di connessione al database: '.mysql_error());
    mysql_select_db($db_nomedb);
    ?>[/PHP]

    con questa stesso script faccio funzionare altre pagine e tutto va bene, solo con questo ho problemi.


  • User

    Finalmente sono riuscito a capire il problema, mettevo una password di 4 caratteri e non mi segnalava che inserivo un numero inferiori di caratteri richiesti. Adesso ho un'altro problema con il login, l'errore che ricevo è:
    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/web/../www/admin/login.php on line 27
    Nome Utente o Password errati


  • ModSenior

    C'è un errore di sintassi nella query che poi viene usata nella riga 27 dalla funzione mysql_num_rows.


  • User

    Nel codice ho modificato solo il collegamento alla tabella.
    Questo il codice:
    [PHP]<?php
    // Includo la connessione al database
    require('config.php');

    // Se il modulo viene inviato...
    if(isset($_POST['login']))
    {

    // Dati Inviati dal modulo
    $user = (isset($_POST['user'])) ? trim($_POST['user']) : ''; // Metto nella variabile 'user' il dato inviato dal modulo, se non viene inviato dò di default ''
    $pass = (isset($_POST['pass'])) ? trim($_POST['pass']) : ''; // Metto nella variabile 'pass' il dato inviato dal modulo, se non viene inviato dò di default ''

    // Filtro i dati inviati se i magic_quotes del server sono disabilitati per motivi di sicurezza
    if (!get_magic_quotes_gpc()) {
    $user = addslashes($user);
    $pass = addslashes($pass);
    }

    // Crypto la password e la confronto con quella nel database
    $pass = md5($pass);

    // Controllo l'utente esiste
    $query = mysql_query("SELECT id FROM gestore WHERE user = '$user' AND pass = '$pass' LIMIT 1");

    // Se ha trovato un record
    if(mysql_num_rows($query) == 1)
    {
    // prelevo l'id dal database
    $login = mysql_fetch_array($query);

    // Creo una variabile di sessione
    $_SESSION['login'] = $login['id'];

    // reindirizzo l'utente
    header('Location: privata.php');
    exit;
    }
    // se non esiste da l'errore
    else
    die('Nome Utente o Password errati');
    }
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ".w3./TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="
    ..o*/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Login</title>
    </head>
    <body>
    <form action="" method="post">
    <input name="user" type="text" id="user" value="Nome Utente" onfocus="if(this.value=='Nome Utente') this.value='';" /><br />
    <input name="pass" type="password" id="pass" value="Password" onfocus="if(this.value=='Password') this.value='';" /><br />
    <input name="login" type="submit" value="Login" /><br />
    </form>
    </body>
    </html>[/PHP]


  • ModSenior

    Metti:
    [php]
    $query = mysql_query("SELECT id FROM gestore WHERE user = '$user' AND pass = '$pass' LIMIT 1") or die(mysql_error());
    [/php]

    Cosi mostra l'errore.


  • User

    Questo l'errore: No database selected.
    Non capisco la registrazione è andata bene, il login no!


  • User

    Questo il codice per la registrazione:
    [PHP]<?php
    // Includo la connessione al database
    require('config1.php');

    // Se il modulo viene inviato...
    if(isset($_POST['registra']))
    {

    // Dati Inviati dal modulo
    $user = (isset($_POST['user'])) ? trim($_POST['user']) : ''; // Metto nella variabile 'user' il dato inviato dal modulo, se non viene inviato dò di default ''
    $pass = (isset($_POST['pass'])) ? trim($_POST['pass']) : ''; // Metto nella variabile 'pass' il dato inviato dal modulo, se non viene inviato dò di default ''
    $mail = (isset($_POST['mail'])) ? trim($_POST['mail']) : ''; // Metto nella variabile 'mail' il dato inviato dal modulo, se non viene inviato dò di default ''

    // Filtro i dati inviati se i magic_quotes del server sono disabilitati per motivi di sicurezza
    if (!get_magic_quotes_gpc()) {
    $user = addslashes($user);
    $pass = addslashes($pass);
    $mail = addslashes($mail);
    }

    // Controllo il Nome Utente
    if(strlen($user) < 4 || strlen($user) > 12)
    die('Nome Utente troppo corto, o troppo lungo');
    // Controllo la Password
    elseif(strlen($pass) < 4 || strlen($pass) > 12)
    die('Password troppo corta, o troppo lunga');
    // Controllo l'email
    elseif(!eregi("^[a-z0-9][_.a-z0-9-]+@([a-z0-9][0-9a-z-]+.)+([a-z]{2,4})", $mail))
    die('Email non valida');
    // Controllo il nome utente non sia già occupato
    elseif(mysql_num_rows(mysql_query("SELECT user FROM gestore WHERE user = '$user' LIMIT 1")) == 1)
    die('Nome Utente non disponibile');
    // Controllo l'indirizzo email non sia già registrato
    elseif(mysql_num_rows(mysql_query("SELECT mail FROM gestore WHERE mail = '$mail' LIMIT 1")) == 1)
    die('Questo indirizzo email risulta già registrato ad un altro utente');
    // Registrazione dell'utente nel database
    else
    {

    // Crypt della password per garantire una miglior sicurezza
    $pass = md5($pass);

    // Query per l'inserimento dell'utente nel database
    $strSQL = "INSERT INTO gestore (user,pass,mail)";
    $strSQL .= "VALUES('$user', '$pass', '$mail')";
    mysql_query($strSQL) OR die("Errore 003, contattare l'amministratore ".mysql_error());

    // Reindirizzo l'utente ad una pagina di conferma della registrazione
    header('Location: registrato.php');
    exit;
    }
    }
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "://.w3./TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="
    ://.w3./1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Registrazione</title>
    </head>
    <body>
    <form action="" method="post">
    <input name="user" type="text" id="user" value="Nome Utente" onfocus="if(this.value=='Nome Utente') this.value='';" /><br />
    <input name="pass" type="password" id="pass" value="Password" onfocus="if(this.value=='Password') this.value='';" /><br />
    <input name="mail" type="text" id="mail" value="Emil" onfocus="if(this.value=='Emil') this.value='';" /><br />
    <input name="registra" type="submit" value="Registrati" /><br />
    </form>
    </body>
    </html>[/PHP]


  • ModSenior

    Stai includendo 2 config differenti.


  • User

    Provo, ma hanno lo stesso collegamento al db. Ho fatto una prova per vedere se magari c'èra un errore in uno dei due:


  • User

    Infatti mi da sempre lo stesso errore.


  • ModSenior

    L'errore allora dovrebbe darlo in entrambi.


  • User

    Non capisco! Domani a mente fresca rifaccio tutto da capo.
    Ti ringrazio di tutto l'aiuto che mi hai dato e scusami se son stato un rompi.
    Faccio sapere!


  • ModSenior

    Figurati, nessun problema. 😉


  • User

    Finalmente ho risolto.
    Il problema stava nel database, è la prima volta che mi succede una cosa del genere, in pratica creando la tabella gestore come cliccavo per aprirla mi si disconnetteva.
    ho dovuto cambiare nome alla tabella e tutto è andato.