Probleme SQL

Résolu/Fermé
powpowland Messages postés 395 Date d'inscription lundi 3 mars 2008 Statut Membre Dernière intervention 2 mars 2022 - 18 févr. 2009 à 16:32
powpowland Messages postés 395 Date d'inscription lundi 3 mars 2008 Statut Membre Dernière intervention 2 mars 2022 - 19 févr. 2009 à 17:00
Bonjour,
j'ai mis en place un code en php et sql.

il marche très bien sur EasyPHP mais il ne marche plus une fois sur mon hébergeur...

comment cela se fait ??

le code erreur est celui-ci "Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in adresse/prochain.php on line 20"

ce qui correspond à "while ($rpro = mysql_fetch_array($qpro)){"

voici le code :

<?php
  $mabasededonnee = "calendrier";
   
  $connection = mysql_connect("localhost","root",""); 
  // test la connection
  if ( ! $connection ) 
  die ("connection impossible"); 
  // Connecte la base
  mysql_select_db($mabasededonnee) or die ("pas de connection");
  
	$datejourpro = date("Y-m-d");
	list($yearjourpro, $monthjourpro, $dayjourpro) = explode("-", $datejourpro);

	$datejourpro = $yearjourpro.$monthjourpro.$dayjourpro;
  
  $qpro = mysql_query("SELECT name,event_date, location FROM ltw_eventsv4 WHERE event_date = (SELECT event_date FROM ltw_eventsv4 WHERE event_date >= CURRENT_DATE() LIMIT 1) ORDER BY event_date");
  
  
  while ($rpro = mysql_fetch_array($qpro)){
  
  $namepro = $rpro['name'];
  $datepro = $rpro['event_date'];
  $locationpro = $rpro['location'];

  list($yearpro, $monthpro, $daypro) = explode("-", $datepro);
  $date2pro = $yearpro.$monthpro.$daypro;

switch($monthpro)
  {
case 01:
    $monthlettre = 'janvier';
	break;
case 02:
    $monthlettre = 'février';
	break;
case 03:
    $monthlettre = 'mars';
	break;
case 04:
    $monthlettre = 'avril';
	break;
case 05:
    $monthlettre = 'mai';
	break;
case 06:
    $monthlettre = 'juin';
	break;
case 07:
    $monthlettre = 'juillet';
	break;
case 08:
    $monthlettre = 'août';
	break;
case 09:
    $monthlettre = 'septembre';
	break;
case 10:
    $monthlettre = 'octobre';
	break;
case 11:
    $monthlettre = 'novembre';
	break;
case 12:
    $monthlettre = 'décembre';
	break;
  }
  
  echo 'Le prochain évènement enregistré est <b>'.$namepro.' le '.$daypro.' '.$monthlettre.' '.$yearpro.' - '.$locationpro.'</b><a href="monflux.xml" target="_blank" id="feed"><img src="img/feed.png"></a></br>';

  }
  
?>


merci d'avanxe
A voir également:

3 réponses

Archeus01 Messages postés 1567 Date d'inscription mercredi 3 octobre 2007 Statut Membre Dernière intervention 9 juin 2022 447
18 févr. 2009 à 16:43
moi c'est localhost qui me choque.

Pour savoir si c'est ta requète :
extrait de php.net

$result = mysql_query('SELECT * WHERE 1=1');
if (!$result) {
die('Requête invalide : ' . mysql_error());
}

donc pour toi :

if (!$qpro) {
die('Requête invalide : ' . mysql_error());
}
while ($rpro = mysql_fetch_array($qpro)){
0
powpowland Messages postés 395 Date d'inscription lundi 3 mars 2008 Statut Membre Dernière intervention 2 mars 2022 20
18 févr. 2009 à 17:12
tu sais si tu veux je te donne l'adresse de ma BD et mes mots de passes...

soyons sérieux... ça m'aide pas beaucoup...

ça me marque ça si je suis ton conseil : "Requête invalide : 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 'SELECT event_date FROM ltw_eventsv4 WHERE event_date >= TODAY()"


et je reprécise, ça marche très bien sur EasyPHP...

c'est quoi le problème!!!!!!!!!!
0
Archeus01 Messages postés 1567 Date d'inscription mercredi 3 octobre 2007 Statut Membre Dernière intervention 9 juin 2022 447
19 févr. 2009 à 11:32
Si, c'est utile. Il faut localiser l'erreur avant de pouvoir la corriger...
Tu balances une page de code alors que seul ces deux lignes plantent :

mysql_query("SELECT name,event_date, location FROM ltw_eventsv4 WHERE event_date = (SELECT event_date FROM ltw_eventsv4 WHERE event_date >= CURRENT_DATE() LIMIT 1) ORDER BY event_date");

1) je conseille de faire un truc du genre :

$query = "SELECT name,event_date, location FROM ltw_eventsv4 WHERE event_date = (SELECT event_date FROM ltw_eventsv4 WHERE event_date >= CURRENT_DATE() LIMIT 1) ORDER BY event_date";
mysql_query($query);

2) je conseille de faire un echo $query sur easy php et sur ton fournisseur pour voir s'il y a une différence.Normalement non.

3)Dans ce cas, ça vient pas du php mais du serveur SQL. Pour t'en convaincre, tu n'as qu'a tester directement via l'interface de gestion de tes serveurs sql ta requête récupérer grâce au echo .

En effet, la fonction today et current_date en SQL ne sont pas acceptées par tous les serveur sql (cf https://sqlpro.developpez.com/cours/sqlaz/fonctions/ Il faudrait la remplacer par du code php...

Donc il te faudrait supprimer le today de ta requête sql par autre chose si ma théorie est juste. Et les tests conseillés diront si ma théorie est juste ou pas.
0
powpowland Messages postés 395 Date d'inscription lundi 3 mars 2008 Statut Membre Dernière intervention 2 mars 2022 20
19 févr. 2009 à 17:00
c'est bon h'ai trouvé un truc...

on remplace l'ancienne requete par celle-ci...

SELECT name,event_date, location FROM ltw_eventsv4 WHERE event_date >= \"$currentdate\" LIMIT 0,1

c'est soit le ORDER BY et la syntaxe de LIMIT, il manqué une valeur...

merci à toi d'avoir essayé de m'aider...
0