mysql_num_rows non funziona

Salve a tutti, sono le prime volte che mi cimento con il php e sono incappata in un problema.

Sto cercando di realizzare il login per un sito, ma non riesco a far funzionare il controllo per

verificare se un utente esiste già.

Per far funzionare il "mysql_num_rows" bisogna settare qualche cosa nel php.ini?

Per il momento l'unica cosa che ho fatto è mettere REGISTER_GLOBAL su ON

Qui di seguito vi posto come ho compilato i vari file php e spero possiate dirmi dove sbaglio.

Il codice con problemi l'ho segnato in rosso.

Grazie mille a tutti

File per creazione tabelle:

<?

 //collegamento a Mysql

 mysql_connect ("localhost","root","")or die (mysql_error());

 echo"connesso a mysql <br />";

 //selezionare il db

 mysql_select_db ("prova") or die (mysql_error());

 echo "connesso a prova <br />";

 //creazione tabelle utente e pass

 mysql_query("CREATE TABLE `login` (`id_login` INT( 1 ) NOT NULL AUTO_INCREMENT ,`username_login` VARCHAR( 10 ) NOT NULL ,`password_login` VARCHAR( 40 ) NOT NULL ,PRIMARY KEY ( `id_login` ))");

 echo "tabelle create";

?>

File connect.php

<?

 //collegamento a Mysql

 mysql_connect ("localhost","root","")or die (mysql_error());

 echo"connesso a mysql <br />";

 //selezionare il db

 mysql_select_db ("prova") or die (mysql_error());

 echo "connesso a prova <br />";

?>

index

<form action="registrazione.php" method="post">

Nome:<input type="text" name="nome"><br>

Password:<input type="text" name="password"><br>

Ripeti password:<input type="text" name="password2"><br>

<input type="submit" value=" Invio ">

</form> 

Registrazione.php

<?php

include ('connect.php');

$nome = $_POST['nome'];

$pass = $_POST['password'];

$passprova = $_POST['password2'];

$query = mysql_query("SELECT id FROM login  WHERE username_login = '$nome'") or die(mysql_error());

 $rows = mysql_num_rows('$numero');

if($rows > 0){

 echo "utente già presente...";

}else{

 echo "utente non presente...";

}

if(empty($nome) OR empty($pass) OR empty($passprova)){  // con questo controllo vedo se ci sono campi vuoti

         echo"non avete inserito tutti i dati <br>";}  //se ci sono campi vuoti

else {  //se tutti i dati sono stati inseriti

             if($pass == $passprova) //controllo pass

      {

                 Mysql_query ("INSERT INTO login (username_login,password_login) values ('$nome','$pass')");

                 echo " La registrazione è avvenuta con successo </br>";

      }

            else

      {

       echo " le password non sono corrette </br>";

      }

       }

?>

inviato 5 anni fa
Marea
X 0 X

Devo dirti che purtroppo hai scelto la strada peggiore per imparare php.

Il problema grosso di chi comincia con php è che trova tonnellate di pessime guide scritte 10 anni fa.

In questo decennio però php è molto cambiato, pur tuttavia mantenendo una grande retro-compatibilità, il che fa sì che tutta questa robaccia (purtroppo) funzioni ancora.

Il mio consiglio è quello di trovare una buona guida (purtroppo nemmeno quelle di phpnews brillano per recentezza) , magari anche un buon libro. Impara la sintassi e poi studia un framework a oggetti (Symfony 2 oppure Zend Framework 2).

risposto 5 anni fa
Massimiliano Arione
X 0 X

Garag, non ho mica capito la tua risposta...boh !!!

Bastava dire Marea la riga sbagliata è questa :

$query = mysql_query("SELECT id FROM login  WHERE username_login = '$nome'") or die(mysql_error());

che deve diventare:

$query = mysql_query("SELECT id FROM id_login  WHERE username_login = '$nome'") or die(mysql_error());

