• User

    Problema PHP

    Ciao a tutti,
    ho un problemino con il php. Non è il mio lavoro quindi lo "studio" per diletto e smanetto qualche script per applicazioni ad uso personale 🙂

    Il problema è questo....
    avevo uno script per l'inserimento di autoveicoli e motoveicoli usati, tutto ha funzionato alla perfezione fin quando non è stata aggiornata la versione del MYSQL.

    Ora.. dal lato user tutto bene, dal lato admin invece, quando vado nel pannello di controllo che mi dovrebbe listare tutte le schede, ricevo questo errore:

    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/motodb/cpanel.php on line 137

    Copio e incolla dalla linea 132 fino alla 155

    <?
    $link = mysql_connect($dbhost, $dbuser, $dbpass);
    $query = "SELECT ccode, viewed, stock, vin, year, make, model, condition, mileage, price FROM $dbvin ORDER BY $sort $order";
    $result = mysql_db_query($dbname, $query, $link);
    $n = 1;
    while($data = mysql_fetch_array($result)) {
    	if(!($n % 2)) { $bg = "class='fill_light'"; } else { $bg = ''; }
    	echo "
    	<tr $bg>
    		<td class='text'>$data[stock]</td>
    		<td class='text' align='center'>$data[year]</td>
    		<td class='text'>$data[make]</td>
    		<td class='text'>$data[model]</td>
    		<td class='text' align='center'>$data[condition]</td>
    		<!--<td class='text' align='center'>$data[mileage]</td>-->
    		<td class='text' align='center'>$data[price]</td>
    		<td class='text' align='center'>$data[viewed]</td>
    		<td class='text' align='center'><a class='link' href='summary.php?ccode=$data[ccode]'>Options</a></td>
    	</tr>
    	";
    	$n++;
    }
    mysql_close($link);
    ?>
    

    Ho noato che mettendo gli apici a tutti i valori di questa riga

    $query = "SELECT ccode, viewed, stock, vin, year, make, model, condition, mileage, price FROM $dbvin ORDER BY $sort $order";

    l'errore sparisce ma.. non viene listata alcuna scheda, come se il DB fosse vuoto.
    L'errore è nella query suppongo.. ma dove?????

    Grazie a chi può darmi qualche dritta!
    Andrea


  • ModSenior

    $result = mysql_db_query($dbname, $query, $link) or die(mysql_error());

    e vedi che errore dice


  • User

    @Thedarkita said:

    $result = mysql_db_query($dbname, $query, $link) or die(mysql_error());

    e vedi che errore dice

    Grazie della dritta!!! 🙂
    poi spulciando in rete ero arrivato anche io lì 🙂

    Dice:

    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'condition, mileage, price FROM vehicle_inventory ORDER BY updated DESC' at line 1

    Dice alla riga 1... ma che riga 1?
    la riga uno è ancora un commento alla pagina php!!!

    Anzi.. un tutta quella pagina PHP non c'è nulla così


  • User Attivo

    Linea 1 della query! 😄

    1. controlla che la ariabili scritte nella query non siano vuote
    2. tra i parametri di order by metti la virgola

  • User

    @andreajazz said:

    Linea 1 della query! 😄

    Ve l'ho detto che non ne capivo nulla!!! 😄 😄
    Adesso vedo un po'...grazie!


  • User

    Ecco risolto.. era tutta una questione di apici!
    grrrr fin lì c'ero anche io.. solo che sistemato quelli sbagliati! hahaah 😞
    Grazie cmq a tutti... ora mi studio gli altri bachi che ci sono !
    Grazie!
    Andrea


  • User Attivo

    Scusa,dove hai messo gli apici?
    Nel mio nuovo script(scritto a classi e funzioni) ho lo stesso problema e non riesco a vnirne a capo...
    mi da il tuo stesso errore!


  • ModSenior

    @ilnetsurfer said:

    Scusa,dove hai messo gli apici?
    Nel mio nuovo script(scritto a classi e funzioni) ho lo stesso problema e non riesco a vnirne a capo...
    mi da il tuo stesso errore!
    Attenti alle parole riservate...


  • User

    @ilnetsurfer said:

    Scusa,dove hai messo gli apici?
    Nel mio nuovo script(scritto a classi e funzioni) ho lo stesso problema e non riesco a vnirne a capo...
    mi da il tuo stesso errore!

    Eccomi qui
    La riga che era:

    $query = "SELECT ccode, viewed, stock, vin, year, make, model, condition, mileage, price FROM $dbvin ORDER BY $sort $order";

    diventa:

    $query = "SELECT ccode, viewed, stock, vin, year, make, model, 'condition', 'mileage', 'price' FROM $dbvin ORDER BY $sort $order";

    ma non credo che sia una soluzione universale per tutti gli script! 😄


  • User

    purtroppo ho un nuovo problema sempre nello stesso script ma in altra pagina.

    Il problema compare quando voglio editare una scheda già inserita, la seleziono, clicco su edita e arrivo alla pagina edit.php dove posso vedere i dati inseriti e modificarli a mio piacimento. Una volta cambiato qualche dato e premuto l'ok....

    per un attimo compare questo errore, poi ritorna come se nulla fosse alla vista della scheda (non all'edit della stessa) ma non è stata modificata!

    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /edit.php on line 23

    O messo il solito "or die(mysql_error());" ma non cambia nulla e a video non mostra nulla.
    Ho provato la query da SQL in phpmyadmin e mi dà il seguente errore:

    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '$link = mysql_connect($dbhost, $dbuser, $dbpass)' at line 1

    E' un errore si sintassi come il precedente... ma non capisco dove 😞
    Premetto che prima che fosse cambiata la versione mysq e php, sia questo che il precedente errore.. non c'erano
    Grazie a tutti ancora
    Andrea


  • User

    Dovresti postare il codice altrimenti sarà difficile aiutarti.


  • User

    @satifal said:

    Dovresti postare il codice altrimenti sarà difficile aiutarti.

    Ops..è vero!!! 🙂

             $link = mysql_connect($dbhost, $dbuser, $dbpass);
    $query = "SELECT * FROM $dbvin WHERE ccode='$ccode'";
    $result = mysql_db_query($dbname, $query, $link);
    $data = mysql_fetch_array($result);
    mysql_close($link);
    
    // strip any added slashes
    foreach($data as $key => $item) {
    $data[$key] = stripslashes($item);
    

    Grazie!


  • User

    Hai detto che l'errore si verifica dopo la submit della form di modifica. Il codice che hai postato credo si riferisca al recupero dei dati delle schede da visualizzare altrimenti mi aspetterei di vedere qualche istruzione di UPDATE nella query SQL.


  • User

    Allora forse è qui che fa l'update

    require 'secure.php';
    require 'global.php';
    require 'config/config.php';

    // process and store data
    if($edit) {
    // check to see if the stock number entered already exists in db
    $link = mysql_connect($dbhost, $dbuser, $dbpass);

    if(mysql_num_rows($result)) {
    	echo "<script language='JavaScript'> alert('The stock number you entered already exists in the database.'); </script>";
    	} else {
    	// make input query friendly
    	foreach($_POST as $key => $value) {
    		$_POST[$key] = addslashes($value);
    	}
    	// add listing to database
    	$time = time();
    	$link = mysql_connect($dbhost, $dbuser, $dbpass);
    	$query = "UPDATE $dbvin SET 
    	updated='$time',
    	stock='$_POST[stock]',
    	vin='$_POST[vin]',
    	year='$_POST[year]',
    	make='$_POST[make]',
    	model='$_POST[model]',
    	condition='$_POST[condition]',
    	category='$_POST[category]',
    	mileage='$_POST[mileage]',
    	price='$_POST[price]',
    	exterior='$_POST[exterior]',
    	interior='$_POST[interior]',
    	body='$_POST[body]',
    	doors='$_POST[doors]',
    	engine='$_POST[engine]',
    	fuel='$_POST[fuel]',
    	trans='$_POST[trans]',
    	stereo='$_POST[stereo]',
    	comments='$_POST[comments]'
    	WHERE ccode='$ccode'";
    	mysql_db_query($dbname, $query, $link);
    
    	mysql_close($link);
    
    	echo "<script language='JavaScript'> window.location='summary.php?ccode=$ccode'; </script>";
    	echo "You updated a vehicle";
    	exit();
    }
    

    } else {
    $link = mysql_connect($dbhost, $dbuser, $dbpass);
    $query = "SELECT * FROM $dbvin WHERE ccode='$ccode'";
    $result = mysql_db_query($dbname, $query, $link);
    $data = mysql_fetch_array($result);
    mysql_close($link);

    // strip any added slashes
    foreach($data as $key => $item) {
    	$data[$key] = stripslashes($item);
    }
    

    }
    ?>