Parcours d'une table sur mysql [Résolu/Fermé]

Signaler
-
 baabs12 -
Bonjour,
J'aimerai savoir comment peut on faire le parcours d'une table sur Mysql sans utiliser la fonction mysql_fetch_array?
Je programme avec PHP.

Merci d'avance

6 réponses

Messages postés
399
Date d'inscription
mardi 9 octobre 2007
Statut
Membre
Dernière intervention
8 novembre 2013
26
Pourquoi ne veux tu pas utiliser MySQL_fetch_array ?
tu as 'MySQL_fetch_object' aussi.
Parce que j'ai une erreur du genre :

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\Program Files\EasyPHP 2.0b1\www\bytesyss\applications\bo\objects\masks\dem_autor.php on line 257

au fait c'est parce que je veux transferer des données d'une table se trouvant dans une base de Sql Server vers une autre table qui est sur Mysql
Messages postés
399
Date d'inscription
mardi 9 octobre 2007
Statut
Membre
Dernière intervention
8 novembre 2013
26 > baabs12
Sur le lien fourni ci-dessous, tu trouveras probablement ta réponse.
Un peu de lecture, il en faut.
Aller bon courage.
Messages postés
1778
Date d'inscription
dimanche 14 octobre 2007
Statut
Contributeur
Dernière intervention
15 octobre 2019
309
Bonjour,

Il y aussi plein d'autres méthodes ==> http://www.manuelphp.com/php/function.mysql-fetch-array.php



Cordialement

Revan
Messages postés
399
Date d'inscription
mardi 9 octobre 2007
Statut
Membre
Dernière intervention
8 novembre 2013
26 > baabs12
Pour faire une boucle ?
Tu utilise 'WHILE'

Tu veux afficher les résultats, Vérifier, comparer ?
>
Messages postés
399
Date d'inscription
mardi 9 octobre 2007
Statut
Membre
Dernière intervention
8 novembre 2013

Je veux en étant sur Mysql me connecter sur une table de Sql server, y récupérer des données et les insérer dans une table qui est sur Mysql.
Ci dessous la fonction que j'ai écrite:
function transfert()
{
$myServer = "JOB";
$myUser = "root";
$myPass = "*****";
$myDB = "pi";

// connexion sur la base promo (sql server)
$dbhandle = mssql_connect($myServer, $myUser, $myPass)
or die("Connexion impossible sur le serveur $myServer");

// selection de la base de données (sql server)
$selected = mssql_select_db($myDB, $dbhandle)
or die("Ouverture impossible de la base $myDB");

echo "Vous etes bien connectes sur la base" . $myDB . " du" . $myServer . ".";

//requête SQL pour extraire le montant sur sql server
$reponse = mssql_query("SELECT * FROM F_DOCENTETE,F_CREGLEMENT WHERE F_DOCENTETE.CT_NumPayeur = F_CREGLEMENT.CT_NumPayeur");

while ($donnees = mssql_fetch_array($reponse) )
{

$db_porteur =& P4A_DB::singleton();//(La table porteur se trouve sur mysql)
$crit_porteur = $db_porteur->queryRow("SELECT * FROM porteur "); // Requête SQL


// On fait une boucle pour lister tout ce que contient la table porteur (Mysql)

while ($donneesporteur = mysql_fetch_array($crit_porteur) )
{
$nb_porteur = $donneesporteur['numero_compte1'];
$val = $donnees['RG_Montant'] ;
$num = $donnees['CG_Num'] ;

if ($nb_porteur = $num)
{
$db_pt1 =& P4A_DB::singleton();
$crit_pt1 = $db_pt1->queryRow("insert into testpromo (field4, field5) values ('$val', '$val')"); //(table testpromo sur Mysql)
}
}




}

// close the connection
mssql_close($dbhandle);




}








Et ma connexion sur Mysql est faite comme suit:

<?php

/**

*/
define("P4A_EXTENDED_ERRORS", true);
define("P4A_DSN", 'mysql://root:*****@localhost:3306/bw');

require_once( dirname(__FILE__) . '/../../p4a.php' );

$app =& p4a::singleton("p4a_base_application");
$app->main();

?>