id_login è quello che hai usato quando hai creato la tabella.

Una svista, tutto qua :)................che ce vo' :) Bah !!!

bye

Paolo

risposto 5 anni fa
antares
X 0 X

Grazie mille... ma ho risolto in questo modo eheheh non vedevo proprio il nome sbagliato ^^

Ora funziona comunque tutto perfettamente e... grazie mille per la correzione :)

<?php

include ('connect.php');

$nome = $_POST['nome'];

$pass = $_POST['password'];

$passprova = $_POST['password2'];

$q1 = "SELECT COUNT(*) FROM `login` WHERE `username_login` = '$nome'";

$res = mysql_query($q1);

$res = mysql_fetch_array($res);

if ($res[0] == 0)

{

 echo "l'utente non  esiste<br>";

if(empty($nome) OR empty($pass) OR empty($passprova)){  // con questo controllo vedo se ci sono campi vuoti

         echo"non avete inserito tutti i dati <br>";}  //se ci sono campi vuoti

else {  //se tutti i dati sono stati inseriti

             if($pass == $passprova) //controllo pass

      {

       Mysql_query ("INSERT INTO login (username_login,password_login) values ('$nome','$pass')");

                 echo " La registrazione è avvenuta con successo </br>";

      }

            else

      {

       echo " le password non sono corrette </br>";

      }

       }

risposto 5 anni fa
Marea
X 0 X

Garag, non ho mica capito la tua risposta...boh !!!

Bastava dire Marea la riga sbagliata è questa :

$query = mysql_query("SELECT id FROM login  WHERE username_login = '$nome'") or die(mysql_error());

che deve diventare:

$query = mysql_query("SELECT id FROM id_login  WHERE username_login = '$nome'") or die(mysql_error());

id_login è quello che hai usato quando hai creato la tabella.

Una svista, tutto qua :)................che ce vo' :) Bah !!!

bye

Paolo

Come diceva quel proverbio cinese, "non dare al povero il pesce per tutta la vita, ma dagli la canna e insegnagli a pescare".

Se ti accontenti ancora di mysql_query or die... contento tu  :(

risposto 5 anni fa
Massimiliano Arione
X 0 X

Guarda Garag io sono perfettamente daccordo per quanto riguarda il detto:

Come diceva quel proverbio cinese, "non dare al povero il pesce per tutta la vita, ma dagli la canna e insegnagli a pescare".

ma sono meno daccordo quando vedo le risposte poco pertinenti al problema, perchè se tu ad una persona che ti chiede un semplice consiglio gli  rispondi spiattellando addirittura di studiarsi Symfony 2 oppure Zend Framework 2, per me è come se non fossi intervenuto.

Del resto non ha chiesto di scrivergli il codice, ha chiesto di controllarlo quindi da parte sua qualcosa aveva pure "pescato".:)

Vabbeh è solo una mia personale opinione (visto che nemmeno io ho studiato Symfony 2 o Zend Framework 2).

Ma se tutti avessero studiato, forse i forum non sarebbero esistiti ?

Cito anche io una massima: "Ricordati da dove sei venuto" :)

Bye

Paolo

risposto 5 anni fa
antares
X 0 X

Guarda Garag io sono perfettamente daccordo per quanto riguarda il detto:

Come diceva quel proverbio cinese, "non dare al povero il pesce per tutta la vita, ma dagli la canna e insegnagli a pescare".

ma sono meno daccordo quando vedo le risposte poco pertinenti al problema, perchè se tu ad una persona che ti chiede un semplice consiglio gli  rispondi spiattellando addirittura di studiarsi Symfony 2 oppure Zend Framework 2, per me è come se non fossi intervenuto.

Del resto non ha chiesto di scrivergli il codice, ha chiesto di controllarlo quindi da parte sua qualcosa aveva pure "pescato".:)

Vabbeh è solo una mia personale opinione (visto che nemmeno io ho studiato Symfony 2 o Zend Framework 2).