Messages postés
399
Date d'inscription
mardi 9 octobre 2007
Statut
Membre
Dernière intervention
8 novembre 2013
26 > baabs12
:)

Bah étant donné que tu as l'air plus calé que moi.
je vais attendre les réponses... avec toi.
>
Messages postés
399
Date d'inscription
mardi 9 octobre 2007
Statut
Membre
Dernière intervention
8 novembre 2013

Je ne suis pas du tout plus calé que toi, loin de là d'ailleurs. Je veux juste trouver une solution à mon problème et demande de l'aide au forumiste! Après tout nous somme tous de la mm famille
Messages postés
399
Date d'inscription
mardi 9 octobre 2007
Statut
Membre
Dernière intervention
8 novembre 2013
26 > baabs12
Oui lol.
(c'était pas une réflexion ? ... on est d'accord ?)
Mais c'est vrai que le dév et SQL ça va super loin.
Moi ça m'impressionne.
Messages postés
996
Date d'inscription
vendredi 9 mai 2008
Statut
Contributeur
Dernière intervention
5 novembre 2009
331
Bonjour,

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\Program Files\EasyPHP 2.0b1\www\bytesyss\applications\bo\objects\masks\dem_autor.p­hp on line 257

Si tu as ce message d'erreur, c'est en général que ta requête ne s'est pas bien déroulée. Regarde du côté de mysql_errno() pour savoir ce qui s'est passé.
Une fois que tu auras résolu ce problème, mysql_fetch_array() fonctionnera sans problème.

Bien cordialement,
Messages postés
26
Date d'inscription
mercredi 10 décembre 2008
Statut
Membre
Dernière intervention
2 mai 2010
5
Premierement.... il est préférable d'utiliser mysql_fetch_assoc plutot que mysql_fetch_array...!
Je ne comprend toujours pas pourquoi il y a encore des gens qui utilise mysql_fetch_array, cette fonction crée un tableau deux fois plus gros! Utilisation d'espace inutile!

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\Program Files\EasyPHP 2.0b1\www\bytesyss\applications\bo\objects\masks\dem_autor.p­­hp on line 257

ce message d'erreur est effectivement en rapport avec une mauvaise exécution de ta requête!
mais je voudrais corriger ce que Marco vient de te dire!
Car tu utilises mssql et non mysql et mysql_errno ne te sera donc pas très utile!
Il faut plutot utiliser mssql_get_last_message

exemple
mssql_query("SELECT * FROM table") or die(mssql_get_last_message());

pour t'assurer que ta requete est bonne, je ne sais pas exactement quelle application tu utilises pour ta connexion a la bd -> comme PHPMyAdmin pour MySQL mais il y a habituellement un endroit que tu peux faire une requete directement sur la bd et ca sera plus facile de voir l'erreur!
Messages postés
26
Date d'inscription
mercredi 10 décembre 2008
Statut
Membre
Dernière intervention
2 mai 2010
5
je voulais dire mssql_fetch_assoc plutot que mysql_fetch_assoc et meme chose pour mysql_fetch_array dans le premier paragraphe!
>
Messages postés
996
Date d'inscription
vendredi 9 mai 2008
Statut
Contributeur
Dernière intervention
5 novembre 2009

C'est celle qui me permet de recupérer le resultat de $db_critp

for ($i=1; $i<=$crit_porteur['numero'];$i++)
							{
							
								$crit_porteur1 = $db_porteur1->queryRow("SELECT * FROM porteur WHERE numero = $i");// Requête SQL
								

$nb_porteur = $crit_porteur1['numero_compte1'];// ligne 270

								    $val = $donnees['RG_Montant'] ;
	                   			    $num = $donnees['CG_Num'] ;
								    $date1 = $donnees['RG_Date'];
								 					 
									if ($nb_porteur = $num)
									  {
				   		     			$db_pt1 =& P4A_DB::singleton();
				    					$crit_pt1 = $db_pt1->queryRow("insert into testpromo (field4, field5, field7) values ('$val', '$val','$date1')"); //(table testpromo sur Mysql)
									  }

								   
							}			



Messages postés
996
Date d'inscription
vendredi 9 mai 2008
Statut
Contributeur
Dernière intervention
5 novembre 2009
331 > baabs12
La deuxième méthode que je t'ai donnée ne fonctionne pas? Elle est mieux car elle ne requiert qu'une seule requête :
...
$num_porteur = $db_porteur->queryRow("SELECT numero_compte1 FROM porteur");
//si on peut éviter de trier, autant le faire c'est toujours des ressources de gagnées
				
// On fait une boucle pour lister tout ce que contient la table porteur (Mysql)
for ($i=0; $i<count($num_porteur);$i++) {
	 $nb_porteur = $num_porteur[$i];
...


Cordialement,
>
Messages postés
996
Date d'inscription
vendredi 9 mai 2008
Statut
Contributeur
Dernière intervention
5 novembre 2009

Salut,
sacré journée d'hier!
Bon j'ai testé ta méthode mais elle ne fait rien du tout je pense c'est cette partie du code qui pose problème:
for ($i=1; $i<count($num_porteur);$i++) {
	 $nb_porteur = $num_porteur[$i];


De mon coté je cherche comment faire pour ne pas exécuter la requête si le numero n'existe pas.
>
Messages postés
996
Date d'inscription
vendredi 9 mai 2008
Statut
Contributeur
Dernière intervention
5 novembre 2009

Il y'a également le notice suivant:
Notice: Undefined offset: 1 in C:\Program Files\EasyPHP 2.0b1\www\bytesyss\applications\bo\objects\masks\dem_autor.php on line 274
qui correspond à la partie du code que je t'ai indiqué
j'utilise la methode suivante pour la requete:
$db_porteur =& P4A_DB::singleton();//(La table porteur se trouve sur mysql)
$crit_porteur = $db_porteur->queryRow("SELECT * FROM porteur "); // Requête SQL
echo $crit_porteur;


et le résultat que j'ai est un "array".
Et pour récupérer un champs dans la table je fais:


$nb_porteur = $crit_porteur['numero_compte1'];


ce qui me donne la valeur du champs "numero_compte1" dans la table porteur qui est sur Mysql
Chers tous,
Je voudrai vous dire que mon code marche parfaitement maintenant. Je vous remercie encore une fois de l'aide que vous m'avez apporté et de tous les enseignements fournis pour parfaire ce code. Vive la solidarité!
Je vous poste le code final qui marche actuellement.


functionTransfert()
	{
	
	
		$myServer = "JOB";
		$myUser = "root";
		$myPass = "****";
		$myDB = "pi";

// connexion sur la base promo (sql server)
		$dbhandle = mssql_connect($myServer, $myUser, $myPass)
    		or die("Connexion impossible sur le serveur $myServer");

// selection de la base de données (sql server)
		$selected = mssql_select_db($myDB, $dbhandle)
    		or die("Ouverture impossible de la base  $myDB");

//requête SQL pour extraire le montant		
 		$reponse = mssql_query("SELECT * FROM F_DOCENTETE,F_CREGLEMENT WHERE F_DOCENTETE.CT_NumPayeur = F_CREGLEMENT.CT_NumPayeur");
			
 		while ($donnees = mssql_fetch_array($reponse) )
				{
					$db_porteur =& P4A_DB::singleton();
					$crit_porteur = mysql_query("SELECT * FROM porteur");// Requête SQL pour récupérer les données sur la table porteur
					
					
					
// On fait une boucle pour lister tout ce que contient la table porteur (Mysql)
					while($donneesporteur = mysql_fetch_array($crit_porteur)) // mysql_fetch_array() marche. j'avais oublié de mettre $db_porteur =& P4A_DB::singleton() avant la requete.
					{
						$val = $donnees['RG_Montant'] ; // On met le montant dans $val
	                   	$num = $donnees['CG_Num'] ; //On met le numéro du client dans $num
						$date1 = $donnees['RG_Date']; // On met la date dans $date1
						 					 
						if ($nb_porteur = $num) //Si le numéro du client correspond au numéro du porteur
							{
				   		    	$db_pt1 =& P4A_DB::singleton();
				    			$crit_pt1 = $db_pt1->queryRow("insert into testpromo (field4, field5, field7) values ('$val', '$val','$date1')"); //On insére dans la table transaction les données récupérées dans la base sari
							}
					
					
					}

						
				}

// close the connection
		mssql_close($dbhandle);

	}