Ma se tutti avessero studiato, forse i forum non sarebbero esistiti ?

Cito anche io una massima: "Ricordati da dove sei venuto" :)

Bye

Paolo

caro Paolo,

io ricordo bene da dove sono venuto. Il problema è che era più di 10 anni fa.

Oggi non è pensabile continuare a imparare il php in questo modo, perché di tempo ne è passato anche troppo.

Ti dico sinceramente che io il codice non l'ho nemmeno letto, mi è bastato vedere "<?" e leggere register_globals.

A questo punto mi pare inutile dare consigli su come risolvere un errore, quando l'intero approccio è sbagliato.

Se guardi bene la mia risposta, non ho "spiattellato" niente, ho detto di cominciare studiando la sintassi.

Se lo si fa seriamente, nessun framework ben documentato è un problema e anzi probabilmente è più facile imparare php in questo modo, piuttosto che con codice scopiazzato da pessimi script del millennio scorso.

risposto 5 anni fa
Massimiliano Arione
X 0 X

Un conto è scopiazzare, un altro è rendersi conto di cosa scrive il codice...

Sarà anche un modo arcaico di programmare in php, ma la logica è funzinante.

Anche se conoscessi tutte le istruzioni a memoria e non sapessi come funziona la programmazione

non combinerei nulla di buono.

Ringrazio Antares che mi ha fatto notare l'errore che proprio non vedevo.

Comunque per essere la prima volta con php... avere fatto uno script funzionante anche

se in modo un pò antiquato che dialoga con un db non penso che sia poi così malaccio.

Ahhh... quasi dimenticavo un altro detto: maestri non nasce nessuno  :bye:

risposto 5 anni fa
Marea
X 0 X

Garak

dico solo cose per fare uno scambio di vedute e per chiudere la discussione prima che dilaghi.

Sarà come dici tu, i tempi sono passati, bisogna passare al nuovo, ma il come resta comunque un tuo punto di vista.

Che ti frega se l'approccio è sbagliato? Funziona? Se vorrà imparare altro di nuovo ci picchierà il naso come hanno fatto tutti. Tu non gli hai detto di studiare la sintassi, gli hai detto di studiare un framework come Symfony2 e Zend. E poi se hai detto che non gli hai letto nemmeno il codice visto che ti sei incriccato sul "<?" come hai fatto a fare una valutazione? (se poi scorri il suo codice nella parte della registrazione ha usato il "<?php ). Queste sono cavolate su cui focalizzarsi, cavilli :)

Inoltre a me personalmente per quello che faccio con php va benissimo il sistema vecchio (semmai c'è ne fosse uno). Come avrai visto io sono iscritto a questo forum da un pò, ma no ho mai frequentato assiduamente perchè il mio lavoro non è questo.

Sono appassionato di informatica e ho fatto solo alcuni semplici lavoretti per lo più per scopi personali, quindi non mi interessa di studiare altro. Non perchè io non sia aperto alla cultura ci mancherebbe, ma solo perchè come ho detto prima questa non è la mia occupazione principale. Quanti ce ne sono cosi, amatori,dilettanti, principianti ?

Quando ti vai a fare un giro in macchina, ti serve di sapere il giusto necessario per poterla guidare e fare una piccola manutenzione, non ti metti a studiare tutta la meccanica o l'impianto elettrico.

Quindi dovresti fare distinzione tra un utente da un'altro.

Inoltre per quello che mi riguarda lo spirito di un newsgroup è quello di aiutare gli altri, se ti irrita che qualcuno non sia arrivato ai tuoi livelli quello è un'altro dei tuoi problemi (sempre da leggere in forma bonaria).

Io direi piuttosto, visto che magari stai qualche gradino al di sopra degli altri, dai una mano no?

Bah con tutta questa nuova scienza in circolazione devo ancora farmi spiegare come risolvere il mio problemino di debug :)

Senza cattiveria mi raccomando :) (specifico perchè non si riesce a dare un tono alle parole) :)

Bye

Paolo

risposto 5 anni fa
antares
X 0 X

Non era mia intenzione portare polemiche sul forum per il codice che stavo buttando giù per fare delle prove...

Io di solito programmo in c++ e vb ogni tanto java... ma con gli script ho sempre fatto ben poco e mi stavo cimentando da oggi a tempo perso.

Speravo di trovare in questo forum persone che potevano spiegare dove sbagliavo e magari darmi dei consigli... ma sembra quasi che il mio intervento abbia dato fastidio a qualcuno.

Per questo ho deciso di non postare più, magari riprenderò dopo aver fatto studi più approfonditi sul "php moderno"

Saluti a tutti ed ancora grazie ad Antares

risposto 5 anni fa
Marea
X 0 X
Speravo di trovare in questo forum persone che potevano spiegare dove sbagliavo e magari darmi dei consigli... ma sembra quasi che il mio intervento abbia dato fastidio a qualcuno.

Era questo che volevo spiegare a Garak.

Ad ogni modo, io non ho intenzione di fare polemica, anzi se per caso ho detto cose in modo da aver urtato Garak, me ne scuso. Il mio intento era solo quello di scambiarsi le idee.

Per quanto riguarda il non postare più Marea, per me sbagli. Un conto è uscirsene belli freschi e pretendere dal forum di farsi scrivere il codice per lanciare lo shuttle, senza conoscere nemmeno una parola di php, un'altra è quella di sforzarsi di capire, studiare la sintassi di php (Garak sarà felice :) ) e postare quando sei in difficoltà.

Visto il tuo intento di non voler postare e studiare un pò di più, credo che tu propenda per la seconda situazione. Ti dirò anche che il metodo migliore per imparare è scriversi i codici, e impazzire a cercare l'errore quando non funziona. (oggi poi internet ti aiuta molto per le ricerche). Usa il debugger cosi vedi passo passo come si comporta il tuo codice.

Quindi secondo me chiedi aiuto, qui ci sono tante persone preparate che ti daranno di sicuro una mano.

Bye

Paolo

risposto 5 anni fa
antares
X 0 X

Lo so che il modo migliore di imparare è smanettare sul codice, e segnarselo... non si sa mai si dimentichi qualche pezzo ^^

Ma sembra che a parte te... vedendo dei comandi un pò buttati così, ma assicuro funzionanti, il loro scopo lo fanno bene, nessuno abbia avuto la voglia di leggere quello che c'era scritto e solo riprendere per il fatto che non mi sono messa a studiarlo su libri.

In questo momento libri di php non ne ho... ed essendomi ventua la curiosità oggi ho buttato giù il codice che nn è sembrato ben accetto ahuhuahua.

Per questo ho deciso di non postare più... sembrava quasi che stessi offendendo qualcuno perchè non sono ancora alla sua altezza in php... ma... sono curiosa di sapere come erano i suoi script dopo poche ore dall'inizio dello studio.

Ancora grazie Antares e vista l'ora buona notte :)

risposto 5 anni fa
Marea
X 0 X

Giusto per dire anche la mia.

Garak e antares: avete ragione entrambi!

Non è più accettabile nel 2011 vedere codice php scritto come se fossimo agli albori di questo linguaggio. Viceversa un utente ha diritto ad avere una risposta precisa alla sua richiesta. Gianni, per questo, vuole modificare il forum in modo che assomigli di più a stackoverflow.com.

Faccio però presente, rafforzando la posizione di Garak, che utilizzare oggetti e framework per creare un qualcosa con il Php è, ormai, più facile, veloce e sicuro rispetto a crearsi un codice "spartano" da se.

Un esempio su tutti:

http://www.phpnews.it/articoli/invio-di-email-usando-zend_mail/

Ciao

risposto 5 anni fa
Mario Santagiuliana
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda